Inhaltsverzeichnis

Kerberos Authentifizierung

User Authentifizierung an ADS/Kerberos
Beispiel umgesetzt auf Debian Squeeze und w2003 DC.

Systemvoraussetzungen

Apache Version 2.2.16 / KDC (Windows DC)

entsprechende Pakete nachinstallieren:

# apt-get install libapache2-mod-auth-kerb krb5-clients krb5-user

Konfiguration

Kerberos

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

Key für Auth. auf KDC erstellen

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>

Apache

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

Browseranpassungen

  1. Internetexplorer

Extras –> Internetoptionen –> Reiter „Erweitert“

Die integrierte Windows-Authentifizierung muß aktiviert sein.

  1. Firefox ab 1.x

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 abgefangenmaeces 2009/12/19 13:28

Perfparse

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;

NagiosQL

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