phpMyAdmin lässt sich nicht nur auf dem Apache2 oder lighthttpd Webserver sondern auch auf dem Nginx Webserver installieren. Dazu ist ein kleiner Trick notwendig da bei der Installation von phpMyAdmin lediglich die beiden zuvor genannten Webserver zur Auswahl stehen.
Erfahren Sie in diesem Beitrag wie Sie phpMyAdmin auf dem Nginx Webserver installieren und anschließend vor Angriffen wie BruteForce Attaken schützen können.
phpMyAdmin installieren
sudo apt-get install phpmyadmin
Wenn die Abfrage erscheint, für welchen Webserver (apache2, lighthttpd) Sie phpMyAdmin installieren wollen, drücken Sie die Tabulator- gefolgt von der Enter-Taste um keinen der Einträge auszuwählen.
Die nächste Abfrage beantworten Sie mit „Ja“.
Geben Sie als nächstes das MySQL Datenbank Passwort des Root ein.
Geben Sie zweimal ein beliebiges Passwort ein, mit dem Sie sich ab sofort in phpMyAdmin anmelden.
Nun erstellen wir einen symbolischen Link von der phpMyAdmin-Installation zum Document Root des Nginx Servers.
Standardmäßig liegt das Nginx-Root-Verzeichnis unter /usr/share/nginx/html. Ich habe aber, wie Sie in meinen letzten beiden Beiträgen sehen können, als Root-Verzeichnis /var/www/html gewählt.
sudo ln -s /usr/share/phpmyadmin /var/www/html
Nun aktivierehn wir noch das php Modul mcrypt
sudo php5enmod mcrypt
und starten php5-fpm neu
sudo service php5-fpm restart
Nun kann man phpmyadmin wie gewohnt starten
https://profwebapps.cloud/phpmyadmin/ oder https://192.168.178.22/phpmyadmin
Benutzername: root
Absichern von phpMyAdmin
Als erstes benennen wir den zuvor erstellten symbolischen link zur phpMyAdmin Installation um.
Dazu gehen wir in das Root-Verzeichnis des Webservers und lassen und alle Dateien inklusive der symbolischen Links anzeigen.
cd /var/www/html && ls -l
Jetzt können Sie sehen dass der symbolische Link mit dem Namen phpmyadmin vorhanden ist der auf die phpMyAdmin Installation im Verzeichnis /usr/share/phpmyadmin zeigt.
Dieser Link soll nun umbenannt werden damit man die phpMyAdmin Installation schon mal nicht mehr so leicht von aussen finden kann.
Ich nenne den Link jetzt „NichtsZuSehen“
sudo mv phpmyadmin NichtsZuSehen
Ab sofort rufen Sie phpMyAdmin nicht mehr so auf
https://profwebapps.cloud/phpmyadmin/
sondern so
https://profwebapps.cloud/NichtsZuSehen/
Nun wollen wir noch einen wirksamen Schutz vor brutforce Attacken implementieren.
Wenn jetzt die phpMyAdmin Seite aufgerufen wird, soll noch bevor der Login von phpMyAdmin erscheint, ein weiterer Login angezeigt werden.
Zuerst erstellen wir ein verschlüsseltes Passwort.
Normalerweise würde ich dafür openssl nutzen. Da man mit openssl jedoch nur kurze Passwörter verschlüsseln kann, benutze ich mkpasswd das sich im Paket whois befindet. Falls das Paket whois nicht installiert ist holen wir dies jetzt nach.
sudo apt-get install whois
Nun geben wir den folgenden Befehl gefolgt von unserem zu verschlüsselnden Passwort ein.
mkpasswd
Geben Sie hier Ihr Passwort ein.
Sie erhalten als Ausgabe die verschlüsselte Version Ihres Passwortes
Nun legen wir im im Nginx Konfigurationsverzeichnis eine Authentifizierungsdatei mit dem Namen pma_pass an.
Rufen Sie dazu folgenden Befehl auf!
sudo vim /etc/nginx/pma_pass
In diese Datei schreiben wir nun einen Benutzernamen und das verschlüsselte Passwort in einer Zeile und beides getrennt durch einen Doppelpunkt. Das Ganze sollte dann so aussehen
Testuser:VbSWwDTc31eUa
Nun ändern wir abermals unsere Nginx Konfigurationsdatei.
sudo vim /etc/nginx/sites-available/default
In dieser Datei erstellen wir im Block server einen neuen Block.
location /NichtsZuSehen { auth_basic "Admin Login"; auth_basic_user_file /etc/nginx/pma_pass; }
und starten nginx neu
sudo service nginx restart
Wenn Sie nun phpMyAdmin wie zuvor aufrufen wird nun nicht die phpMyAdmin-Seite mit dem Loginfeld angezeigt.
Stattdessen erscheint ein Login Fenster in das Sie die gerade erstellten Anmeldedaten eingeben müssen.
Werden falsche Daten eingegeben wird die phpMyAdmin Seite niemals angezeigt. Sind die Anmeldedaten korrekt erscheint der phpMyAdmin Login, in dem Sie nun die gewohnten phpMyAdmin Anmeldedaten eingeben.
Im nächsten Beitrag erfahren Sie wie man Kontakte, Aufgaben und Kalender auf seinem Nginx-Webserver mittels Baikal verwalten und diese mit den verschiedensten Devices synchronisieren kann.