Passwortschutz für Verzeichnisse unter nginx

Veröffentlicht von Administrator am Jan 16 2020
Computer »

Einzelne Verzeichnisse oder den gesamten Verzeichnisbaum des Webangebots mit einem Passwort abzusichern ist auch unter nginx möglich obwohl
dieser Webserver keine .htaccess Dateien unterstützt. Ich zeige hier einen ganz einfachen Weg auf.
Auch wenn nginx keine htaccess-Direktiven kennt, ist es dennoch möglich passwortgeschützte Bereiche im Webspace einzurichten wie wir es vom apache(2)
kennen. Wir benutzen auch eine htpasswd-Datei in der Benutzername(Klartext) und Passwort(verschlüsselt) abgelegt werden.
Um die Datei zu erstellen gibt es mehrere Möglichkeiten.

Entweder ihr nutzt das Linux-tool "htpasswd" , welches Bestandteil der apache-utils ist.
Sollten die apache-utils nicht installiert sein, was bei der Nutzung von nginx normal ist, müsst ihr die nachinstallieren. Je nach Distribution
ist die Vorgehensweise verschieden.
Als Beispiel für Debian/Ubuntu sei hier "apt-get install apache-utils "(debian) und "sudo apt-get install apache-utils "(ubuntu) aufgeführt.
Nach der Installation kann mit

htpasswd -c /var/www/.htpasswd Benutzername

die Datei angelegt. Natürlich muss "Benutzername" noch mit einem Namen eurer Wahl ersetzt werden sowie der Pfad der Datei entsprechend angepasst werden. In dem Zuge
werdet ihr nach einem Passwort gefragt, welches dann verschlüsselt in der Datei gespeichert wird. Wichtig wäre noch zu erwähnen,dass der Parameter "-c"
die Datei erstellt, sofern sie nicht vorhanden ist. Sollte die Datei schon vorhanden sein, wird der alte Inhalt gelöscht und mir eurem neuen Benutzernamen
und dem neuen Passwort überschrieben. Wer schon Benutzer in der Datei vorhanden hat und diese auch erhalten will und den neuen Benutzer nur anhängen will,
sollte den Parameter "-c" weglassen.

Die zweite Möglichkeit die Datei .htpasswd zu erstellen, ist für Windowsuser geeigneter oder Admin die keine unötige Software installieren wollen.
Es gibt jede Menge Generatoren im Netz die euch diese Arbeit abnehmen.
Ich habe hier einen kleinen Passwort-Generator erstellt um htpasswd-Dateien zu generieren.
Diesen könnt ihr für apache's htaccess/htpasswd Verzeichnisschutz nutzen , sowie wir ihn nutzen für unseren nginx. Keine Sorge die eingegebenen Daten
werden weder gespeichert noch können Rückschlüsse auf den verwendeten Server gezogen werden , da diese Daten nicht abgefragt werden.
In unserem Fall , für nginx, brauchen wir die .htaccess-Datei nicht, sondern nur den Einzeiler für die htpasswd , die wir dann im Pfad des Webservers abspeichern
z.B. " /var/www/.htpasswd"
Nachdem die Datei nun gespeichert ist und in etwa folgenden Inhalt hat

Benutzer:VDHZBFSDs455fs§fr5643df


werden wir nun dem Webserver sagen, dass er die Datei als Passwort-datei für unser geschütztes Verzeichnis nutzen soll.
Dazu öffnen wir die vhost-Datei unserer Domain. Meist unter "/etc/nginx/sites-enabled/domain.conf" zu finden und fügen dort den Fetten Texteil im Server-Bereich für das Verzeichnis "geheim" dies ein.

server {
listen 80;
server_name www.meine_domain.de meine_domain.de;
root /var/www/;
...
location /geheim {
auth_basic "Login zum geheimen Verzeichnis";
auth_basic_user_file /var/www/.htpasswd;

}
...
}

Jezt noch das geheime Verzeichnis erstellen und eine Datei mit Inhalt einfügen.


mkdir /var/www/geheim


Zu Testszwecken kann folgende index.html im geheimen Verzeichnis erstellt werden:

 

<html>
<head>
<title> Dies ist der geheime Bereich</title>
</head>
<body>
<h2>Willkommen im geheimen Bereich</h2>
</body>
</html>

Ansonsten den zu schützenden Content eurer Wahl 
Nun noch den Webserver die neue Konfiguration einlesen lassen mittels:


service nginx reload

und das wars schon.

Jetzt kann unser Verzeichnis im Browser unter http://meine_domain.de/geheim aufgerufen werden und es sollte der Benutzer und ein Passwort abgefragt werden.
Wird der Name und Passwort richtig eingegeben, wird der geheime Inhalt wird angezeigt.
Anderfalls bekommt ihr einen 401-Fehler (Authentication Required)

Zusatz für Ajenti V
Da ich mich in letzter Zeit sehr mit Ajenti V beschäftigt habe , habe ich auch hierfür noch eine Lösung, wie die vhost-Datei bearbeitet werden muss.
Wir loggen uns in ajenti ein , rufen Webseite/meine_domain auf und klicken auf verwalten. nun den Reiter "Erweitert" und tragen unter Benutzerdefinierte Konfiguration
dies ein:


location /geheim {
auth_basic "Login zum geheimen Verzeichnis";
auth_basic_user_file /var/www/.htpasswd;
}

das wars dann auch schon,
stay tuned.......

 

Zuletzt geändert am: Jan 16 2020 um 12:50 AM

Zurück zur Übersicht