Le CNRS
   Accueil > La Délégation à votre service > Informatique > Divers > Authentification d’une station Linux Fedora sur Active Directory

Authentification d’une station Linux Fedora sur Active Directory

Configuration pour authentifier les comptes unix sur le mot de passe Windows stocké dans l’active directory d’un serveur Windows 2000.

Jusqu’à présent L’authentification des utilisateurs du mail de la Délégation se faisait par le module pam_smb auprès d’un serveur NT4.

La solution jusqu’ici retenue pour le personnel interne était d’avoir un compte sur le controleur de domaine NT4 et un compte unix avec un shell /bin/false pour bénéficier d’un compte email. L’authentification en pop, imap se faisant avec le mot de passe windows. L’upgrade de NT4 à Windows 2000 avec Active Directory nous a obligé à modifier la configuratiopn alors assez simple de l’authentification.

Diverses solutions sont possibles :

  1. Une base unique LDAP sur Unix
  2. Une base unique Active Directory avec un ajout de schéma pour les comptes unix
  3. Rester dans le même cadre avec des comptes unix + une base Active Directory et authentifier le mot de passe sur l’AD.

C’est cette dernière solution qui a été retenue. Elle consiste à configurer l’authentification du serveur linux sur la base locale et sur la base LDAP d’Active directory.

Les explications suivantes décrivent les différents élément à configurer pour cette solution.

De nombreux autres documents expliquent comment procéder pour les deux autres solutions ; notamment pour une base ldap sur linux on se reportera à http://www.openldap.org et pour la solution 2 unifiant une seule base active directory aux textes de Beret [1] ou bien David "Del" Elson [2]

Le serveur Linux étant une ditribution fedora, je passe allégrement les étapes d’installation de logiciels qui se résument à un :


yum install openldap openldap-clients pam nss_ldap

Tester l’accès à Active directory depuis la station Linux

Avec l’outils d’interrogation de openldap "ldapsearch" tester la connectivité sur le serveur Active directory.

En premier lieu configurer le fichier /etc/openldap/ldap.conf avec le Host avec la base <base de recherche> exemple :


HOST zebigbos.dr15.cnrs.fr
BASE dc=ad,dc=dr15,dc=cnrs,dc=fr

Une simple recherche : ldapsearch -x vous dira si vous avez des droits de lecture de la base dans le cas contraire il est nécessaire de faire l’interrogation avec un compte autorisé, par exemple Administrateur :


ldapsearch -x -D "cn=Administrateur,cn=Users,dc=ad,dc=dr15,dc=cnrs,dc=fr" -W ''

ce qui donne normalement l’intégralité de la base aussi on peut se restreindre pour l’instant à un compte de test :


ldapsearch -x -D "cn=Administrateur,cn=Users,dc=ad,dc=dr15,dc=cnrs,dc=fr"   "sAMAccountName=chardron" -W
Enter LDAP Password:

Ce qui donne pour résultat :


# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: sAMAccountName=chardron
# requesting: ALL
#

# Chardron, utilisateurs, DR15, ad.dr15.cnrs.fr
dn: CN=Chardron,OU=utilisateurs,OU=DR15,DC=ad,DC=dr15,DC=cnrs,DC=fr
memberOf: CN=Sti,OU=groupes,OU=DR15,DC=ad,DC=dr15,DC=cnrs,DC=fr
memberOf:: Q049T3DDqXJhdGV1cnMgZGUgY29tcHRlLENOPUJ1aWx0aW4sREM9YWQsREM9ZHIxNSx
EQz1jbnJzLERDPWZy
accountExpires: 0
adminCount: 1
badPasswordTime: 127689223603488044
badPwdCount: 1
codePage: 0
cn: Chardron
countryCode: 0
displayName: Jean-Noel Chardron
instanceType: 4
lastLogoff: 0
lastLogon: 127689223154286544
logonCount: 2
logonHours:: ////////////////////////////
distinguishedName: CN=Chardron,OU=utilisateurs,OU=DR15,DC=ad,DC=dr15,DC=cnrs,D
C=fr
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=dr15,DC=cnrs,DC=
fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
objectGUID:: /CCZQ/zAEUWHW5qaQySNeQ==
objectSid:: AQUAAAAAAAUVAAAA/OMVMUTduD1DFwoyYAcAAA==
primaryGroupID: 513
pwdLastSet: 127673825537709376
name: Chardron
sAMAccountName: Chardron
sAMAccountType: 805306368
sIDHistory:: AQUAAAAAAAUVAAAAUXTKbXg9hUN+FFwvUAcAAA==
userAccountControl: 66048
userPrincipalName: Chardron@ad.dr15.cnrs.fr
uSNChanged: 100562
uSNCreated: 24904
whenChanged: 20050819131532.0Z
whenCreated: 20050620150106.0Z

