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
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@DOMAIN.LOCAL: xxxxxxxx
Ticketcache anzeigen lassen:
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: username@DOMAIN.LOCAL Valid starting Expires Service principal 05/03/07 10:11:16 05/03/07 20:11:16 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL Kerberos 4 ticket cache: /tmp/tkt0 klist: You have no tickets cached
Ticketcache löschen:
# kdestroy
Serviceuser im AD erstellen (hier krb5nagios)
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>
Kerberos Auth in Vhost
/etc/apache2/conf.d/nagios2.conf
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthType Kerberos
KrbAuthRealms DOMAIN.LOCAL
KrbServiceName HTTP
Krb5Keytab /etc/apache2/http_nagios.krb5keytab
KrbMethodNegotiate on
KrbMethodK5Passwd off
Require valid-user #oder entsp. Usernamen z.B. username@DOMAIN.LOCAL
</Directory>
Rewrite Rule, damit FQDN Eingabe im Browser nicht notwendig ist
RewriteEngine On
RewriteCond %{HTTP_HOST} ^HOSTNAME$ [NC]
RewriteRule ^(.*)$ http://HOSTNAME.DOMAIN.LOCAL$1 [R=301,L]
— maeces 2009/12/19 13:28
Apache neustarten:
/etc/init.d/apache2 restart
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. nagios.domain.local
Firefox neu starten !
Beim Aufruf im Browser bitte immer den VOLLEN FQDN angeben, ansonsten kann dies nicht richtig auf das Keyfile gemapt werden..
Zwingender FQDN Aufruf im Browser wird jetzt durch Rewrite Rule abgefangen — maeces 2009/12/19 13:28
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