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

Aktivieren Sie SSL und Remoteverbindungen für MySQL

Hinweis :Dieser Artikel geht davon aus, dass Sie MySQL® auf Ihrem Server installiert und konfiguriert haben.

SSL für MySQL aktivieren

Bevor Sie Ihr SSL-Zertifikat in Ihrer MySQL-Datenbank installieren, sichern und entfernen Sie die Standardzertifikatsdateien. Sie können für diesen Schritt einen eigenen Verzeichnisnamen wählen. Dieses Beispiel verwendet die mysql-backup-certs Verzeichnis. Wechseln Sie zum Ausführen der folgenden Schritte zum Root-Benutzer.

  1. Erstellen Sie ein neues Backup-Verzeichnis:

    mkdir -p ~/mysql-backup-certs/
    
  2. Gehen Sie zu /var/lib/mysql Verzeichnis und verschieben Sie jedes Standardzertifikat in Ihr neu erstelltes Backup-Verzeichnis:

    cd /var/lib/mysql
    mv ca.pem ca-key.pem ~/mysql-backup-certs/
    mv server-key.pem server-cert.pem ~/mysql-backup-certs/
    mv client-key.pem client-cert.pem ~/mysql-backup-certs/
    mv private_key.pem public_key.pem ~/mysql-backup-certs/
    
  3. Starten Sie MySQL neu, indem Sie einen der folgenden Befehle ausführen:

    service mysqld restart
    

    oder

    systemctl restart mysqld
    
  4. Verwenden Sie einen der folgenden Befehle, um mysqld zu überprüfen Zustand:

    service mysqld status
    

    oder

    systemctl status mysqld
    
  5. Überprüfen Sie den SSL-Status innerhalb der MySQL-Shell. Melden Sie sich dazu als Root-Benutzer bei MySQL an:

    mysql -u root -p
    (Enter MySQL root password)
    
  6. Führen Sie die folgende Abfrage aus, um den SSL-Status in MySQL zu überprüfen:

    SHOW GLOBAL VARIABLES LIKE '%ssl%';
    STATUS;
    

    Hinweis :Sie müssen keine Großbuchstaben verwenden. Das Beispiel verwendet sie, um die Befehlssyntax von dem zu unterscheiden, was Sie abfragen.

    Im vorherigen Befehl möchten Sie den SSL-Status als deaktiviert sehen , und der Root-Benutzer wird ohne SSL verbunden.

  7. Um die SSL-Verbindung mit unserem eigenen Zertifikat zu aktivieren, bearbeiten Sie die my.cnf Datei führen Sie einen der folgenden Befehle aus:

    vim /etc/my.cnf
    

    oder

    nano /etc/my.cnf
    
  8. Finden Sie [mysqld] Abschnitt und fügen Sie die folgenden Konfigurationseinstellungen hinzu:

    # You will use your own SSL certificates directory for these. The following are examples only.
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/server-cert.pem
    ssl-key=/etc/pki/tls/private/server-key.pem
    
  9. Speichern und beenden Sie die Datei. Starten Sie dann MySQL neu, indem Sie einen der folgenden Befehle ausführen:

    service mysqld restart
    

    oder

    systemctl restart mysqld
    
  10. Melden Sie sich nach dem Sichern von MySQL wieder bei der MySQL-Shell an:

    mysql -u root -p
    (Enter MySQL root password)
    
  11. Führen Sie die SSL-Abfrage erneut aus:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    
  12. Wenn der SSL-Abschnittswert yes anzeigt , ist SSL für MySQL aktiviert. Sie sehen jedoch immer noch, dass der Root-Benutzer nicht über SSL verbunden ist. Das ist normal. Wenn Sie dies ändern möchten, können Sie alle localhost-Benutzerverbindungen zwingen, SSL zu verwenden. Sie müssen die my.cnf bearbeiten Datei erneut, indem Sie einen der folgenden Befehle ausführen:

    vim /etc/my.cnf
    

    oder

    nano /etc/my.cnf
    
  13. Geben Sie am Ende folgende Konfiguration ein:

    [client]
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/client-cert.pem
    ssl-key=/etc/pki/tls/private/client-key.pem
    
  14. Starten Sie MySQL neu. Nachdem MySQL wiederhergestellt ist, melden Sie sich erneut bei der MySQL-Shell an:

    mysql -u root -p
    (Enter MySQL root password)
    
  15. Führen Sie die folgende Abfrage erneut aus:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    

