Ein Verzeichnis ist ein Ordner auf dem Webserver, der Dateien strukturiert; der Verzeichnisschutz verhindert, dass Unbefugte diesen Inhalt abrufen oder durchstöbern können.
Was bedeutet das?
Jeder Webserver organisiert seine Dateien in einer hierarchischen Ordnerstruktur, genau wie ein lokales Dateisystem. Ein Verzeichnis enthält HTML-Dateien, Bilder, Skripte oder andere Ressourcen. Unter Apache und Nginx wird dieser Ordnerbaum direkt auf den Pfad in der URL abgebildet: /var/www/html/bilder/ ist im Browser als https://example.de/bilder/ erreichbar, sofern kein Schutz eingerichtet ist.
Der Verzeichnisschutz (englisch: Directory Protection) schränkt diesen Zugriff ein. Die einfachste Methode unter Apache ist eine .htaccess-Datei mit einem zugehörigen .htpasswd-Passwort-Hash. Nginx nutzt dafür die Direktiven auth_basic und auth_basic_user_file in der Server-Konfiguration. Beide Ansätze zeigen dem Browser eine HTTP-401-Abfrage, die erst nach Eingabe eines gültigen Benutzernamens und Passworts passiert.
Daneben gibt es einen oft übersehenen zweiten Aspekt: das Directory Listing. Findet der Apache-Webserver in einem Verzeichnis keine Indexdatei (z. B. index.php), zeigt er standardmäßig eine Dateiliste an. Für Angreifer ist das ein einfacher Weg, Dateinamen, Plugin-Versionen und Konfigurationsdateien zu sehen. Mit Options -Indexes in der .htaccess schalten Sie das Listing global ab.
Schritt-für-Schritt: htaccess und htpasswd einrichten
Um ein Verzeichnis auf einem Apache-Server mit Benutzername und Passwort zu schützen, benötigen Sie zwei Dateien. Legen Sie zunächst die Passwort-Datei an. Auf der Kommandozeile erzeugen Sie einen neuen Eintrag mit dem Befehl htpasswd -c /etc/apache2/.htpasswd benutzername. Das Flag -c erstellt die Datei neu; für weitere Benutzer lassen Sie es weg. Apache speichert das Passwort als bcrypt-Hash, nie im Klartext.
Anschließend legen Sie im zu schützenden Verzeichnis eine .htaccess-Datei mit folgendem Inhalt an:
AuthType Basic
AuthName "Zugriff nur fuer autorisierte Personen"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Options -Indexes
Die Zeile Options -Indexes deaktiviert gleichzeitig das Directory Listing. Speichern Sie die Datei und rufen Sie das Verzeichnis im Browser auf. Der Browser zeigt sofort das Login-Fenster an.
Typische Anwendungsfälle
Drei Szenarien begegnen Betreibern von WordPress-Seiten besonders häufig:
Staging-Umgebung: Sie entwickeln eine neue Version Ihrer Website auf einer separaten Subdomain wie staging.beispiel.de. Diese Seite soll für Besucher unsichtbar bleiben, damit unveröffentlichte Inhalte nicht öffentlich zugänglich sind und Suchmaschinen die unfertige Version nicht indexieren. Ein einfacher htaccess-Schutz hält alle außer dem Entwicklungsteam fern.
WordPress-Admin-Bereich: Das Verzeichnis /wp-admin/ ist ein beliebtes Angriffsziel für automatisierte Brute-Force-Attacken. Eine zusätzliche HTTP-Authentifizierung vor dem WordPress-Login legt eine zweite Sicherheitsebene an, die rein automatisierte Angriffe wirkungsvoll stoppt, weil sie kein gültiges htpasswd-Passwort kennen.
Mitgliederbereich ohne Plugin: Für kleine Websites ohne vollständiges Membership-Plugin schützt ein Verzeichnisschutz einen Download-Ordner mit Ressourcen, die nur zahlenden Kunden zugänglich sein sollen. Diese Lösung erfordert kein zusätzliches WordPress-Plugin und ist serverseitig vollständig unabhängig von der CMS-Logik.
Beispiel aus der Praxis
Eine WordPress-Installation liegt unter /var/www/html/. Das Verzeichnis /wp-content/uploads/ enthält alle hochgeladenen Bilder und Dokumente. Ohne Schutz könnte jemand durch die Ordner navigieren und vertrauliche PDF-Dokumente herunterladen, die eigentlich nur für eingeloggte Nutzer gedacht sind. Durch das Ablegen einer .htaccess mit Options -Indexes und einer IP-Einschränkung für das /wp-admin/-Verzeichnis schließen Sie diese Lücken zuverlässig.
Sicherheitshinweis: HTTPS ist Pflicht
Der htaccess-Passwortschutz überträgt Benutzernamen und Passwort im HTTP-Basic-Auth-Format. Ohne HTTPS sendet der Browser diese Zugangsdaten bei jeder Anfrage im Klartext, was in offenen WLANs ein erhebliches Risiko darstellt. Richten Sie den Verzeichnisschutz daher grundsätzlich nur auf Domains ein, die über ein gültiges SSL-Zertifikat und eine HTTPS-Weiterleitung verfügen. Laut Mozilla MDN Web Docs sollte HTTP Basic Authentication ausschließlich über verschlüsselte Verbindungen eingesetzt werden.
Häufiger Fehler
Viele Einsteiger schützen nur die Anmeldeseite /wp-login.php, vergessen aber das Verzeichnis /wp-admin/ selbst. Ein Angreifer kann auch über direkte Aufrufe von Skripten innerhalb von /wp-admin/ Schwachstellen ausnutzen. Schränken Sie daher das gesamte Verzeichnis auf bekannte IP-Adressen ein, wenn Ihr Zugang von festen Standorten erfolgt. Tragen Sie dazu folgende Zeilen in die .htaccess im Verzeichnis /wp-admin/ ein: Order Deny,Allow, Deny from all, Allow from 203.0.113.0 (Ihre IP). Für wechselnde IP-Adressen ist ein HTTP-Passwortschutz die praktikablere Alternative.
Verwandte Begriffe
- Htaccess — Apache-Konfiguration per Ordnerdatei
- SSL — Verschlüsselte Verbindungen mit HTTPS
- Sicherheit — WordPress-Websites absichern
- Hosting — Webserver und Speicherplatz mieten
- FTP — Dateien auf den Server übertragen
- Staging — Testumgebung vor dem Live-Gang
- Brute Force — Automatisierte Login-Angriffe