Passwortschutz: Nginx & Htpasswd im Einsatz!

Selbst in der weiten Welt des Internets gibt es einige Bereiche, die wir gerne privat halten möchten – und das aus guten Gründen. Wenn du zum Beispiel eine nicht für die Öffentlichkeit bestimmte Webseite betreibst, möchtest du sicherstellen, dass nur befugte Personen darauf zugreifen können. Ein primitiver Weg, dies zu erreichen, ist die Verwendung der sogenannten HTTP-Basicauthentifizierung.

Damit bekommst du ein Pop-up, welches nach Benutzername und Passwort fragt. In diesem Blogbeitrag erfährst du, wie du diese zusätzliche Sicherheitsschicht korrekt einrichtest. Besonders praktisch ist Htpasswd, um bestimmte Bereiche deiner Webseite, wie das WordPress-Admin-Panel (/wp-admin), vor bösartigen Charakteren zu schützen. Natürlich gibt es noch viele weitere Einsatzgebiete.

Ich zeige dir in diesem Artikel Schritt für Schritt, wie du Htpasswd unter Nginx einrichtest. Manch einer meiner Leser könnte diesen Schutzmechanismus bereits von der Arbeit mit dem weitverbreiteten Webserver Apache2 kennen. Wie man das Tool unter Debian oder RedHat in Betrieb nimmt und wie die Ngnix-Konfiguration angepasst werden muss, zeige ich dir in den folgenden Zeilen.

Htpasswd installieren:

Standardmäßig kennt man dieses Programm nur von der Anwendung in Kombination mit dem renommierten Apache-Webserver. Aber keine Sorge. Du musst hier keine speziellen Repositorys in deinem Linux-System einbinden. Auch für die Verwendung unter Nginx eignet sich das Standard-Paket durch und durch. Sobald htpasswd installiert ist, kannst du es auch schon verwenden.

Mit dem Tool lassen sich sogenannte Htpasswd-Dateien erstellen und natürlich auch verwalten. Du kannst also Nutzer samt Passwort eintragen, damit die HTTP-Basicauthentifizierung in Nginx genutzt werden kann. Hier sind einige Installations-Beispiele für verschiedene Linux-Distributionen:

RedHat und dessen Derivate:

Möchte man Apache2 zum ersten Mal unter CentOS, Fedora, Rocky oder Alma installieren, wird man sich bestimmt über den Namen wundern. Hier heißt das Paket nämlich httpd und nicht etwa apache2. Das Tool Htpasswd lässt sich dann wie folgt installieren:

yum install httpd-tools -y

Debian und dessen Derivate:

Hier heißt Apache2 auch in der Paketverwaltung, wie man es erwarten würde. Die zusätzlichen Apache-Tools lassen sich so in dein Linux-System integrieren:

apt-get install apache2-utils -y

Htpasswd richtig konfigurieren:

Die Verwendung von Htpasswd ist wirklich simpel. Du kannst mit der Software 2 wichtige Dinge tun. Die Rede ist vom Anlegen neuer Htpasswd-Dateien oder dem Bearbeiten bereits bestehender Konfigurationen. Wie das genau geht und worauf man achten sollte, habe dich dir im Folgenden anhand von Beispielen aufgeführt:

Neue Htpasswd anlegen:

Wenn noch keine Htpasswd-Datei zum Editieren vorhanden ist, muss eine Neue erstellt werden. Der unten gezeigte Befehl legt aufgrund des Parameters -c eine neues File an. Dabei wird auch gleich der angegebene User erfasst. Ebenfalls erscheint noch eine Abfrage mit dem gewünschten Passwort.

htpasswd -c /etc/nginx/htpasswd <Benutzername>

Weiteren Benützer hinzufügen:

Häufig möchte man mehreren Anwendern Zugriff auf einen geschützten Bereich eine Webseite geben. Dabei ist der Ablauf sogar fast identisch mit dem obigen Beispiel. Lediglich das Flag -c darf nicht gesetzt werden. Ansonsten überschreibt das Prgramm htpasswd die bestehende Datei ohne nachzufragen.

htpasswd /etc/nginx/htpasswd <Weiterer_Benutzername>

Bestehenden Nutzer entfernen:

User scheiden aus Unternehmen aus oder verlieren administrative Berechtigungen aufgrund eines internen Stellenwechsels. In so einem Fall muss man den Parameter -D einsetzen, um einen bestehenden Benutzereintrag zu entfernen.

htpasswd -D /etc/nginx/htpasswd <Benutzername>

Nginx & Htpasswd vereinen:

In der Nginx-Konfiguration kannst du einen oder auch mehrere Pfade festlegen, der durch die gerade erstellte Nutzer- und Passworteingabe geschützt werden soll. Dafür musst du lediglich mit der Location-Direktive den Pfad zum abgesicherten Bereich angeben. Mittels auth_basic legst du eine Begrüßungsnachricht fest und auth_basic_user_file verweist dann auf die von dir erstelle Htpasswd-Datei.

Die unten stehende Konfiguration soll das Vorgehen noch einmal verdeutlichen:

worker_processes auto;

events {}

http {
    include /etc/nginx/mime.types;

    server {
        listen 80;
        server_name beispiel.de;

        location / {
            root /var/www/html;
            index index.html;
        }

        location /admin {
            auth_basic "Benutzer-Login erforderlich";
            auth_basic_user_file /etc/nginx/htpasswd;
        }
    }
}

Bevor du den Nginx wegen deiner Konfigurationsänderung neu lädst, solltest du diese noch mithilfe von nginx -t auf Fehler prüfen. Natürlich schadet es auch nicht, die frisch eingerichtet Htpasswd-Abfrage unter Nginx in deinem Browser auszuprobieren. Surfe nun also den gesicherten Bereich an. Dort solltest du Benutzername und Passwort eingeben müssen, bevor du Zugriff erhältst.

Von Fabian Wüst

Er ist leidenschaftlicher Open-Source-Benutzer und ein begeisterter Technologie-Enthusiast. Als kreativer Kopf hinter Homelabtopia bringt Fabian hier seine umfangreiche Erfahrung als Linux-Admin ein. Um sicherzustellen, dass du aus seinen Beiträgen den größtmöglichen Nutzen ziehen kannst, führt er ausgiebige Tests durch und errichtet dafür immense Setups.

Schreibe einen Kommentar

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