Wenn Sie nur SSL-Verbindungen von localhost-Verbindungen aktivieren möchten, sind Sie fertig. Wenn Sie jedoch auch Remotelogins für MySQL aktivieren möchten, lesen Sie weiter.

Remote-Verbindungen für MySQL aktivieren

Die folgenden Anweisungen aktivieren Remoteverbindungen für MySQL. Außerdem benötigen diese Remote-Benutzer Zertifikatsdateien, die von Ihrer Zertifizierungsstelle (CA) signiert wurden, um eine Verbindung herzustellen.

Dieses Beispiel bezeichnet (durch Verwendung von drei Sternchen:*** ) die Einstellung zum Erzwingen der CA-Signatur, wenn Sie Remote-Verbindungen ohne die CA zulassen möchten.

  1. Verwenden Sie Ihren bevorzugten Befehlszeilen-Texteditor, um /etc/my.cnf zu bearbeiten Datei erneut:

    vim /etc/my.cnf
    

    oder

    nano /etc/my.cnf
    
  2. Fügen Sie Folgendes am Ende von [mysqld] ein Abschnitt:

    bind-address = *
    require_secure_transport = ON 		***
    
  3. Speichern und beenden Sie die Datei mit :wq .

  4. Starten Sie MySQL neu. Bestätigen Sie, dass MySQL wieder läuft. Sie müssen sich erneut bei der MySQL-Shell anmelden.

  5. Nachdem Sie sich angemeldet haben, erstellen Sie den Benutzer, indem Sie einen der folgenden Befehle ausführen:

    CREATE USER 'example'@'%' IDENTIFIED BY 'password';
    

    oder

    CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; 	***
    
  6. Nachdem Sie diesem Benutzer die Berechtigungen für die Datenbanken erteilt haben, für die er Berechtigungen haben soll, leeren Sie die Berechtigungen, um die MySQL-Berechtigungen innerhalb der Shell zu aktualisieren:

    flush privileges;
    

Sie haben vielleicht bemerkt, dass der % befindet sich hinter dem @ Symbol im vorhergehenden create user Befehl bezeichnet den Benutzer eigentlich als entfernten Benutzer.

Wenn Sie einen Benutzer haben, der nur von einer statischen IP-Adresse auf MySQL zugreift, können Sie als Bonus diese IP-Adresse anstelle von % eingeben um diesem Benutzer den Zugriff auf MySQL von seiner spezifischen IP-Adresse aus zu ermöglichen. Beachten Sie jedoch, dass der Benutzer nur von dieser IP-Adresse aus auf die Datenbank zugreifen kann. Wenn sich ihre IP-Adresse ändert, haben sie keinen Zugriff mehr. Aus diesem Grund verwenden die meisten Administratoren die allgemeine Remote-Einstellung von % stattdessen.

Sie haben jetzt SSL-Verbindungen sowie den Fernzugriff auf Ihre MySQL-Datenbank aktiviert.


Linux
  1. Remote Desktop für Mac und Tastenkombinationen

  2. Whitelist eine IP in CSF für entfernte MySQL-Verbindungen

  3. OpenVPN-Setup-Skript für Debian und Ubuntu

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

  5. So erstellen Sie ein PEM für Ihr vorhandenes SSL

So lassen Sie Remote-Verbindungen zu MySQL zu

So fügen Sie entfernte Linux- und Windows-Hosts zu Icinga 2 für die Überwachung hinzu

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

Überwachen Sie MySQL-Verbindungen und Abfragen mit mytop

So lassen Sie Remote-Verbindungen zu MySQL zu

So aktivieren Sie das langsame Abfrageprotokoll für MySQL