Blog CLEMANET
Systèmes et réseaux

Freeradius, OpenLDAP et PEAP

Pour PEAP, nous avons besoin du mot de passe chiffré. Il faut soit stocker le mot de passe chiffré dans l’attribut ldap Userpassword ou bien se servir d’un autre attribut de mot de passe.

Chiffrement du mot de passe

L’utilitaire smbencrypt permet de chiffrer le mot de passe pour peap. Cet utilitaire fait partie du paquet freeradius-utils.

[root@localhost ~]# /usr/bin/smbencrypt motdepassecompliqué
 LM Hash                                 NT Hash
 --------------------------------        --------------------------------
 BAC14D04669EE1D1AAD3B435B51404EE        FBBF55D0EF0E34D39593F55C5F2CA5F2
 [root@localhost ~]#

[root@localhost ~]# cat import.ldif
 dn: uid=clem,ou=utilisateur,dc=demo,dc=com
 changetype: modify
 add: userpassword
 userpassword: BAC14D04669EE1D1AAD3B435B51404EE
 [root@localhost ~]#

Mise à jour du schéma ldap pour utiliser l’attribut sambaNTPassword

On peut utiliser l’attribut ldap sambaNTPassword pour stocker ce mot de passe.

Il faut donc dans un premier temps modifier le schéma pour ajouter cet attributs. Ajout du schéma samba à LDAP

Le schéma se trouve dans le logiciel samba.

Donc:

[root@localhost ~]# wget http://ftp.samba.org/pub/samba/stable/samba-3.6.4.tar.gz
 [root@localhost ~]# tar -xzvf samba-3.6.4.tar.gz

[root@localhost schema]# cp /root/samba-3.6.4/examples/LDAP/samba.schema /etc/openldap/schema/
 [root@localhost schema]# cat schema-convert
 include /etc/openldap/schema/core.schema
 include /etc/openldap/schema/cosine.schema
 include /etc/openldap/schema/inetorgperson.schema
 include /etc/openldap/schema/nis.schema
 include /etc/openldap/schema/samba.schema
 [root@localhost schema]#

Ouvrir ensuite le fichier ldif qui correspond au schéma ldap

[root@localhost cn=schema]# pwd
 /etc/openldap/schema/ldif-output/cn=config/cn=schema
 [root@localhost cn=schema]# ls
 cn={0}core.ldif  cn={1}cosine.ldif  cn={2}inetorgperson.ldif  cn={3}nis.ldif  cn={4}samba.ldif
 [root@localhost cn=schema]#vi cn={4}samba.ldif

Modifier les premières lignes:

dn: cn=samba,cn=schema,cn=config
 objectClass: olcSchemaConfig
 cn: samba

Supprimer les lignes suivantes à la fin du fichier

structuralObjectClass: olcSchemaConfig
 entryUUID: 0ff1fcde-2ec8-1031-89ea-ff117b89f3c5
 creatorsName: cn=config
 createTimestamp: 20120510084412Z
 entryCSN: 20120510084412.961025Z#000000#000#000000
 modifiersName: cn=config
 modifyTimestamp: 20120510084412Z

On importe ensuite le schéma dans LDAP

[root@localhost cn=schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./cn\=\{4\}samba.ldif
 SASL/EXTERNAL authentication started
 SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
 SASL SSF: 0
 adding new entry "cn=samba"
 ldap_add: Server is unwilling to perform (53)
 additional info: no global superior knowledge

Import d’un utilisateur avec tous les attributs

Fichier ldif

[root@localhost ~]# cat import.ldif
 dn: uid=clem, ou=utilisateur,dc=demo,dc=com
 objectClass: inetOrgPerson
 objectClass: radiusprofile
 objectClass: sambaSamAccount
 uid: clem
 userPassword: password
 cn: clem
 sn: snclem
 radiustunneltype: VLAN
 radiustunnelmediumtype: 6
 radiustunnelprivategroupid: 4
 SambaNTPassword: 878D8014606CDA29677A44EFA1353FC7
 SambaSid:
 [root@localhost ~]#