Wie kann ich mit NGINX eine Authentifizierung per Basic Auth einrichten?

Melden
  1. Benutzerdatei für die Authentifizierung erstellen
  2. NGINX-Konfiguration anpassen
  3. NGINX-Konfiguration überprüfen und neu starten
  4. Test der Basic Auth Funktion
  5. Zusammenfassung

Die Basic Authentifizierung ist eine einfache Methode, um den Zugriff auf bestimmte Bereiche einer Webseite oder einer Webanwendung mit einem Benutzernamen und Passwort zu schützen. NGINX unterstützt diese Methode standardmäßig, aber es sind einige Schritte notwendig, um sie korrekt einzurichten.

Benutzerdatei für die Authentifizierung erstellen

Als erstes müssen Sie eine Datei erstellen, in der die Benutzernamen und die dazugehörigen Passwörter verschlüsselt gespeichert werden. Üblicherweise verwendet man dafür das Werkzeug htpasswd, das Teil des Apache HTTP Server Pakets apache2-utils (auf Debian/Ubuntu) oder httpd-tools (auf CentOS/RHEL) ist.

Um das Tool zu installieren, verwenden Sie je nach System beispielsweise:

sudo apt-get install apache2-utils

oder

sudo yum install httpd-tools

Danach können Sie die Passwortdatei mit dem Befehl htpasswd anlegen. Dabei legen Sie den ersten Benutzer an (ersetzen Sie username durch den gewünschten Namen):

htpasswd -c /etc/nginx/.htpasswd username

Sie werden zur Eingabe eines Passworts aufgefordert und das Passwort wird gehasht in der Datei /etc/nginx/.htpasswd gespeichert. Möchten Sie weitere Benutzer hinzufügen, verwenden Sie denselben Befehl, aber ohne den Parameter -c (der nur bei der Erstellung der Datei verwendet wird):

htpasswd /etc/nginx/.htpasswd weitereruser

NGINX-Konfiguration anpassen

Nun müssen Sie NGINX so konfigurieren, dass es diese Datei zur Authentifizierung verwendet. Öffnen Sie dazu die Konfigurationsdatei, in der der geschützte Bereich definiert ist. Das kann beispielsweise eine Server- oder Location-Block sein, etwa in /etc/nginx/sites-available/default oder in Ihrer individuellen Konfigurationsdatei.

Fügen Sie in dem gewünschten Block die folgenden Direktiven hinzu:

auth_basic "Geschützter Bereich";auth_basic_user_file /etc/nginx/.htpasswd;

Die Direktive auth_basic aktiviert die Basic Auth und der Text in Anführungszeichen ist die Meldung, die dem Benutzer im Login-Fenster angezeigt wird. Die Direktive auth_basic_user_file gibt den Pfad zur Passwortdatei an.

Ein einfaches Beispiel eines geschützten Location-Blocks sieht so aus:

location /geschuetzt/ { auth_basic "Geschützter Bereich"; auth_basic_user_file /etc/nginx/.htpasswd; # andere Konfigurationen, z.B. root, proxy_pass etc.}

NGINX-Konfiguration überprüfen und neu starten

Nachdem Sie die Konfiguration angepasst haben, müssen Sie überprüfen, ob keine Syntaxfehler vorliegen. Dies geschieht mit folgendem Befehl:

sudo nginx -t

Wenn der Test erfolgreich ist, starten oder laden Sie NGINX neu, um die Änderung zu übernehmen:

sudo systemctl reload nginx

Alternativ, falls kein systemd verwendet wird:

sudo service nginx reload

Test der Basic Auth Funktion

Rufen Sie nun den geschützten Bereich in einem Browser auf. Es sollte ein Login-Fenster erscheinen, in dem Sie den zuvor eingerichteten Benutzernamen und das Passwort eingeben müssen. Nur bei korrekten Anmeldedaten wird der Zugriff gewährt.

Zusammenfassung

Um Basic Auth mit NGINX einzurichten, erzeugen Sie zunächst eine Passwortdatei mit htpasswd. Dann konfigurieren Sie in der NGINX-Konfigurationsdatei den geschützten Bereich mit auth_basic und auth_basic_user_file. Nach der Prüfung der Konfiguration und einem Reload des Servers ist die Authentifizierung aktiv.

Diese Methode schützt den Bereich sehr einfach und effektiv. Für produktive Systeme sollten Sie aber auch HTTPS verwenden, damit Benutzernamen und Passwörter nicht unverschlüsselt übertragen werden.

0

Kommentare