So installieren Sie phpMyAdmin sicher

0
177

phpMyAdmin ist ein großartiges Tool zum Verwalten einer MySQL-Datenbank, aber für den Zugriff auf Ihre Datenbank hinter einem Webinterface ist ein großes Sicherheitsproblem. Hier sind einige Möglichkeiten, die mit der Ausführung von phpMyAdmin verbundenen Risiken zu mindern.

Warum ist phpMyAdmin ein Sicherheitsproblem?

Normalerweise haben Sie eine Datenbank, die auf Ihrem Server ausgeführt wird und nur Verbindungen von localhost oder möglicherweise von einem anderen vertrauenswürdigen Server akzeptiert. Wenn auf diesem Server auch eine Anwendung ausgeführt wird, würde diese direkt kommunizieren. Es gibt keine Möglichkeit für einen Angreifer, sich Zugriff zu verschaffen, ohne den gesamten Server zu knacken.

phpMyAdmin umgeht dies, um Ihnen eine Weboberfläche zur Verwaltung Ihrer Datenbank bereitzustellen. Es ist ein sehr nützliches Werkzeug, aber es ist eine Katastrophe für die Sicherheit. phpMyAdmin hat uneingeschränkten Zugriff auf Ihre Datenbank, da es den direkten Zugriff über die Befehlszeile ersetzen soll. Wenn ein Angreifer Zugriff auf das Webpanel erhält, hat er Zugriff auf alles. Und phpMyAdmin ist normalerweise nur mit einem einfachen Passwort gesichert.

Installieren Sie phpMyAdmin und Secure MySQL

phpMyAdmin läuft auf dem LAMP-Stack (Linux, Apache, MySQL, PHP). Bevor Sie mit der Installation von phpMyAdmin beginnen, sollte Ihre MySQL-Instanz sicher sein. MySQL bietet ein praktisches Dienstprogramm zum Ausführen einiger grundlegender Sicherheitsaufgaben:

sudo mysql_secure_installation

Dies führt Sie durch das Ändern des Root-Passworts, das Deaktivieren von Remote-Logins und das Entfernen der Testdatenbank.

Werbung
< p>Danach können Sie phpMyAdmin wie gewohnt installieren. Während der Installation werden Sie aufgefordert, ein Passwort des Admin-Benutzers der Datenbank (das Sie während der mysql_secure_installation festgelegt haben sollten) und ein neues Passwort zum Sichern von phpMyAdmin einzugeben. Stellen Sie sicher, dass dieses Passwort lang und sicher ist, da es der letzte Verteidigungspunkt ist, bevor Angreifer Zugriff erhalten.

Im Idealfall sollte jedoch kein Angreifer die Möglichkeit haben, Ihr Passwort zu erraten, daher sollten Sie phpMyAdmin hinter etwas anderem stecken, um es weiter abzusichern.

Option 1: Apache sperren und SSH-Port-Weiterleitung verwenden

Dies ist die sicherste Option, aber sie ist wirklich nur für den Einzelbenutzerzugriff geeignet, insbesondere für Einzelbenutzer mit vollständigen Administratorrechten Zugriff auf den gesamten Server, da eine Verbindung über SSH erforderlich ist.

Die SSH-Portweiterleitung ist eine Methode zur Weiterleitung lokaler Ports an ein Remote-System. Beispiel: Apache läuft auf Ihrem Server und lauscht auf Port 80. Wenn Sie diesen Port getunnelt haben, können Sie darauf zugreifen:

https://localhost:80/

… in jedem Webbrowser. In gewisser Weise ist es fast so, als würde Apache auf Ihrem System ausgeführt. 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 gesichert ist und idealerweise nicht auf dem Standardport ausgeführt wird, da diese Methode nur so sicher ist wie Ihre SSH-Verbindung.

Dazu 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-Anweisungen so, dass sie nur auf localhost (auch bekannt als 127.0.0.1) hören:

Listen 127.0.0.1:80 <IfModule ssl_module> Abhören 127.0.0.1:443 </IfModule> <IfModule mod_gnutls> Abhören 127.0.0.1:443 </IfModule>

Starte Apache neu mit:

sudo service apache2 restart Werbung

Und phpMyAdmin sollte nicht zugänglich sein. Dies wird erwartet. Sobald Apache konfiguriert ist, können Sie Port 80 mit dem folgenden Befehl tunneln:

ssh -L 80:localhost:80 user@server

