GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

So konfigurieren Sie entfernte und sichere Verbindungen für MySQL unter Ubuntu 16.04

In diesem Artikel zeigen wir Ihnen, wie Sie entfernte und sichere Verbindungen für MySQL auf Ubuntu 16.04 VPS konfigurieren. Wenn Sie eine unverschlüsselte Verbindung verwenden, um eine Verbindung zu Ihrem Remote-MariaDB/MySQL-Server herzustellen, kann jeder mit Zugriff auf das Netzwerk die Daten überwachen und analysieren, die zwischen dem Client und dem Server gesendet oder empfangen werden. Diese Anleitung sollte auch auf anderen Linux VPS-Systemen funktionieren, wurde aber für einen Ubuntu 16.04 VPS getestet und geschrieben.

1. Melden Sie sich über SSH bei Ihrem VPS an

ssh my_sudo_user@my_server

Die Schritte in diesem Tutorial gehen davon aus, dass Sie MySQL 5.7 mit der Standardkonfiguration installiert haben.

SSL-Verbindungen aktivieren:

2. Erstellen Sie eine neue lokale Zertifizierungsstelle

Wir verwenden die lokale Zertifizierungsstelle als selbstsigniertes Stammzertifikat, mit dem wir sowohl Server- als auch Clientzertifikate signieren. Um eine neue lokale Zertifizierungsstellendatei zu erstellen, führen Sie die folgenden Befehle aus:

sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048
sudo chmod 600 /etc/mysql/ca-key.pem
sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/
sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650
sudo echo 01 > /etc/mysql/cacert.srl

3. Serverzertifikat und Schlüssel generieren

Um ein Serverzertifikat und einen Schlüssel zu generieren, führen Sie die folgenden Befehle aus:

sudo openssl genrsa -out /etc/mysql/server-key.pem 2048
sudo chmod 600 /etc/mysql/server-key.pem
sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

4. Zertifikat und Schlüssel des Clients generieren

Als nächstes müssen wir das Client-Zertifikat generieren. Führen Sie die folgenden Befehle aus, um ein Clientzertifikat und einen Schlüssel zu generieren:

sudo openssl genrsa -out /etc/mysql/client-key.pem 2048
sudo chmod 600 /etc/mysql/client-key.pem
sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

Wenn Sie ein von einer Zertifizierungsstelle signiertes SSL-Zertifikat haben möchten, können Sie hier ein vertrauenswürdiges SSL-Zertifikat erwerben.

5. SSL-Verbindungen für MySQL-Server aktivieren

Öffnen Sie die MySQL-Konfigurationsdatei mit Ihrem Texteditor:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

und kommentieren Sie die folgenden Zeilen aus:

ssl-ca=/etc/mysql/cacert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Speichern Sie die Datei und starten Sie den MySQL-Dienst neu:

sudo systemctl restart mysql 

Um zu überprüfen, ob SSL aktiviert ist, melden Sie sich beim MySQL-Server an

mysql -uroot -p

und führen Sie den folgenden Befehl aus:

mysql> show variables LIKE '%ssl%';

Die Ausgabe sollte der folgenden ähneln:

+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| ssl_ca        | /etc/mysql/cacert.pem      |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_crl       |                            |
| ssl_crlpath   |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+
9 rows in set (0.15 sec)

6. Remote-Verbindungen über SSL aktivieren

Standardmäßig lauscht MySQL nur auf Verbindungen auf localhost. Um Remote-Verbindungen zu ermöglichen, müssen Sie MySQL auf Ihrem Server neu konfigurieren, um auf allen Schnittstellen zu lauschen. Öffnen Sie dazu die MySQL-Konfigurationsdatei:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

und ändern

bind-address            = 127.0.0.1

zu

bind-address            = 0.0.0.0

Damit die Änderungen wirksam werden, starten Sie den MySQL-Server mit folgendem Befehl neu:

sudo systemctl restart mysql 

