Bei sensiblen Web-Applikation wie die für das Verwalten des Mailservers (z.B. postfixadmin) oder welche die Zugriff auf die Datenbanken haben (z.B. phpmyadmin) sollte man sich nicht nur auf die Sicherheit der Applikation verlassen und stattdessen zusätzlich eine Authentifizierung über den Webserver (.htaccess) vornehmen.
Hierzu gibt es grundsätzlich zwei Möglichkeiten: Authentifizierung über die IP-Adresse und über eine HTTP-Passwortabfrage.
Doch während die erstere den Nachteil hat unflexibel zu sein (z.B. kein Zugriff mehr wenn man mal von einem Internet-Cafe dringend darauf zugreifen muss), müsste man bei zweitem immer zweimal einloggen: Einmal über die HTTP-Authentifizierung und einmal über die Web-Applikation selbst.
Doch zum Glück lassen sich diese zwei Mechanismen kombinieren, so dass man bei bekannten IPs ohne vorgängige Passwort-Abfrage direkt zum Web-Login kommt und bei „fremden“ IPs die Möglichkeit hat nach einer zusätzlichen HTTP-Authentifizierung die Web-Applikation zu erreichen.
Eine entsprechende .htaccess könnte z.B. so aussehen:
# Access is either granted if the hostname is trusted, OR
# if password authentication succeeds (Satisfy Any)
#
# SYNTAX:
# "Allow from" can be single- or multi line, i.ex.:
# Allow from <host1> <host2>
# or:
# Allow from <host1>
# Allow from <host2>
Order deny,allow
Deny from all
Allow from myhost.example.org
Allow from 192.168.0.50
AuthType Basic
AuthName "Untrusted source IP access"
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
#Require group staff
require valid-user
Satisfy Any
Kommt man nun entweder mit dem Hostnamen „myhost.example.org“ oder der IP: „192.168.0.50“ daher, erreicht man direkt die Webseite; bei allen anderen Quell-IPs kommt stattdessen der HTTP-Password Dialog, wo man nach erfolgreicher Anmeldung weiter kommt.
Tipp: Dieses Konstrukt lässt sich ebenfalls auf nginx abbilden.
One thought on “apache: Authentifizierung wahlweise über IP oder HTTP-Auth”