Zum Hauptinhalt springen Skip to page footer

Einrichtung eines Zugriffsschutzes mittels Virtual Hosts mit Apache und Nginx: Eine universelle Anleitung

| Tutorial | Apache Nginx Linux

Schützen Sie den Zugriff auf Ihre Website! Erfahren Sie, wie Sie mithilfe von Apache oder Nginx einen Zugriffsschutz mittels Virtual Hosts einrichten können. Unser Tutorial bietet eine umfassende Anleitung für beide Webserver-Softwarelösungen und erklärt Schritt für Schritt, wie Sie Benutzernamen und Passwörter für den Zugriff auf Ihre Inhalte festlegen können. Erfahren Sie auch mehr über verschiedene Authentifizierungstypen und wählen Sie die beste Option für Ihre Anforderungen. Schützen Sie Ihre Daten und gewähren Sie nur autorisierten Benutzern den Zugriff auf Ihre Website.

Für die Einrichtung eines Zugriffsschutzes mittels Virtual Hosts ist eine Webserver-Software wie Apache oder Nginx erforderlich. Hier ist eine allgemeine Anleitung für beide Server:  

Apache

  • Öffnen Sie Ihre Apache-Konfigurationsdatei (normalerweise httpd.conf oder apache2.conf). 
  • Stellen Sie sicher, dass das mod_auth-Modul aktiviert ist. Suchen Sie die Zeile „LoadModule auth_module module/mod_auth.so“ und entfernen Sie ggf. das Kommentarzeichen (#) am Anfang der Zeile. 
  • Fügen Sie den folgenden Code in den entsprechenden Virtual Host-Block ein. Ersetzen Sie „website1.com“ durch Ihren tatsächlichen Servernamen und „/path/to/your/document/root“ durch den Pfad zum Dokumentverzeichnis Ihres Virtual Hosts. 
<VirtualHost *:80>
    ServerName website1.com
    DocumentRoot /path/to/your/document/root

    <Directory "/path/to/your/document/root">
        AuthType Basic
        AuthName "Restricted Access"
        AuthUserFile /path/to/your/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>
  • Erstellen Sie außerhalb Ihres öffentlichen Dokumentenverzeichnisses eine Datei mit dem Namen „.htpasswd“ und geben Sie die zulässigen Benutzernamen und Passwörter in diese Datei ein. Sie können diese Datei mit dem Apache-Tool „htpasswd“ erstellen. Führen Sie den folgenden Befehl im Terminal aus:  
htpasswd -c /path/to/your/.htpasswd username
  • Sie werden aufgefordert, das Passwort für den Benutzer „username“ einzugeben.
  • Starten oder aktualisieren Sie den Apache-Webserver. 

Nginx:

  • Öffnen Sie die Nginx-Konfigurationsdatei (normalerweise nginx.conf oder eine Konfigurationsdatei im Verzeichnis /etc/nginx/conf.d/).
  • Fügen Sie den folgenden Code in den entsprechenden Server-Block ein. 
server {
    listen 80;
    server_name website1.com;
    root /path/to/your/document/root;

    location / {
        auth_basic "Restricted Access";
        auth_basic_user_file /path/to/your/.htpasswd;
    }
}

Ersetzen Sie „website1.com“ durch Ihren tatsächlichen Servernamen und „/path/to/your/document/root“ durch den Pfad zum Dokumentverzeichnis Ihres virtuellen Hosts.

Erstellen Sie eine „.htpasswd“-Datei und geben Sie Ihren Benutzernamen und Ihr Passwort mit dem „htpasswd“-Tool ein. 

htpasswd -c /path/to/your/.htpasswd username
  • Sie werden aufgefordert, das Passwort für den Benutzer „username“ einzugeben.
  • Starten oder aktualisieren Sie den Nginx-Webserver. 

Nachdem Sie diese Schritte, entweder für Apache oder Nginx, durchgeführt haben, sollte der Zugriffsschutz für den entsprechenden Virtual Host eingerichtet sein. Wenn jemand auf Ihren virtuellen Host zugreift, benötigt er einen Benutzernamen und ein Passwort, um auf Ihre Inhalte zuzugreifen. 

Direktive "AuthType Basic"

Im obigen Beispiel wurde die AuthType Basic Dierective verwendet.

AuthType Basic“ ist eine Direktive in der Apache-Konfiguration, die den Authentifizierungstyp für den Zugriffsschutz festlegt. Dies wird verwendet, um die Basisauthentifizierung zu konfigurieren, die einen Benutzernamen und ein Passwort zur Authentifizierung des Clients erfordert.

Bei Verwendung von „AuthType Basic“ wird der Client beim Versuch, auf den geschützten Bereich des Servers zuzugreifen, zur Eingabe eines Benutzernamens und Passworts aufgefordert. Diese Informationen sind im Header des HTTP-Anforderungspakets in Base64-codierter Form enthalten. Der Server entschlüsselt die Informationen, gleicht sie mit gespeicherten Benutzerdaten ab und bestätigt oder verweigert Berechtigungen. Es ist wichtig zu beachten, dass die Basisauthentifizierung kein ausreichendes Maß an Sicherheit bietet, insbesondere wenn die Verbindung nicht verschlüsselt ist, insbesondere über HTTPS, da das Kennwort des Benutzers in Base64-codierter Form gesendet wird. Daher empfehlen wir Ihnen, die Standardauthentifizierung nur in Verbindung mit sicheren Verbindungen oder für nicht sensible Inhalte zu verwenden, bei denen die Sicherheit nicht kritisch ist.

Es gibt auch andere Authentifizierungstypen wie „AuthType Digest“, die eine sicherere Alternative zur Standardauthentifizierung bieten, indem sie eine Hash-Funktion verwenden, um das Senden von Passwörtern im Klartext zu vermeiden. 

Weitere Authentifizierungstypen

Hier sind weitere Authentifizierungstypen, die Sie in Ihrer Apache-Konfiguration verwenden können:

  1. Grundlagen des Authentifizierungstyps: Wie bereits erwähnt, verwendet die Basisauthentifizierung eine Base64-codierte Form des Benutzernamens und Passworts zur Authentifizierung.
  2. AuthType-Digest: Die Digest-Authentifizierung ist eine verbesserte Version der Basisauthentifizierung. Anstatt das Passwort im Klartext zu senden, verwenden Sie zur Verbesserung der Sicherheit eine kryptografische Hash-Funktion. Die Übertragung ist weiterhin im Header des HTTP-Anfragepakets enthalten, das Passwort selbst wird jedoch nicht im Klartext gesendet.
  3. AuthType-Formular: Mit der Formularauthentifizierung können Sie ein benutzerdefiniertes Anmeldeformular anstelle des Standard-Authentifizierungs-Popups verwenden. Benutzername und Passwort werden in ein Formular eingegeben, das an den Server gesendet wird.
  4. Authentifizierungstyp LDAP: Die LDAP-Authentifizierung ermöglicht es dem Apache-Server, Anmeldeinformationen anhand eines LDAP-Servers (Lightweight Directory Access Protocol) zu validieren. Dadurch können Sie Benutzernamen und Passwörter aus einem zentralen Verzeichnisdienst verwenden.
  5. Authentifizierungstyp OAuth: OAuth (Open Authorization) ist ein Autorisierungsprotokoll eines Drittanbieters. Mit der OAuth-Authentifizierung kann ein Server von einem Benutzer verlangen, dass er sich bei einem Dritten (Google, Facebook, Twitter usw.) anmeldet und die Anmeldeinformationen verwendet, um Zugriff auf geschützte Bereiche zu gewähren.
  6. Authentifizierungstyp SAML: SAML (Security Assertion Markup Language) ist ein XML-basiertes Protokoll für die Single-Sign-On-Authentifizierung. Die SAML-Authentifizierung ermöglicht die Integration mit Identitätsanbietern zur Verwaltung der Benutzerauthentifizierung und -autorisierung.

Diese Authentifizierungsarten bieten verschiedene Möglichkeiten, den Zugriffsschutz auf Ihrem Webserver zu implementieren. Abhängig von Ihren Anforderungen und der vorhandenen Infrastruktur können Sie den am besten geeigneten Typ auswählen. 

Auf die einzelnen Authentifizierungsarten gehen wir demnächst in separaten Artikeln ein.