Dann können Sie von localhost:80 in jedem Webbrowser auf phpMyAdmin zugreifen. In der Zwischenzeit kann Ihr Server mit einer strengen Firewall konfiguriert werden, um alles außer SSH zu verbieten.

Wenn ssh nicht an Port 80 binden kann, versuchen Sie, den ersten Port in eine andere Nummer zu ändern und von dort auf localhost darauf zuzugreifen. Es wird weiterhin zu Port 80 auf dem Remote-Computer getunnelt. Diese Verbindung wird aufrechterhalten, bis Sie ssh beenden. Wenn Sie es im Hintergrund ausführen möchten, verwenden Sie das -f Flag.

Wenn Sie möchten, dass phpMyAdmin nur auf localhost lauscht, können Sie stattdessen /etc/apache2/conf-enabled/phpmyadmin.conf und . bearbeiten Fügen Sie dem Verzeichnis Block die folgenden Zeilen hinzu:

Order deny,allow Deny from all Allow from 127.0.0.1

Dadurch wird verhindert, dass außer localhost auf die phpMyAdmin-Installation zugegriffen werden kann, obwohl Sie Port 80 in Ihrer Firewall öffnen müssen, um regulären Datenverkehr zuzulassen.

Option 2: Sperren Sie Apache und verwenden Sie ein VPN

Wenn Sie mehreren Personen den Zugriff ohne SSH-Zugriff gewähren müssen, können Sie Apache so einrichten, dass er die private IP Ihres Computers abhört und nur Verbindungen von . akzeptiert die gleiche Wolke. Dies funktioniert besonders gut mit Diensten wie AWS VPC, bei denen jeder Server, den Sie starten, in einem virtuellen Netzwerk erstellt wird.

Werbung

Um Ihre private IP zu finden, können Sie ifconfig ausführen und nach der inet-Adresse Ihres primären Netzwerkadapters suchen:

Diese Adresse ist auch in der AWS EC2-Konsole sichtbar. Nachdem Sie die Adresse kopiert haben, öffnen Sie /etc/apache2/ports.conf und bearbeiten Sie die drei Listen-Anweisungen, um die private IP abzuhö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 können Sie, wenn Sie phpMyAdmin nur sichern möchten, /etc/apache2/conf-enabled/phpmyadmin.conf bearbeiten und nur von der privaten IP aus zulassen:

Order deny,allow Deny from all Allow from 172.31. 87.118

Und starten Sie Apache neu.

Um nun auf phpMyAdmin zuzugreifen, müssen Sie einen VPN-Server wie OpenVPN einrichten. Auf diese Weise können Sie Ihren Client-Computer in die virtuelle private Cloud, in der Ihre Webserver laufen, tunneln und auf den Server zugreifen, auf dem phpMyAdmin auf der privaten IP läuft, als ob Sie ein anderer Server wären. Natürlich müssen Sie Ihre Firewall-Einstellungen konfigurieren, um den Zugriff vom OpenVPN-Server auf die phpMyAdmin-Instanz zu ermöglichen.

Option 3: Apache sichern mit HTTPS und Basic Auth

Wenn Sie wirklich öffentliches DNS verwenden müssen und auf Ihren Server zugreifen müssen, können Sie die Standardauthentifizierung 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 auf dieser Liste verwenden, da es nur eine zusätzliche Verteidigungsebene ist.

Erstellen Sie eine neue Passwortdatei mit htpasswd, die bereits zusammen mit Apache installiert werden sollte (falls nicht , es befindet sich in apache2-utils):

sudo htpasswd /etc/apache2/.htpasswd phpadmin-Werbung

Damit können Sie ein neues Passwort für den Benutzer phpadmin festlegen und in /etc speichern /apache2/.htpasswd.

Öffnen Sie /etc/apache2/conf-enabled/phpmyadmin.conf und konfigurieren Sie es, um Basic Auth mit der neu erstellten Passwortdatei zu verwenden:

AuthType Basic AuthName ” Eingeschränkter Inhalt” AuthUserFile /etc/apache2/.htpasswd Require valid-user

Starten Sie Apache neu mit:

sudo service apache2 restart

Und wenn Sie versuchen, in Ihrem Browser auf phpMyAdmin zuzugreifen, werden Sie nach Benutzername und Passwort gefragt. Geben Sie phpadmin und das von Ihnen erstellte Passwort ein und Sie sollten Zugriff haben. Andernfalls sehen Sie nur eine 401 Nicht autorisierte Antwort.