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.