Stellen Sie sicher, dass Ihr MySQL-Server auf allen Schnittstellen lauscht:

sudo netstat -anp | grep 3306

die Ausgabe sollte der folgenden ähneln:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      938/mysqld

Damit sich Ihr MySQL-Client mit dem MySQL-Server verbinden kann, müssen Sie dem Datenbankbenutzer Zugriff auf die Datenbank auf dem Remote-Server gewähren.

Zum Beispiel, wenn Sie dem dbuser Zugriff gewähren möchten user zum database_name Datenbank und um SSL zu erzwingen, melden Sie sich als root bei der MySQL-Shell an und führen Sie den folgenden Befehl aus:

GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;

wobei 192.168.1.10 ist die IP-Adresse Ihres MySQL-Client-Rechners.

Als nächstes müssen Sie Ihren MySQL-Client so konfigurieren, dass er das zuvor generierte SSL-Zertifikat verwendet. Kopieren Sie die folgenden Dateien von Ihrem MySQL-Server auf Ihren MySQL-Client-Rechner:

/etc/mysql/cacert.pem
/etc/mysql/client-cert.pem
/etc/mysql/client-key.pem

7. MySQL-Client konfigurieren

Öffnen Sie Ihre MySQL-Client-Konfiguration und fügen Sie die folgenden Zeilen hinzu:

[client]
ssl-ca=/etc/mysql/cacert.pem
ssl-cert=/etc/mysql/client-cert.pem
ssl-key=/etc/mysql/client-key.pem

8. Testen Sie Ihre Verbindung

Sie können jetzt Ihre Verbindung vom Client-Rechner zum MySQL-Datenbankserver testen:

mysql -udbuser -pdbuserpassword -h 192.168.1.5

wobei 192.168.1.5 ist die IP-Adresse Ihres MySQL-Datenbankservers.

Das ist es. Sie haben erfolgreich entfernte und sichere Verbindungen für MySQL auf Ihrem Ubuntu 16.04 VPS konfiguriert. Weitere Informationen zu sicheren MySQL-Verbindungen finden Sie in der offiziellen MySQL-Dokumentation.

Natürlich müssen Sie keine sicheren Remote-Verbindungen für MySQL unter Ubuntu 16.04 konfigurieren, wenn Sie einen unserer Ubuntu VPS-Hosting-Services verwenden. In diesem Fall können Sie einfach unsere erfahrenen Linux-Administratoren bitten, sichere Remote-Verbindungen für MySQL zu konfigurieren Ubuntu 16.04 für Sie. Sie sind rund um die Uhr erreichbar und kümmern sich umgehend um Ihr Anliegen.

PS . Wenn Ihnen dieser Beitrag zur Konfiguration sicherer Remote-Verbindungen für MySQL unter Ubuntu 16.04 gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen auf der linken Seite oder hinterlassen Sie einfach unten eine Antwort. Danke.


Panels
  1. So installieren und konfigurieren Sie SuiteCRM mit OPcache auf einem Ubuntu 14.04 VPS

  2. So installieren und konfigurieren Sie Tinyproxy unter Ubuntu 14.04

  3. So installieren und konfigurieren Sie OpenSSH unter Ubuntu 16.04

  4. So installieren Sie WordPress unter Ubuntu 18.04 und konfigurieren es für die Verwendung einer Remote-Datenbank

  5. So installieren und sichern Sie Redis unter Ubuntu 20.04

So installieren und sichern Sie phpMyAdmin unter Ubuntu

So installieren und konfigurieren Sie Zabbix unter Ubuntu 18.04

So aktivieren Sie SSL und Remoteverbindungen für MySQL unter CentOS 7

So installieren und sichern Sie phpMyAdmin unter Ubuntu 18.04 LTS

So installieren und konfigurieren Sie MySQL in Ubuntu 20.04 LTS

So installieren und konfigurieren Sie MySQL unter Ubuntu 18.04