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 :puis commande kdestroy.
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
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 :
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.
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
EDIT 2 : J'ai retrouvé la doc utiliséey et donc un bon fichier keytab bien comme il faut :
Bon c'est bien cette doc que j'avais utilisé mais ça ne fonctionne pas mieux... je ne vais jamais m'en sortir.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
Partager