3.3.9 Beispiel Zugangsschutz
Ein typisches Beispiel, um Ihren Server in einfacher Weise zu schützen, ist die Konfiguration eines passwortbasierten Zugangsschutzes. Dieser Schutz ist nicht sehr sicher, aber er verhindert, dass "robots" auf die Seite kommen und Schwachstellen (z.B. in Formularfeldern) ausprobieren können.
Wichtig
Bitte konfigurieren Sie Ihren Server mit Zugangsschutz, damit die kommende PHP-Programmierung gefahrlos durchgeführt werden kann.
Für den Apache gibt es viele Arten des Zugangsschutzes. Hier wird ein einfach zu realisierender Zugangsschutz gewählt. Doch zuerst muss überlegt werden, welche Dokumente der Apache-Webserver überhaupt an einen Client ausliefern kann.
Der Zugangsschutz soll für alle Dokumente gelten, die über den Apache zur Verfügung gestellt werden. Mit der Direktive DocumentRoot wird das "Root-Verzeichnis" angegeben. Unterhalb dieses Verzeichnisses können alle Dokumente per Client Request angefragt werden. Aber beim Apache sind Links in andere Verzeichnisse möglich, sofern diese mit der Direktive Options FollowSymLinks erlaubt werden. Es reicht also nicht, wenn man den Zugangsschutz auf der Ebene DocumentRoot einrichtet und gleichzeitig FollowSymLinks zulässt.
Konfigurationsanweisungen in der apache2.conf
In der apache2.conf steht folgender Abschnitt, der sich auf alle Verzeichnisse des Servers bezieht und sehr sinnvoll ist:
- Durch
AllowOverride None
werden.htaccess
-Dateien verboten (sofern sie in Unterverzeichnissen nicht explizit wieder zugelassen werden). - Durch
Require all denied
wird der Zugriff komplett gesperrt.
Anschließend gibt es in der apache2.conf Direktiven, die sich auf ein Unterverzeichnis beziehen und damit die oben genannten Regeln aufheben.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- Durch
AllowOverride None
werden auch hier alle.htaccess-Dateien
verboten, was an dieser Stelle überflüssig ist, da dieses Verbot bereits auf einer höheren Verzeichnisebene erfolgte. - Durch
Require all granted
wird der Zugriff komplett geöffnet. Es sind also prinzipiell alle Dokumente unterhalb von/var/www/
abrufbar. Hier muss also der Zugangsschutz ansetzen.
Zugangsschutz einrichten
Der neue Abschnitt mit dem Zugangsschutz soll wie folgt aussehen:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "Mein Zugangsschutz"
AuthUserFile "/etc/apache2/htpass"
Require user IhrUserName
</Directory>
AuthType
gibt die generelle Art des Schutzes an. Wenn die Seite aufgerufen wird, erzeugt der Browser ein Fenster für eine Passwortabfrage.AuthName
ist für den Text zuständig, der in dem Fenster für die Passwortabfrage angezeigt wird. Hier können Sie (fast) beliebigen Text eingeben.AuthUserFile
enthält die Angabe der Passwortdatei.Require user IhrUserName
wird nun, gegenüber den ursprünglichen Einstellungengranted
, geändert inuser
und, mit der Eingabe eines Nutzernamens (bitte ändern SieIhrUserName
in einen sinnvollen Nutzernamen), wird der Zugriff entsprechend eingeschränkt. Wird anstelle eines Nutzernamensvalid-user
angegeben, so haben alle Nutzer, die in der Passwortdatei eingetragen sind, Zugriffsrechte mit ihrem eigenen Passwort.
Passwortdatei anlegen und Passwort festlegen
Nun muss ein Passwort für den angegebenen Nutzer erstellt werden. Hierzu gibt es das Linux-Kommando htpasswd -cb passwdfile username
. Also in der Kommandozeile in das Verzeichnis /etc/apache2
wechseln und dort den Befehl eingeben:
Anschließend den Webserver neu starten und die Webseite aufrufen. Dann sollte ein Fenster für die Eingabe des Passwortes sichtbar werden.