# search reference
ref: ldap://ad.dr15.cnrs.fr/CN=Configuration,DC=ad,DC=dr15,DC=cnrs,DC=fr

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 1
# numReferences: 1
[root@mably ~]#

Un mauvais mot de passe donne :


ldap_bind: Invalid credentials (49)
       additional info: 80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 52e, v893
[root@mably ~]#

Un compte inconnu ou non autorisé donne :


[root@mably ~]# ldapsearch -x -D "cn=Administrateur,cn=Users,dc=ad,dc=dr15,dc=cnrs,dc=fr"   "sAMAccountName=schtroumf" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: sAMAccountName=schtroumf
# requesting: ALL
#
# search reference
ref: ldap://ad.dr15.cnrs.fr/CN=Configuration,DC=ad,DC=dr15,DC=cnrs,DC=fr
# search result
search: 2
result: 0 Success
# numResponses: 2
# numReferences: 1
[root@mably ~]#

Modification des droits sur l’active directory pour autoriser un accès anonyme

L’authentification sur l’AD nécessite jusqu’ici un compte administrateur et son mot de passe, ce mot de passe transite en clair sur le réseau, ce qui n’est peut-être pas souhaitable aussi on peut modifier les autorisation d’accès sur les comptes pour faire une authentification sans DN et sans mot de passe.

Dans un premier temps de test on peut le faire pour un compte puis par la suite le généraliser.

Pour un seul compte il s’agit d’ajouter les droits de lecture au groupe ANONYMOUS LOGON et Everyone au compte de test d’interrogation. Ceci se fait avec l’outils "Utilisateurs et Ordinateurs d’Active Directory" on peut ainsi relancer les requêtes sans mot de passe et sans DN :


[root@mably ~]# ldapsearch -x   "sAMAccountName=chardron"
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: sAMAccountName=chardron
# requesting: ALL
#

# Chardron, utilisateurs, DR15, ad.dr15.cnrs.fr
dn: CN=Chardron,OU=utilisateurs,OU=DR15,DC=ad,DC=dr15,DC=cnrs,DC=fr
memberOf: CN=Sti,OU=groupes,OU=DR15,DC=ad,DC=dr15,DC=cnrs,DC=fr
memberOf:: Q049T3DDqXJhdGV1cnMgZGUgY29tcHRlLENOPUJ1aWx0aW4sREM9YWQsREM9ZHIxNSx
EQz1jbnJzLERDPWZy
accountExpires: 0
adminCount: 1
badPasswordTime: 127689339088896984
badPwdCount: 0
codePage: 0
cn: Chardron
countryCode: 0
displayName: Jean-Noel Chardron
instanceType: 4
lastLogoff: 0
lastLogon: 127689339122645688
logonCount: 2
logonHours:: ////////////////////////////
distinguishedName: CN=Chardron,OU=utilisateurs,OU=DR15,DC=ad,DC=dr15,DC=cnrs,D
C=fr
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=dr15,DC=cnrs,DC=
fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
objectGUID:: /CCZQ/zAEUWHW5qaQySNeQ==
objectSid:: AQUAAAAAAAUVAAAA/OMVMUTduD1DFwoyYAcAAA==
primaryGroupID: 513
pwdLastSet: 127673825537709376
name: Chardron
sAMAccountName: Chardron
sAMAccountType: 805306368
sIDHistory:: AQUAAAAAAAUVAAAAUXTKbXg9hUN+FFwvUAcAAA==
userAccountControl: 66048
userPrincipalName: Chardron@ad.dr15.cnrs.fr
uSNChanged: 100638
uSNCreated: 24904
whenChanged: 20050819141334.0Z
whenCreated: 20050620150106.0Z

