User Authentifizierung an ADS/Kerberos
Beispiel umgesetzt auf Debian Etch.
Auch für W2K Domaincontroller
Apache Version 2.2.3 / KDC (Windows DC)
entsprechende Pakete nachinstallieren:
# apt-get install libapache2-mod-auth-kerb # apt-get install krb5-clients # apt-get install 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 = DOMAIN.LOCAL
[realms]
DOMAIN.LOCAL = {
admin_server = dc.domain.local
kdc = dc.domain.local
}
[domain_realm]
nagios.domain.local = DOMAIN.LOCAL
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)
keyfile auf dc erzeugen, hostname nur reiner hostname (FQDN) nicht evtl. Alias verwenden:
C:\>ktpass -princ HTTP/nagios.domain.local@DOMAIN.LOCAL -mapuser krb5nagios -crypto DES-CBC-MD5
-ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass passwort -out C:\http_nagios.krb5keytab
Auf einem W2K Server die Supporttools installieren. Im Ordner „Programme\Support Tools“ findet sich dann das ktpass Tool
erzeugte Datei nach apache Server kopieren.
Wichtig, dieses nur eimal ausführen, da die Keynummer hochgezählt wird.
Falls Ihr diesen Befehl ein zweites mal ausführt, bitte auch das erzeugte Keyfile neu auf den Webserver kopieren.
Rechte auf kopiertes File setzen:
# chmod 400 /etc/apache2/http_nagios.krb5keytab # chown www-data:www-data /etc/apache2/http_nagios.krb5keytab
keyfile testen:
# kinit -k -t /etc/apache2/http_nagios.krb5keytab HTTP/nagios.domain.local # klist -e
muss das gecachte Ticket anzeigen
danach Cache wieder löschen
# cache löschen # kdestroy
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