Ziel dieses How-tos ist es, das Mitarbeiter, die mit dem Internet Explorer bzw. Firefox eine Intranet-Seite Abrufen, Authentifiziert werden. Es soll allerdings keine Extra Passwortabfrage kommen sondern bloß überprüft werden, ob sich der User zuvor korrekt an der Windows Domäne angemeldet hat.
Hierzu benutzen wir das Modul mod_auth_kerb, dass automatisch die Credentials vom Browser bezieht.
Integration des Apache Servers ins AD
Das Vorgehen hierfür habe ich in diesem Artikel bereits beschrieben.
Anlegen der Keypass Datei
Am besten legt man sich erstmal einen Service-Benutzer im AD an.
Mit dem Tool “ktpass”, dass man im Windows Ressource Kit findet, wird nun mit dem gerade angelegten Benutzer eine MIT-kompatibles KEYTAB-Datei erzeugt.
1 2 3 4 5 6 7 | ktpass -princ HTTP/debian.example.org@EXAMPLE.ORG -mapuser serviceuser -crypto RC4-HMAC-NT -pass serviceuserpassword -ptype KRB5_NT_PRINCIPAL -mapop set -out c:\tmp\debian_rc4.keytab |
Ich habe mit hierfür eine batch datei erstellt, um Schreibfehler zu vermeiden. Man sie hier herunterladen.
Kontrolle des SPN
Das Programm KTPASS im vorigen Schritt bindet sowohl den Service Principal Name an das Konto als auch das Kennwort. Mittels ADSIEDIT können Sie gut prüfen, ob diese Änderungen erfolgt sind:
Kopieren Sie anschließend (z.B. mit WinSPC) das ketab file auf das Linuxsystem in den Ordner /etc/apache2/keytab (evtl. anlegen).
Festlegen der Dateirechte:
1 2 | chown nobody:nobody debian_rc4.keytab chmod 400 debian_rc4.keytab |
Installieren und einbinden des Moduls
Unter debian denkbar einfach:
1 | debian:~# aptitude install libapache2-mod-auth-kerb |
Es wird auch direkt in apache eingebunden.
Die Konfiguration der Seite
Man kan die folgenden Einstellungen an verschiedenen Stellen des Apache einfügen. Z.b. in Definition der Seite unter /etc/apache2/sites-enabled oder auch mit Hilfe einer .htaccess datei. (Nicht vergessen “AllowOverride All” zu setzen)
1 2 3 4 5 6 7 8 9 10 11 | <Directory "/geheim"> Allow from all AuthName "Kerberos Anmeldung" AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP/debian.example.org Krb5KeyTab /etc/httpd/conf/debian_rc4.keytab KrbMethodNegotiate On KrbMethodK5Passwd Off require valid-user </Directory> |