Préambule: Installation de freeradius Fonctionnement avec vlan Une configuration pour 802.1x filaire Mise en place d’une base ldap
Installation du schéma freeradius dans la base ldap
Recherche d’un exemple de schéma freeradius
On copie et renomme le schéma présent dans le paquet freeradius dans l’arborescence openldap.
[root@localhost cn=config]# cp /usr/share/doc/freeradius-2.1.10/examples/openldap.schema /etc/openldap/schema/radius.schema
Conversion du fichier pour l’importation dans openldap
Création d’un fichier schema-convert et d’un réptertoire convert-output, puis conversion du schéma.
[root@localhost schema]# cat schema-convert
include /etc/openldap/schema/radius.schema
[root@localhost schema]#
[root@localhost schema]# slaptest -f schema-convert -F ./convert-output/
config file testing succeeded
[root@localhost schema]#
[root@localhost schema]# ls ./convert-output/
cn=config cn=config.ldif
Ouvrir le fichier /etc/openldap/schema/convert-output/cn=config/cn=schema/cn={0}radius.ldif et remplacer:
dn: cn={0}radius
objectClass: olcSchemaConfig
cn: {0}radius
par:
dn: cn=radius,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: radius
Puis supprimer les lignes suivantes à la fin du fichier:
structuralObjectClass: olcSchemaConfig
entryUUID: d3f8dbfa-297a-1031-9222-176c711ae4e0
creatorsName: cn=config
createTimestamp: 20120503144845Z
entryCSN: 20120503144845.283270Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120503144845Z
Enfin, on importe le schéma. Importation du schéma dans openldap
[root@localhost cn=schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./cn\=\{0\}radius.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=radius,cn=schema,cn=config"
[root@localhost cn=schema]#
Installation du module ldap pour freeradius
[root@localhost raddb]# yum install freeradius-ldap
Configuration du module ldap
La correspondance entre les attributs freeradius et les attributs ldap se trouve dans le fichier ldap.attrmap
Extrait du fichier:
[root@localhost raddb]# more /etc/raddb/ldap.attrmap
checkItem $GENERIC$ radiusCheckItem
replyItem $GENERIC$ radiusReplyItem
checkItem Auth-Type radiusAuthType
checkItem Simultaneous-Use radiusSimultaneousUse
checkItem Called-Station-Id radiusCalledStationId
checkItem Calling-Station-Id radiusCallingStationId
checkItem LM-Password lmPassword
checkItem NT-Password ntPassword
checkItem LM-Password sambaLmPassword
checkItem NT-Password sambaNtPassword
checkItem LM-Password dBCSPwd
checkitem Password-With-Header userPassword
replyItem Tunnel-Type radiusTunnelType
replyItem Tunnel-Medium-Type radiusTunnelMediumType
replyItem Tunnel-Private-Group-Id radiusTunnelPrivateGroupId
Configuration fichier /etc/raddb/modules/ldap
Dans notre cas, l’annuaire ldap est installé sur le même serveur que freeradius.
[root@localhost ~]# vi /etc/raddb/modules/ldap
server = "127.0.0.1"
identity = "cn=admin,dc=demo,dc=com"
password = motdepassecomplique
basedn = "dc=demo,dc=com"
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
dictionary_mapping = ${confdir}/ldap.attrmap
Activation de ldap pour l’authentification
Dans le fichier /etc/raddb/sites-available/inner-tunnel
Section authorize {
On décommente la ligne ldap
# The ldap module will set Auth-Type to LDAP if it has not
# already been set
ldap
Puis dans la section authenticate, on supprime le commentaire sur les lignes suivantes
Auth-Type LDAP {
ldap
}
todo: activer tls pour la communication entre les serveurs.
test avec TTLS : pas de problème, ça devrait fonctionner…
Avec PEAP, ça se complique un peu, voyons ça.