Aller au contenu

SSO via apache kerberos pour nagios glpi centreon


guyom

Messages recommandés

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

  • 1 mois après...

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...