SSO via apache kerberos pour nagios glpi centreon

Bonjour,

J’essaye de mettre en place un SSO via apache et kerberos dans le but de me connecter à des sites intranet sans avoir à taper mon login + mot de passe.

J’évolue dans un environnement :

  • Windows 2008R2 (pour le DC et KDC)
  • Debian lenny pour mon serveur Web (hébergeant les sites sur lesquels se connecter)
  • un client windows 7 (avec lequel j’essaie de me connecter aux sites intranet)

J’ai suivi plein de tuto par exemple:
grolmsnet.de/kerbtut/
xavier.dusart.free.fr/nagios/kerberos.html
acksyn.org/diary/?p=460
tuxlanding.net/authentificat … i-domaine/

[size=150]Passons maintenant aux choses sérieuses:[/size]
sur ma machine linux qui héberge les sites:

supervisiontest:~# ktutil

ktutil: rkt /etc/krb5.keytab
ktutil: l
slot KVNO Principal


1 6 HTTP/supervisiontest.groupe.net@GROUPE.NET
2 6 HTTP/supervisiontest.groupe.net@GROUPE.NET
3 6 HTTP/supervisiontest.groupe.net@GROUPE.NET
4 6 HTTP/supervisiontest@GROUPE.NET
5 6 HTTP/supervisiontest@GROUPE.NET
6 6 HTTP/supervisiontest@GROUPE.NET
ktutil: q

supervisiontest:~# kinit -k -t /etc/krb5.keytab HTTP/supervisiontest
kinit(v5): Client not found in Kerberos database while getting initial credentials
supervisiontest:~# kinit -k HTTP/supervisiontest
kinit(v5): Client not found in Kerberos database while getting initial credentials
supervisiontest:~# kinit -k HTTP/supervisiontest.groupe.net
kinit(v5): Key table entry not found while getting initial credentials
supervisiontest:~# kinit -k supervisiontest
kinit(v5): Key table entry not found while getting initial credentials
supervisiontest:~# kinit -k -t /etc/krb5.keytab supervisiontest
kinit(v5): Key table entry not found while getting initial credentials
supervisiontest:~# kinit supervisiontest
Password for supervisiontest@GROUPE.NET: (ça ne marche que pour lui)
supervisiontest:~#
supervisiontest:~# kinit supervisiontest.groupe.net
kinit(v5): Client not found in Kerberos database while getting initial credentials

ça ne marche donc que pour kinit supervisiontest (ou n’importe quel autre login court, existant dans l’AD)
j’ai refait ma keytab plusieurs fois car je pensais que ça devais venir de là… mais rien y fait!

j’ai réussi à me connecter à NAGIOS via kerberos lorsque dans /etc/apache2/httpd.conf KrbVerifyKDC est sur off et KrbMethodK5Passwd est sur on, ce qui n’est pas mon but… (car: 1) ça demande le mot de passe et 2) ça ne vérifie pas le ticket avec le kdc…)

[code]KrbVerifyKDC on | off

(set to on by default)

This option can be used to disable the verification tickets against local keytab to prevent KDC spoofing atacks. It should be used only for testing purposes. You have been warned. [/code]

[size=150]Ma config :[/size]

[code]/etc/krb5.conf :

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = GROUPE.NET
default_keytab_name = FILE:/etc/krb5.keytab
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
dns_lookup_realm = false
dns_lookup_kdc = false

[realms]
GROUPE.NET = {
kdc = admaster2k8.groupe.net
kdc = adslave2k8.groupe.net
master_kdc = admaster2k8.groupe.net
default_domain = groupe.net
admin_server = admaster2k8.groupe.net
}

[domain_realm]
.groupe.net = GROUPE.NET
groupe.net = GROUPE.NET
supervisiontest.groupe.net = GROUPE.NET

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}[/code]

[code]/etc/apache2/httpd.conf :

<Location /nagios>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd on
KrbAuthRealms GROUPE.NET
Krb5KeyTab /etc/krb5.keytab
require valid-user
KrbVerifyKDC off
KrbSaveCredentials off

LogLevel debug
[/code]

[code]
/etc/krb5kdc/kdc.conf

[kdcdefaults]
v4_mode = nopreauth
kdc_ports = 88,750
kdc_tcp_ports = 88

[realms]
GROUPE.NET = {
database_name = /etc/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
key_stash_file = /etc/krb5kdc/stash
kadmind_port = 749
kdc_ports = 88,750
max_life = 7d 0h 0m 0s
kdc_addrs = 172.17.17.1
}[/code]

Et voici ce que je retrouve dans mon log apache /var/log/apache2/error.log:

Quand on se connecte avec un login et un mdp correct sur l’interface web de NAGIOS :

Quand on se connecte avec un login ou un mdp incorrect sur l’interface web de NAGIOS :

N’importe quelle aide/question/conseil sera bienvenue… je désespère.

Merci.

Vous ne précisez pas les options de la commande ktpass utilisée pour généré le fichier /etc/krb5.keytab sur l’ActiveDirectory.

Le message d’erreur Client not found in Kerberos database signifie que le serveur ne connaît pas le SPN HTTP/supervisiontest.groupe.net@GROUPE.NET qui a été utilisé en option -princ de ktpass.

Une façon de le confirmer est de faire un login kinit avec un utilisateur et mot de passe connu, puis un kvno HTTP/supervisiontest.groupe.net. La commande doit répondre le même numéro de version que celui présenté par ktutil. On peut contrôler la présence du TGS dans le cache de l’utilisateur loggué avec klist -ef.

D’autres SPN “alias” peuvent être ajoutés ensuite par setspn -a HTTP/supervisiontest.groupe.net serviceAccountInAD sur l’ActiveDirectory et confirmés par kvno HTTP/supervisiontest côté Linux.

En cas de persistence de l’erreur Client not found in Kerberos database, il est possible que le SPN demandé soit en doublon dans l’ActiveDirectory suite à plusieurs tentatives avec des comptes différents. La commande setspn -X sur l’ActiveDirectory permet de les découvrir et de faire le ménage.

En utilisant l’enctype ‘rc4-hmac’, alors que Windows 2008R2 privilégie l’AES 256 ou 128 bits au MD5, j’ai constaté qu’il était nécessaire de forcer l’enctype côté Linux pour que les commandes kinit avec le SPN et le fichier keytab passent sans l’erreur Key table entry not found. Ces options sont à ajouter dans /etc/krb5.conf

default_tkt_enctypes = arcfour-hmac-md5
default_tgs_enctypes = arcfour-hmac-md5

Merci beaucoup pour votre réponse. :023

J’ai aussi de mon coté un peu de mal avec Kerberos, cela t’a permit de résoudre ton problème ?

Salut!
J’ai complètement lâché l’affaire pour le moment, ce n’est plus ma priorité.
Si jamais je m’y remet je ne manquerais pas de passer ici vous faire part de mes probables avancées.