guyom Posté(e) le 20 juillet 2011 Partager Posté(e) le 20 juillet 2011 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: http://www.grolmsnet.de/kerbtut/ http://xavier.dusart.free.fr/nagios/kerberos.html http://acksyn.org/diary/?p=460 http://www.tuxlanding.net/authentification-kerberos-avec-apache-dans-un-environnement-active-directory-multi-domaine/ Passons maintenant aux choses sérieuses: 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...) 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. Ma config : /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 } /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 </Location> LogLevel debug /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 } 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 : [Tue Jul 19 11:36:04 2011] [error] [client 172.17.44.12] failed to verify krb5 credentials: Server not found in Kerberos database Quand on se connecte avec un login ou un mdp incorrect sur l'interface web de NAGIOS : [Tue Jul 19 11:36:23 2011] [error] [client 172.17.44.12] krb5_get_init_creds_password() failed: Decrypt integrity check failed N'importe quelle aide/question/conseil sera bienvenue... je désespère. Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
denicfr Posté(e) le 5 septembre 2011 Partager Posté(e) le 5 septembre 2011 Bonjour, Je ne sais pas si ton problème a été résolu ou pas. A priori, si le kinit supervisiontest fonctionne c'est que la configuration Kerberos est OK. En revanche, le kinit -k -t /etc/krb5.keytab HTTP/supervisiontest aurait du marcher. ce qui montre que ton keytab n'est pas bon. Regarde cette doc, elle me semble super complète : http://irp.nain-t.net/doku.php/320kerberos:50_apache Perso, lorsque je fais rajouter un utilisateur pour un SSO par mes admins Windows, je leur demande de cocher dans les options de l'utilisateur "autoriser la délégation ". Regarde aussi ta commande de keytab, perso j'utilise : Ajouter le user nommé host Ktpass –princ HTTP/host.domaine@DOMAINE –mapuser DOMAINE\host –pass password –out krb5.keytab /crypto rc4-hmac-nt /kvno 3 –ptype KRB5_NT_SRV_HST AH! Il faut aussi que si tu utilises des virtual host dans Apache, il faut que ton virtual host soit dans le DNS en A et pas en CNAME (Alias) et faire bien gaffe que le PTR soit OK (le reverse lookup). J'ai monté récemment 3 serveurs en SSO Apache sous CentOS dans un environnement AD 2008 R2. Ca marche bien ! Bon courage. Lien vers le commentaire Partager sur d’autres sites More sharing options...
guyom Posté(e) le 5 septembre 2011 Auteur Partager Posté(e) le 5 septembre 2011 Je te remercie beaucoup pour ta réponse! :) Je suis actuellement en vacances donc je me repencherais dessus en octobre. Je donnerais des nouvelles ici. Merci encore! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.