Adminer – Datenbanktool Installation + NginX vHOST einrichten 1/2

Im dritten Kapitel nehmen wir alles, was wir in den beiden vorangegangenen Kapiteln erarbeitet haben und bringen damit ein Datenbank-Administrationstool zum Laufen. Den Adminer

Warum nicht phpMyAdmin? Ja, warum nicht… Weil es groß ist. Monströs! Und von jedem Script im Netz als Angriffsziel auserkoren wird.

Über Adminer bin ich eher zufällig gestolpert. Es ist klein, einfach und dennoch mächtig. Es erfüllt seinen Zweck. Adminer ist eine einzige PHP-Datei und gerade mal 190 kB ‚groß‘.
Probier es aus :)
Wenn es Dir nicht reicht, kannst Du Dir ja auch das phpMyAdmin auf den Server schmeißen. Genügend abgesichert sollte es ja dann sein ^^

Wir bereiten einen vHOST vor

Ganz früher war die Sache klar: Eine IP, ein Host, eine Domain. Punkt!

Zum Glück fand recht schnell die Technik der ‚virtuellen Hosts‘ Einzug in die Webserver. Der vHOST. Jetzt können wir auf einem Server mit einer IP theoretisch hunderte von Webseiten mit ganz unterschiedlichen Domains laufen lassen. Wir werden nur von der Hardware eingebremst, wenn wir zu viele Zugriffe auf unseren Server bekämen…

Und so einen vHOST richten wir jetzt zusammen ein.

Voraussetzungen

Vorbereitungen

Ich wähle als Domain für das Tutorial „bla.de“. Die gehört mir nicht und ich hab damit auch nichts zu schaffen. Einfach nur, damit ich was schreiben kann. Gut, bla.de ist genau so schlecht wie example.com, aber hey, sie ist kürzer zu tippen ;)

Sub-Domain
Zuerst gehst Du bitte in Deine Domainverwaltung und richtest eine neue Sub-Domain auf Deinen Server ein. Genau wie beim Host für das Basissystem. Nur diesmal nicht server.bla.de sondern mysql.bla.de, db.bla.de oder maria.bla.de. Wie auch immer Du später Deine Datenbankadministration ansteuern möchtest.

Per SSH als „User“ auf unsere Maschine verbinden

Root-Rechte erlangen
sudo -i

Verzeichnis anlegen
Wohin mit unseren Webseiten?
Ich habe mich daran gewöhnt, sie in „/var/www/…“ abzulegen. In /var/www erstelle ich für jede Domain und jeden Dienst ein eigenes Unterverzeichnis. „piwik“ für Piwik, „bla.de“ für den Webauftritt von der Domain. Und in diesem Fall wäre es logischerweise das Verzeichnis „adminer“…
mkdir /var/www/adminer

Adminer laden und verschieben
Holen wir uns Adminer von der Webseite des Projekts:
http://www.adminer.org/de/

Dort findest Du den Verweis „nur MySQL“ und „nur Deutsch“. Zum Zeitpunkt dieser Anleitung ist Version 4.2.2 aktuell… Einen Rechtsklick drauf und „Link Adresse kopieren…“ bitte. Herunterladen werden wir die Datei mittels „wget“ und „Paste“ für die Adresse:
wget https://downloads.sourceforge.net/adminer/adminer-4.2.2-mysql-de.php

Verschieben wir nun die Datei in das gerade erstellte Web-Verzeichnis
mv adminer-4.2.2-mysql-de.php /var/www/adminer/

Eine .htpass-Datei zur Absicherung des Adminer-Verzeichnisses erstellen.

### Anleitung basiert auf https://www.brisoft.de/de/nginx-verzeichnisse-absichern/

Wir legen uns eine Benutzername/Passwort-Datei an, in der verschlüsselt die PWs der jeweiligen zugriffsberechtigten Benutzer stehen. Die Datei alleine macht noch gar nichts. Diese Datei nutzt aber unser NginX, um die Eingaben zu verifizieren. Wir können so viele Benutzer in eine Passwortdatei eintragen, wie wir lustig sind. Wir können einen gesamten Webauftritt (root) oder nur einzelne Unterverzeichnisse oder sogar Dateien durch eine Passwortabfrage sichern. Das entscheidet der Eintrag in der vHOST-Config.
Der Dateiname dafür kann frei gewählt werden. Er sollte aber dringend mit einem Punkt beginnen, damit die Zugriffsbeschränkungen von NginX greifen!

Es gibt vier Anwendungsfälle. Die Befehle dafür haben folgende Syntax:

A) Neue PW-Datei anlegen. Wird nur beim ersten Benutzer benötigt.
htpasswd -bcm [Dateiname] [Benutzername] "[Kennwort]"
### Die Optionen haben folgende Bedeutung:

  • b | PW von Kommandozeile nehmen. Das PW dabei unbedingt in Anführungszeichen stellen, weil bei manchen Zeichen die Übergabe an den Promt versagt und das Passwort dann ungültig wäre.
  • c | ‚c’reate File – also Datei anlegen.
  • m | MD5 Verschlüsselung für das PW verwenden. Nicht CRYPT nehmen, das ist auf 8 Zeichen beschränkt. SHA läuft ohne Salt, das ist zu unsicher.

Update 28.09.2015: Sollte trotz der Anführungszeichen das Passwort nicht korrekt übergeben werden, dann den Befehl ohne die Option ‚-b‘ und ohne Passwort noch einmal ausführen. Nun werden wir zwei Mal nach dem PW gefragt, welches wir dann per [Copy/Paste] übergeben. Damit müsste das PW dann auf jeden Fall korrekt abgespeichert sein.

B) Benutzer hinzufügen:
htpasswd -bm [Dateiname] [Benutzername] "[Kennwort]"
### Wie oben, nur ohne „c“, weil die Datei ja bereits existiert.

C) Benutzer entfernen:
htpasswd -D [Dateiname] [Benutzername]
### Löscht [Benutzer] aus [PW-Datei].

D) Passwort ändern:
htpasswd -bm [Dateiname] [Benutzername] "[Kennwort]"
### Überschreibt dann das alte PW des Benutzers mit dem neuen.

So weit, so schön. Erzeugen wir unsere erste .htpass Datei:
Benutzername und PW bitte in Deine Dokumentation eintragen! Passwort aus der Liste der vorbereiteten PWs ziehen. 32 Zeichen reichen.

htpasswd -bcm /var/www/adminer/.htpass user "9tXQ1P^L"9P~4O(;u6BW~E+FFN1r,G9`"

Riskieren wir mal einen Blick in die Datei?
Klar, warum nicht ;)
cat /var/www/adminer/.htpass
user:$apr1$gK/jf25k$h0CoElSV6YPxefSkHm8Ee0
### Unser Passwort wurde mit MD5 verschlüsselt und nur sein Hash in der Datei abgelegt. Der Benutzer steht aber leider im Klartext drin. Darum ist es auch so wichtig, dass NginX allen Dateien mit einem „.“ davor den Zugriff verweigert! Sonst könnte sich ein ‚böser Mensch‘ a.k.a ‚Cracker‘ einfach die Datei herunterladen :)

Und damit haben wir die .htpass-Datei erfolgreich angelegt, die wir später in die NginX-vHOST-Config einbauen werden!

Weiter geht’s im zweiten Teil

Haftungsausschluss!

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Anzeige *

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.