# search reference
ref: ldap://ad.dr15.cnrs.fr/CN=Configuration,DC=ad,DC=dr15,DC=cnrs,DC=fr

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 1
# numReferences: 1
[root@mably ~]#

Pour géneraliser l’accès anonyme sur l’Active Directory il est possible d’utiliser la Délégation de contrôle pour ceci dans l’outils de gestion des utilisateurs et ordinateurs d’Active Directory :

  1. sélectionner l’arbre racine de l’annuaire puis avec le bouton droit de la souris sélectionner dans le menu : "Delégation de contrôle..."
  2. Cliquez "Suivant..."
  3. Dans "Utilisateurs et Groupes" ajouter le groupe ANONYMOUS LOGON et Everyone puis "Suivant..."
  4. Séléctionner "Créer une tache personnalisée à déléguer" "Suivant..."
  5. Panneau suivant cliquez sur "Suivant..."
  6. ajouter "Lire" puis "Suivant..."
  7. Terminer

Configuration supplémentaire sur Windows 2003 server

Sur la version de 2003 server, l’accès anonyme est désactivé. Il est nécessaire de changer un paramètre avec l’outils complémentaire Adsiedit.msc
Voir :
http://support.microsoft.com/kb/326690

Mise en place de l’authentification LDAP sur le serveur

Une fois ces tests terminés et concluants, il est possible de passer à la partie authentification de la station

On notera la case cochée "une autorisation locale est suffisante" ce qui permettra aux comptes locaux de se connecter sans authentification sur la base Ldap.

Puis on renseigne les champs :

Ces écrans interactifs vont modifier les fichiers /etc/ldap.conf, /etc/nssswitch.conf, et le fichier /etc/pam.d/system-auth

Modification manuelle du fichier /etc/ldap.conf :


# Your LDAP server.
host zebigbos.dr15.cnrs.fr
# The distinguished name of the search base.
base dc=ad,dc=dr15,dc=cnrs,dc=fr
# The search scope.
scope sub

pam_password ad

nss_base_passwd ou=utilisateurs,ou=DR15,dc=ad,dc=dr15,dc=cnrs,dc=fr?sub
nss_base_shadow ou=utilisateurs,ou=DR15,dc=ad,dc=dr15,dc=cnrs,dc=fr?sub
nss_map_objectclass shadowAccount User
nss_map_attribute uid sAMAccountName
nss_map_attribute cn sAMAccountName
pam_login_attribute sAMAccountName
pam_filter objectclass=user

ssl no

Test de l’authentification

Avec la commande getent sur la station on peut voir si on récupère bien les données de la base AD :


[root@mably ~]# getent passwd |grep chardron
chardron:x:269:200:moi:/home/dr15/chardron:/bin/bash
[root@mably ~]#

[root@mably ~]# getent shadow |grep -i hardron
chardron:$1$a/ZPf2hZ$WvC2ImSv.ZsZhKswLmB5U0:12865:0:99999:7:::
Chardron:x:::::::0
[root@mably ~]#

Avec ce mécanisme le compte chardron est local et peut indifférement saisir le mot de passe local (première ligne) ou le mot de passe windows (deuxième ligne).


auteur : Jean-Noël Chardron

Date rédaction originale : Le 19 Août 2005
mise à jour : Le 15 juillet 2008

Trame ethernet - Analyse des trames ethernet avec etherreal de la transaction d’authentification entre un poste linux et Active Directory
 

Rechercher


sur le site de la délégation
Le CNRS Accueil Le CNRS Annuaires Mots clefs CNRS Autres sites Accueil Imprimer Contact Crédits Plan du site