Wie man phpMyAdmin sicher installiert
phpMyAdmin ist ein großartiges Tool zur Verwaltung einer MySQL-Datenbank, aber den Zugang zu Ihrer Datenbank über eine Webschnittstelle zu ermöglichen, ist ein erhebliches Sicherheitsproblem. Hier sind einige Möglichkeiten, um die Risiken, die mit der Verwendung von phpMyAdmin verbunden sind, zu mindern.
Warum ist phpMyAdmin ein Sicherheitsproblem?
Normalerweise hätten Sie eine Datenbank, die auf Ihrem Server läuft und nur Verbindungen von
localhostoder vielleicht von einem anderen vertrauenswürdigen Server. Wenn Sie eine Anwendung hätten, die ebenfalls auf diesem Server läuft, würde sie direkt kommunizieren. Es gibt keine Möglichkeit für einen Angreifer, Zugriff zu erhalten, außer den gesamten Server zu knacken.
phpMyAdmin umgeht dies, um Ihnen eine Weboberfläche zur Verwaltung Ihrer Datenbank bereitzustellen. Es ist ein sehr nützliches Tool, aber es ist eine Katastrophe für die Sicherheit. phpMyAdmin hat vollständigen uneingeschränkten Zugriff auf Ihre Datenbank, da es dazu gedacht ist, den direkten Zugriff über die Kommandozeile zu ersetzen. Wenn ein Angreifer Zugriff auf das Webpanel erhält, hat er Zugang zu allem. Und phpMyAdmin ist normalerweise nur mit einem einfachen Passwort gesichert.
Installiere phpMyAdmin und sichere MySQL
phpMyAdmin läuft auf dem LAMP-Stack (Linux, Apache, MySQL, PHP). Bevor Sie überhaupt mit der Installation von phpMyAdmin beginnen, sollte Ihre MySQL-Instanz gesichert sein. MySQL bietet ein nützliches Hilfsprogramm für einige grundlegende Sicherheitsaufgaben an:
sudo mysql_secure_installationDies wird Sie durch die Änderung des Root-Passworts, das Deaktivieren von Remote-Anmeldungen und das Entfernen der Testdatenbank führen.
Danach kannst du phpMyAdmin wie gewohnt installieren. Während der Installation wirst du nach einem Passwort für den Admin-Benutzer der Datenbank gefragt (das du während mysql_secure_installation festgelegt haben solltest) und einem neuen Passwort, um phpMyAdmin abzusichern. Achte darauf, dass dieses Passwort lang und sicher ist, da es der letzte Verteidigungspunkt ist, bevor Angreifer Zugriff erhalten könnten.
Idealerweise sollte kein Angreifer überhaupt die Möglichkeit haben, Ihr Passwort zu erraten, daher sollten Sie phpMyAdmin hinter etwas anderem platzieren, um es weiter abzusichern.
Option 1: Apache sperren und SSH-Portweiterleitung verwenden
Dies ist die sicherste Option, aber sie ist wirklich nur für den Zugriff durch einen einzelnen Benutzer geeignet, insbesondere für einzelne Benutzer, die vollen administrativen Zugriff auf den gesamten Server haben, da sie erfordert, dass Sie über SSH verbinden.
SSH-Portweiterleitung ist eine Methode, um lokale Ports an ein entferntes System weiterzuleiten. Zum Beispiel würden Sie Apache auf Ihrem Server laufen haben, der auf Port 80 hört. Wenn Sie diesen Port tunneln, könnten Sie darauf zugreifen, indem Sie zu gehen:
https://localhost:80/...in jedem Webbrowser. In gewisser Weise ist es fast so, als würde Apache auf Ihrem System laufen. Aber Port 80 muss auf Ihrem Server nicht geöffnet sein; der gesamte Datenverkehr wird über den Standardport 22 geleitet, der für SSH verwendet wird. Sie müssen sicherstellen, dass SSH mit SSH-Schlüsseln abgesichert ist und idealerweise nicht auf dem Standardport läuft, da diese Methode nur so sicher ist, wie Ihre SSH-Verbindung.
Um dies zu tun, müssen Sie Apache an localhost binden und sicherstellen, dass es nicht für das Internet geöffnet ist. Öffnen Sie /etc/apache2/ports.conf und ändern Sie die drei Listen-Statements, sodass sie nur auf localhost (auch bekannt als 127.0.0.1) hören:
Listen 127.0.0.1:80
<IfModule ssl_module>
Listen 127.0.0.1:443
</IfModule>
<IfModule mod_gnutls>
Listen 127.0.0.1:443
</IfModule>
Starte Apache mit:
sudo service apache2 restartUnd phpMyAdmin sollte nicht zugänglich sein. Das ist zu erwarten. Sobald Apache konfiguriert ist, können Sie Port 80 mit folgendem Befehl tunneln:
ssh -L 80:localhost:80 user@serverDann können Sie phpMyAdmin von localhost:80 in jedem Webbrowser aufrufen. In der Zwischenzeit kann Ihr Server mit einer strengen Firewall konfiguriert werden, die alles außer SSH verbietet.
Wenn ssh sich nicht mit Port 80 verbinden kann, versuchen Sie, den ersten Port auf eine andere Nummer zu ändern und von dort aus über localhost darauf zuzugreifen. Es wird weiterhin zu Port 80 auf der entfernten Maschine tunneln. Diese Verbindung bleibt bestehen, bis Sie ssh verlassen. Wenn Sie es im Hintergrund ausführen möchten, verwenden Sie das -f Flag.
Wenn Sie möchten, dass phpMyAdmin nur auf localhost hört, können Sie stattdessen /etc/apache2/conf-enabled/phpmyadmin.conf bearbeiten und die folgenden Zeilen zum Directory-Block hinzufügen:
Order deny,allow
Deny from all
Allow from 127.0.0.1
Dies wird allen Zugriff auf die phpMyAdmin-Installation verweigern, außer localhost, obwohl Sie weiterhin Port 80 in Ihrer Firewall geöffnet haben müssen, um regulären Verkehr zu ermöglichen.
Option 2: Apache sperren und ein VPN verwenden
Wenn Sie mehreren Personen Zugriff gewähren möchten, ohne SSH-Zugriff zu gewähren, können Sie Apache so einrichten, dass es auf der privaten IP Ihres Geräts lauscht und nur Verbindungen aus derselben Cloud akzeptiert. Dies funktioniert besonders gut mit Diensten wie AWS VPC, bei denen jeder Server, den Sie starten, in einem virtuellen Netzwerk erstellt wird.
Um Ihre private IP-Adresse zu finden, können Sie ifconfig ausführen und nach der inet Adresse auf Ihrem primären Netzwerkadapter suchen:
Diese Adresse ist auch von der AWS EC2-Konsole aus sichtbar. Sobald Sie die Adresse kopiert haben, öffnen Sie /etc/apache2/ports.conf und bearbeiten Sie die drei Listen-Direktiven, um auf die private IP zu hören:
Listen 172.31.87.118:8
<IfModule ssl_module>
Listen 172.31.87.118:443
</IfModule>
<IfModule mod_gnutls>
Listen 172.31.87.118:443
</IfModule>
Alternativ, wenn Sie phpMyAdmin nur sichern möchten, können Sie /etc/apache2/conf-enabled/phpmyadmin.conf bearbeiten und nur von der privaten IP zulassen:
Order deny,allow
Deny from all
Allow from 172.31.87.118
Und starten Sie Apache neu.
Um auf phpMyAdmin zuzugreifen, müssen Sie einen VPN-Server wie OpenVPN einrichten. Dies ermöglicht es Ihnen, Ihren Client-Computer mit der virtuellen privaten Cloud zu verbinden, in der Ihre Webserver betrieben werden, und auf den Server, der phpMyAdmin auf der privaten IP ausführt, zuzugreifen, als ob Sie ein anderer Server wären. Natürlich müssen Sie Ihre Firewall-Einstellungen so konfigurieren, dass der Zugang vom OpenVPN-Server zur phpMyAdmin-Instanz erlaubt ist.
Option 3: Apache mit HTTPS und Basic-Auth sichern
Wenn Sie wirklich öffentliche DNS verwenden müssen und Ihren Server zugänglich machen wollen, können Sie die grundlegende Authentifizierung mit Apache verwenden. Dies ist einfach ein weiteres Passwort vor phpMyAdmin, das verhindert, dass Außenstehende Anfragen an die phpMyAdmin-Anwendung stellen. Sie können dies zusammen mit den anderen Optionen in dieser Liste verwenden, da es nur eine zusätzliche Verteidigungsebene ist.
Erstellen Sie eine neue Passwortdatei mit htpasswd, die bereits zusammen mit Apache installiert sein sollte (falls nicht, finden Sie sie in apache2-utils):
sudo htpasswd /etc/apache2/.htpasswd phpadminDamit können Sie ein neues Passwort für den Benutzer phpadmin festlegen und es in /etc/apache2/.htpasswd speichern.
Öffnen Sie /etc/apache2/conf-enabled/phpmyadmin.conf und konfigurieren Sie es so, dass die Basis-Authentifizierung mit der neu erstellten Passwortdatei verwendet wird:
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Starte Apache mit:
sudo service apache2 restartUnd wenn Sie versuchen, phpMyAdmin in Ihrem Browser aufzurufen, werden Sie nach einem Benutzernamen und Passwort gefragt. Geben Sie phpadmin und das von Ihnen erstellte Passwort ein, und Sie sollten Zugang erhalten. Andernfalls sehen Sie nur eine 401 Unauthorized Antwort.


