Website-Suche

So konfigurieren Sie die grundlegende HTTP-Authentifizierung in Nginx


Die grundlegende HTTP-Authentifizierung ist ein Sicherheitsmechanismus, um den Zugriff auf Ihre Website/Anwendung oder einige Teile davon durch die Einrichtung einer einfachen Benutzername/Passwort-Authentifizierung einzuschränken. Es kann im Wesentlichen zum Schutz des gesamten HTTP-Servers, einzelner Serverblöcke (virtuelle Hosts in Apache) oder Standortblöcken verwendet werden.

Lesen Sie auch: So richten Sie namensbasierte und IP-basierte virtuelle Hosts (Serverblöcke) mit NGINX ein

Wie der Name schon sagt, ist es keine sichere Methode, auf die man sich verlassen kann; Sie sollten es in Verbindung mit anderen zuverlässigeren Sicherheitsmaßnahmen verwenden. Wenn Ihre Webanwendung beispielsweise über HTTP ausgeführt wird, werden Benutzeranmeldeinformationen im Klartext übertragen. Sie sollten daher die Aktivierung von HTTPS in Betracht ziehen.

Der Zweck dieses Leitfadens besteht darin, Ihnen dabei zu helfen, eine kleine, aber nützliche Sicherheitsebene hinzuzufügen, um private/privilegierte Inhalte in Ihren Webanwendungen zu schützen (z. B. auf Administratorseiten, aber nicht darauf beschränkt). Sie können damit auch den Zugriff auf eine Website oder Anwendung verhindern, die sich noch in der Entwicklungsphase befindet.

Anforderungen

  1. Installieren Sie den LEMP-Stack in CentOS/RHEL 7
  2. Installieren Sie den LEMP-Stack in Ubuntu/Debian

Erstellen Sie eine HTTP-Authentifizierungsbenutzerdatei

Sie sollten damit beginnen, eine Datei zu erstellen, in der Benutzername:Passwort-Paare gespeichert werden. Wir verwenden das Dienstprogramm htpasswd von Apache HTTP Server, um diese Datei zu erstellen.

Überprüfen Sie zunächst, ob Apache2-utils oder httpd-tools, die Pakete, die das Dienstprogramm htpasswd bereitstellen, auf Ihrem System installiert sind. Andernfalls führen Sie den entsprechenden Befehl aus Ihre Distribution, um es zu installieren:

yum install httpd-tools		[RHEL/CentOS]
sudo apt install apache2-utils	[Debian/Ubuntu]

Führen Sie als Nächstes den folgenden Befehl htpasswd aus, um die Passwortdatei für den ersten Benutzer zu erstellen. Die Option -c wird verwendet, um die passwd-Datei anzugeben. Sobald Sie [Enter] drücken, werden Sie aufgefordert, das Benutzerkennwort einzugeben.

htpasswd -c /etc/nginx/conf.d/.htpasswd developer

Fügen Sie einen zweiten Benutzer hinzu und verwenden Sie hier nicht die Option -c.

htpasswd /etc/nginx/conf.d/.htpasswd admin

Nachdem Sie nun die Passwortdatei bereit haben, können Sie mit der Konfiguration der Teile Ihres Webservers fortfahren, auf die Sie den Zugriff beschränken möchten. Um den Inhalt der Passwortdatei (einschließlich Benutzernamen und verschlüsselten Passwörtern) anzuzeigen, verwenden Sie den folgenden Befehl cat.

cat /etc/nginx/conf.d/.htpasswd 

Konfigurieren Sie die HTTP-Authentifizierung für Nginx

Wie bereits erwähnt, können Sie den Zugriff auf Ihren Webserver, eine einzelne Website (mithilfe ihres Serverblocks) oder eine Standortanweisung beschränken. Um dies zu erreichen, können zwei nützliche Anweisungen verwendet werden.

  • auth_basic – aktiviert die Validierung von Benutzername und Passwort mithilfe des Protokolls „HTTP Basic Authentication“.
  • auth_basic_user_file – gibt die Passwortdatei an.

Schützen Sie virtuelle Nginx-Hosts mit einem Passwort

Um die Basisauthentifizierung für den gesamten Webserver zu implementieren, die für alle Serverblöcke gilt, öffnen Sie die Datei /etc/nginx/nginx.conf und fügen Sie die folgenden Zeilen im http-Kontext hinzu:

http{
	auth_basic           "Restricted Access!";
    	auth_basic_user_file /etc/nginx/conf.d/.htpasswd; 
	……...
}

Schützen Sie die Nginx-Website oder -Domain mit einem Passwort

Um die Basisauthentifizierung für eine bestimmte Domäne oder Subdomäne zu aktivieren, öffnen Sie deren Konfigurationsdatei unter /etc/nginx/conf.d/ oder /etc/nginx/conf/sites-available (abhängig davon, wie Sie Nginx installiert haben) und fügen Sie dann die folgende Konfiguration im Serverblock oder Kontext hinzu:

server {
	listen 			80;
	server_name    	  example.com;
	auth_basic           	"Restricted Access!";
    	auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	location /  {
		……..
	}
	……...
}

Passwortgeschütztes Webverzeichnis in Nginx

Sie können die Basisauthentifizierung auch innerhalb einer Standortanweisung aktivieren. Im folgenden Beispiel werden alle Benutzer, die versuchen, auf den Standortblock /admin zuzugreifen, zur Authentifizierung aufgefordert.

server {
	listen 			80;
	server_name    	example.com www.example.com;
	
	location / {
		……..
	}
	location /admin/ {
		auth_basic           	"Restricted Access!";
    		auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	}

	location /public/{
		auth_basic  off;	#turns off basic http authentication off for this block
	}
	……..
}

Wenn Sie die einfache HTTP-Authentifizierung konfiguriert haben, werden alle Benutzer, die versuchen, auf Ihren Webserver, eine Subdomain oder einen bestimmten Teil einer Site zuzugreifen (je nachdem, wo Sie sie implementiert haben), nach einem Benutzernamen und einem Passwort gefragt, wie im Screenshot unten gezeigt .

Im Falle einer fehlgeschlagenen Benutzerauthentifizierung wird die Fehlermeldung „401-Autorisierung erforderlich“ angezeigt, wie unten dargestellt.

Weitere Informationen finden Sie unter Einschränken des Zugriffs mit grundlegender HTTP-Authentifizierung.

Vielleicht möchten Sie auch die folgenden nützlichen Anleitungen zum Nginx-HTTP-Server lesen.

  1. So schützen Sie Webverzeichnisse in Nginx mit einem Passwort
  2. Der ultimative Leitfaden zum Sichern, Härten und Verbessern der Leistung von Nginx
  3. Einrichten von HTTPS mit Let’s Encrypt SSL-Zertifikat für Nginx

In dieser Anleitung haben wir gezeigt, wie man die grundlegende HTTP-Authentifizierung im Nginx-HTTP-Webserver implementiert. Wenn Sie Fragen stellen möchten, verwenden Sie das unten stehende Feedback-Formular.