M 4.195 Konfiguration der Zugriffssteuerung beim Apache-Webserver
Verantwortlich für Initiierung: Leiter IT, IT-Sicherheitsmanagement
Verantwortlich für Umsetzung: Administrator
Für die Einrichtung von Zugriffsbeschränkungen auf den Apache-Webserver oder einzelne Bereiche des Webangebots gibt es beim Apache-Webserver verschiedene Möglichkeiten, die teilweise bereits im Webserver-Programm selbst implementiert sind, teilweise über Erweiterungsmodule eingebunden werden können. Zwei verbreitete Arten der Zugriffssteuerung sind die Beschränkung des Zugriffs auf bestimmte IP-Adressbereiche oder Domains (beispielsweise im Intranet) und die Abfrage eines Benutzernamens und eines Passworts beim Zugriff auf bestimmte Ressourcen (siehe auch M 4.176 Auswahl einer Authentisierungsmethode für Webangebote).
Beschränkungen auf IP-Adressen und Domains
Das Modul mod_access bietet die Möglichkeit, den Zugriff auf den Webserver oder auf Teilbereiche des Webangebots auf bestimmte IP-Adressen oder Domains zu beschränken. Beispielsweise würde durch
-
<Directory /var/www/htdocs/Abteilung1 >
Order Deny,Allow
Deny from all
Allow from 10.0.0.0/24
</Directory>
der Zugriff auf das Verzeichnis Abteilung1 nur solchen Clients erlaubt, die eine IP-Adresse der Form 10.0.0.x haben. Analog kann der Zugriff mittels
-
Allow from bund.de
für alle Anfragen aus der Domain bund.de erlaubt werden. Diese Art von Zugriffsbeschränkungen bieten allerdings nur einen schwachen Schutz vor unbefugtem Zugriff, da sie durch IP-Spoofing oder DNS-Spoofing relativ leicht umgangen werden können.
Zusätzlich bietet mod_access weitere Möglichkeiten für Zugriffsbeschränkungen, etwa basierend auf bestimmten HTTP-Header-Zeilen. Da HTTP-Header aber sehr leicht mitgelesen oder gefälscht werden können, eignet sich dies nur sehr beschränkt für Zugriffssteuerung.
Benutzernamen und Passwörter
Die HTTP-Basic-Authentisierung ist beim Apache-Webserver direkt im "Kern" des Webserver-Programms implementiert. Dabei wird beispielsweise der Zugriff auf ein Verzeichnis folgendermaßen passwortgeschützt:
-
<Directory /var/www/htdocs/vertraulich>
AuthType Basic
AuthName "Interne Dokumente"
AuthUserFile /var/auth/wwwusers
Require valid-user
</Directory>
In diesem Fall muss ein Benutzer, der auf dieses Verzeichnis zugreifen will, einen Benutzernamen und ein Passwort angeben, die dann mit den Benutzername-Passwort-Kombinationen in der Datei /var/auth/wwwusers verglichen werden. Der Zugriff wird für alle gültigen Kombinationen gestattet. Alternativ kann der Zugriff mit der Direktive
-
Require user Mitarbeiter
der Zugriff nur für den Benutzer "Mitarbeiter" gestattet werden.
Dabei ist die Datei /var/auth/wwwusers eine Datei im .htpasswd-Format, die ähnlich einer normalen passwd-Datei unter Unix aufgebaut ist. htpasswd-Dateien können mit dem Programm htpasswd erzeugt und gepflegt werden, das zum Apache-Paket gehört. Sie enthalten Usernamen und die Hashwerte der Passwörter. Aus diesem Grund dürfen .htpasswd-Dateien niemals innerhalb des WWW-Dateibaums gespeichert werden, da sie sonst von Angreifern heruntergeladen werden könnten. Offline ist es dann leicht, die Passwörter zu knacken, da die Passwörter nur mit dem normalen, veralteten Unix crypt-Verfahren gehasht werden.
Neben der Zugriffskontrolle auf Verzeichnisse können analog auch URL-Bereiche mit der <Location> Direktive geschützt werden.
Weitere Authentisierungsmechanismen sind beim Apache-Webserver über Erweiterungsmodule realisiert. Dies sind unter anderem:
- mod_auth_ldap und mod_auth_dbm: Diese Module erlauben die Speicherung von Benutzernamen und Passwörtern für die HTTP-Basic-Authentisierung auf einem LDAP-Server bzw. in einer DBM-Datei.
- mod_auth_digest: Dieses Modul implementiert das Digest-Authentisierungsverfahren.
- mod_access: Dieses Modul realisiert die Zugriffssteuerung auf der Basis von IP-Adressen, Client-Hostnamen und anhand einiger anderer Kriterien.
- mod_auth_anon: Dieses Modul erlaubt eine Zugriffsbeschränkung analog zum anonymen Zugriff auf ftp-Server via HTTP-Basic. Dabei wird ein fest vorgegebener Benutzername abgefragt (etwa "anonymous") und der Besucher muss eine E-Mailadresse als Passwort angeben.
Da HTTP ein Klartext-Protokoll ist, bietet die Benutzerauthentisierung über HTTP-Basic nur sehr schwachen Schutz vor unbefugtem Zugriff. Daher dürfen beispielsweise keinesfalls solche Benutzernamen und Passwörter zur Authentisierung über HTTP-Basic verwendet werden, die auch für die Anmeldung an internen Systemen benutzt werden.
Sollen (etwa zur Realisierung einer Art "Single-Sign-On") Benutzernamen und Passwörter anderer Systeme für die Benutzerauthentisierung beim Apache-Webserver verwendet werden, so muss die Übertragung durch die Verwendung von SSL (siehe auch M 5.107 Verwendung von SSL im Apache-Webserver) gesichert werden.
Einsatz von SSL
Mit dem Modul mod_ssl kann SSL beim Apache-Webserver eingesetzt werden. Neben der Verschlüsselung der Verbindung und der Authentisierung des Servers gegenüber dem Client mittels Server-Zertifikat bietet mod_ssl auch die Möglichkeit, mittels Client-Zertifikaten Zugriffsbeschränkungen zu implementieren. Die Apache-Dokumentation enthält eine größere Zahl gut dokumentierter Beispiele für solche Konfigurationen.
Ergänzende Kontrollfragen:
- Sind die Möglichkeiten und Einschränkungen der verschiedenen Methoden zur Zugriffssteuerung bekannt?