User Authentifizierung an ADS/Kerberos
Beispiel umgesetzt auf Debian Squeeze und w2003 DC.
Apache Version 2.2.16 / KDC (Windows DC)
entsprechende Pakete nachinstallieren:
# apt-get install libapache2-mod-auth-kerb krb5-clients krb5-user
Serviceuser im AD erstellen.
Account Options:
Usermapping auf Servername mittels SPN auf Windows DC einrichten: (setspn.exe muss über Supportools installiert sein)
C:\>setspn -a HTTP/<servernameomd>.<DOMAINNAME> <serviceaccountname> C:\>setspn -a HTTP/<servernameomd> <serviceaccountname>
Kontrolle ob Mapping erfolgte:
C:\>setspn -l <serviceaccountname>
Sollte folgende Ausgabe erzeugen:
Registered ServicePrincipalNames for CN=<servernameomd>,OU=Service,OU=Benutzer,OU=<Standort>,OU=BS,DC=domain,DC=local:
HTTP/<servernameomd>
HTTP/<servernameomd>.<DOMAINNAME>
Keberos Client anpassen, /etc/krb5.conf nach Anleitung http://support.microsoft.com/?scid=kb%3Ben-us%3B555092&x=10&y=15
[libdefaults]
default_realm = <DOMAINNAME>
allow_weak_crypto = yes
[realms]
<DOMAINNAME> = {
admin_server = dc1.<DOMAINNAME>
admin_server = dc2.<DOMAINNAME>
kdc = dc1.<DOMAINNAME>
kdc = dc2.<DOMAINNAME>
}
[domain_realm]
servernameomd.<DOMAINNAME> = <DOMAINNAME>
Kerberos Clientverbindung testen:
# kinit username # Password for username@<DOMAINNAME>: xxxxxxxx
Ticketcache anzeigen lassen:
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: username@<DOMAINNAME> Valid starting Expires Service principal 05/03/07 10:11:16 05/03/07 20:11:16 krbtgt/<DOMAINNAME>@<DOMAINNAME> Kerberos 4 ticket cache: /tmp/tkt0 klist: You have no tickets cached
Ticketcache löschen:
# kdestroy
Aktuelle KVNO für gemapten User ermitteln:
# kvno HTTP/<servernameomd>.<domainname>
Keytab erzeugen:
ktutil ktutil: addent -password -p HTTP/<servernameomd>.<domainname> -k <zuvor ermittelte kvno> -e rc4-hmac ktutil: addent -password -p HTTP/<servernameomd> -k <zuvor ermittelte kvno> -e rc4-hmac ktutil: wkt /opt/omd/sites/<sitename>/etc/apache/krb5.keytab ktutil: exit
Falls man diesen Vorgang wiederholt, werden neue Keytabs an die Datei angehangen! Somit bleiben inkorrekte Einträge erhalten, also /opt/omd/sites/<sitename>/etc/apache/krb5.keytab vorher löschen.
Anzeige Keytab-Inhalt:
# klist -ke /opt/omd/sites/<sitename>/etc/apache/krb5.keytab
Sollte so ähnlich aussehen:
Keytab name: WRFILE:/opt/omd/sites/<sitename>/etc/apache/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 2 HTTP/<servernameomd>.<domainname>@<DOMAINNAME> (ArcFour with HMAC/md5) 2 HTTP/<servernameomd>@<DOMAINNAME> (ArcFour with HMAC/md5)
Rechte für keyfile anpassen.
# chmod 400 /opt/omd/sites/<sitename>/etc/apache/krb5.keytab # chown www-data.www-data /opt/omd/sites/<sitename>/etc/apache/krb5.keytab
Vor dem Test ist das aktuelle Ticket zu zerstören:
# kdestroy
Test mit keyfile:
# kinit -k -t /opt/omd/sites/<sitename>/etc/apache/krb5.keytab HTTP/<servernameomd>.<domainname>
# klist -e
sollte folgende Ausgabe ergeben:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/<servernameomd>.<domainname>@<DOMAINNAME>
Valid starting Expires Service principal
04/05/11 12:31:10 04/05/11 22:31:10 krbtgt/<DOMAINNAMAE>@<DOMAINNAME>
renew until 04/06/11 12:31:10
Es kann aufgrund Replikationsmechanismen etwas dauern ehe ein positives Ergebnis erzeugt wird.
Bitte deshalb diesen Befehl bei Fehlern, eine Stunde später erneut testen.
Kerberos Auth in OMD aktivieren, dazu conf Datei für Modul erzeugen:
/opt/omd/sites/<sitename>/etc/apache/conf.d/mod_auth_kerb.conf
<IfModule !mod_auth_kerb.c> LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so </IfModule>
Auth. anpassen, dazu die Datei /opt/omd/sites/<sitename>/etc/apache/conf.d/auth.conf anpassen.
AuthName "Kerberos Login" AuthType Kerberos Krb5Keytab etc/apache/krb5.keytab KrbAuthRealm <DOMAINNAME> KrbServiceName HTTP KrbMethodNegotiate on KrbMethodK5Passwd on Require valid-user
Apache neustarten:
omd restart apache
Extras –> Internetoptionen –> Reiter „Erweitert“
Die integrierte Windows-Authentifizierung muß aktiviert sein.
in die Adresszeile „about:config“ eingeben.
In das Filter-Feld den Ausdruck network.negotiate-auth.trusted-uris eingeben.
auf Feld doppelklicken und den hostnamen (FQDN) eingeben, z.B. <servernameomd>.<domainname>
Firefox neu starten !
Da die Benutzernamen durch den Domainenzusatz etwas länger werden muß evtl. das Feld user_name in der tabelle perfdata_users angepasst werden
# ALTER TABLE perdata_users MODIFY user_name varchar(100) NOT NULL;
In NagiosQL 2.x fehlt beim match auf den Usernamen das @. Daher kommt es beim Speichern zu einer Fehlermeldung. Um das “@“ zuzulassen, muß folgendes eingetragen werden:
in der NagiosQL Tabelle „tbl_language“ in der Cat: „formchecks“ keyword: „fill_specials“:
alt: [^a-zA-Z0-9_-] neu: [^@.a-zA-Z0-9_-]
Das natürlich für die Sprachen, die verwendet werden (default english und deutsch)
Mittels SQL Statement:
UPDATE `db_nagiosql_v2`.`tbl_language` SET `lang_de` = '[^@.a-zA-Z0-9_-]', `lang_en` = '[^@.a-zA-Z0-9_-]' WHERE `tbl_language`.`id` =281 LIMIT 1 ;
— vicodas 2008/01/31 13:56