Bonjour,

après plusieurs jours de recherche et de différents tests, je me tourne vers vous pour tenter de trouver une solution à mon problème. (NB : c'est pour ma collectivité et non à des fins personnelles)

J'ai suivi ce tutorial pour faire mes différentes configurations mais sans succès.
J'ai un serveur Web avec client Kerberos (evf1) sur mon LAN et un cluster de DC dont un noeud en 2008 R2 sur lequel je fais mes manips (ktpass en particulier), je le nommerai DC2008. Je noterai mon REALM C.I et mon DOMAINE CI. Je ne parlerai pas de la conf Apache pour le moment car dès les tests Kerberos ça foire.

Pré-requis :
- je dispose d'un cluster de DC dont un en 2008 R2, sur celui-ci j'ai créé le compte krb5-ezv
- je dispose d'un serveur Red Hat 6.6 sur lequel un client Kerberos et Apache sont installés
- evf1 est bien renseigné dans le DNS avec également l'entrée inverse (PTR)
- le service ntpd d'evf1 fait correctement son travail, l'horloge est bien à l'heure

Installation :
- côté DC2008, ras, les tools existent déjà
- côté evf1, les packages nécessaires sont bien installés (y compris le module mod-auth-kerb)

Configuration :
- Génération de la clé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\admin>ktpass -princ HTTP/evf1.c.i@C.I -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapuser krb5-ezv -pass password -out c:\temp\krb5.keytab
Targeting domain controller: DC2008.c.i
Successfully mapped HTTP/evf1.c.i to krb5-ezv.
Password succesfully set!
Key created.
Output keytab to c:\temp\krb5.keytab:
Keytab version: 0x502
keysize 66 HTTP/evf1.c.i@C.I ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x31df265162983e37)
 
C:\Users\admin>setspn -L krb5-ezv
Noms ServicePrincipalName inscrits pour CN=krb5-ezv,CN=Users,DC=c,DC=i:
        HTTP/evf1.c.i
- Copie du fichier et modification des droits :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
chown apache:root /etc/krb5.keytab
chmod 640 /etc/krb5.keytab
- /etc/resolv.conf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
[root@evf1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search c.i
nameserver XXX.XXX.XXX.XXX
[root@evf1 ~]# nslookup evf1
Server:         XXX.X.XXX.X
Address:        XXX.X.XXX.X#53
 
Name:   evf1.c.i
Address: YY.YYY.Y.YY
- /etc/krb5.conf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[libdefaults]
        default_realm = C.I
        ticket_lifetime = 24000
        default_keytab_name = FILE:/etc/krb5.keytab
        dns_lookup_realm = true
        dns_lookup_kdc = false
 
 
[realms]
        C.I = {
                kdc = DC2008
                admin_server = DC2008
        }
 
[domain_realm]
        .c.i = C.I
        c.i = C.I
 
[appdefaults]
        pam = {
                debug = false
                ticket_lifetime = 36000
                renew_lifetime = 36000
                forwardable = true
                krb4_convert = false
        }
- Validation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
[root@evf1 ~]# kinit krb5-ezv@C.I
Password for krb5@C.I:
[root@evf1 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: krb5-ezv@C.I
 
Valid starting     Expires            Service principal
04/09/15 13:45:40  04/09/15 20:25:40  krbtgt/C.I@C.I
puis commande kdestroy.

Jusqu'ici tout va bien, c'est à l'étape suivante que les choses se gâtent.
- Validation kvno :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[root@evf1 etc]# kinit krb5-ezv
Password for krb5-ezv@C.I:
[root@evf1 etc]# kvno HTTP/evf1.c.i@C.I
kvno: Server not found in Kerberos database while getting credentials for HTTP/evf1.c.i@C.I
- Test supplémentaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
[root@evf1 etc]# ktutil
ktutil:  rkt /etc/krb5.keytab
ktutil:  l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    3  HTTP/evf1.c.i@C.I
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[root@evf1 etc]# kinit -k -t /etc/krb5.keytab HTTP/evf1.c.i@C.I
kinit: Client not found in Kerberos database while getting initial credentials

Voilà toutes les infos dont je dispose sur ma configuration Kerberos. J'espère que vous allez pouvoir m'aider et trouver pourquoi l'authentification du service ne fonctionne pas.


EDIT 1 : je ne comprends pas. J'ai ré-utilisé un fichier keytab (kerb5.ktab) d'il y a une semaine et la commande kvno fonctionne. Malheureusement je ne vois pas ce que j'avais pu faire de différent sur la génération de celui-ci (et puis avec tous les tests que j'ai pu faire....). En tout cas, il y a une légère différence de contenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@evf1 ~]# klist -k /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   4 HTTP/evf1@C.I
[root@evf1 ~]# klist -k /etc/kerb5.ktab
Keytab name: FILE:/etc/kerb5.ktab
KVNO Principal
---- --------------------------------------------------------------------------
   4 HTTP/evf1@C.I
   4 HTTP/evf1@C.I
   4 HTTP/evf1@C.I
   4 HTTP/evf1@C.I
   4 HTTP/evf1@C.I
Je voudrais pouvoir comprendre cette différence afin de pouvoir me constituer une doc fiable pour reproduire les manipulations dans le futur sachant que le compte qui avait été utilisé pour générer cette clé a en plus été supprimé depuis.

EDIT 2 : J'ai retrouvé la doc utiliséey et donc un bon fichier keytab bien comme il faut :
procédure sur Windows 2008
• créer sur le domaine AD un utilisateur (exemple : "user1") pour la synchronisation des comptes et des groupes et l'accès à Active Directory
• Cocher "le mot de passe n'expire jamais"
• Activer les "fonctionnalités avancées" dans le menu affichage de la console ADUC
• Modifier le paramètre "userPrincipalName" dans l'onglet "Editeur d'attributs", avec :
HTTP/<nom complet en minuscules (fqdn) du serveur>@<DOMAINE DNS en majuscules>
• Dans une fenêtre DOS, lancer :
setspn –A http/<nom complet en minuscules (fqdn) du serveur>@<DOMAINE DNS en majuscules> <DOMAINE NETBIOS (nom court) en majuscules>\user1

NOTE : en raison de l'UAC (User Access Control) de Win2008, cette commande doit être lancée par l'Administrateur (même un membre du groupe "Admins du domaine" n'a pas assez de droits). Pour ça :
- soit se connecter en tant qu'Administrateur sur le DC,
- soit lancer un "shell élevé" (clic-droit, "lancer en tant qu'Administrateur" -> bien sûr il faut avoir le droit de le faire, donc être dans le groupe admins du domaine !).
• Réinitialiser le mot de passe de l'utilisateur. (Important, sinon le "key version number" (kvno) n'est pas bon !)
• Cocher "Utiliser le chiffrement DES via Kerberos pour ce compte" dans l'onglet compte
• Un nouvel onglet a dû apparaitre : "Délégation". Cocher "Approuver cet utilisateur pour la délégation à tous les services (Kerberos uniquement)"
• Générer un fichier ktab :
ktpass -out kerb5.ktab -princ HTTP/<nom complet en minuscules (fqdn) du serveur>@<DOMAINE DNS en majuscules> -mapuser user1@<DOMAINE DNS en majuscules> -pass <mot-de-passe> -crypto all -ptype KRB5_NT_PRINCIPAL
Bon c'est bien cette doc que j'avais utilisé mais ça ne fonctionne pas mieux... je ne vais jamais m'en sortir.