Bonjour,
Le Thursday 07 January 2021 10:31:27 Christian VAN DER ZWAARD a écrit :
> Je suis chargé de mettre en place de l’authentification et du VLAN
> assignment sur le réseau avec un serveur RADIUS et annuaire LDAP. J’ai
> choisi FreeRADIUS et OpenLDAP. L’authentification fonctionne mais je sèche
> au niveau de l’attribution du VLAN.
>
> Je n’arrive pas à créer une nouvelle object class custom dans l’annuaire et
> je ne sais pas comment "dire" au RADIUS où il doit récupérer le numéro de
> VLAN.
La plupart des switchs supportent la RFC3580.
En gros, il faut ajouter Tunnel-Type, Tunnel-Medium-Type et Tunnel-Private-
Group-ID dans la réponse.
Exemple rapide en utilisant le schema dans les sources de freeradius :
doc/schemas/ldap/openldap/freeradius.schema
Avec ce LDIF minimal :
#####################
dn: ou=radius,dc=example,dc=com
objectClass: organizationalUnit
dn: ou=users,ou=radius,dc=example,dc=com
objectClass: organizationalUnit
dn: ou=profiles,ou=radius,dc=example,dc=com
objectClass: organizationalUnit
dn: cn=phone,ou=users,ou=radius,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: radiusprofile
objectClass: organizationalRole
userPassword: {CLEAR}clearpassword
radiusTunnelPrivateGroupId: 2
radiusReplyAttribute: Cisco-AVPair = "device-traffic-class=voice"
dn: cn=vlan18,ou=users,ou=radius,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: radiusprofile
objectClass: organizationalRole
userPassword: {CLEAR}clearpassword18
radiusTunnelPrivateGroupId: 18
dn: cn=default-vlan,ou=profiles,ou=radius,dc=example,dc=com
objectClass: radiusObjectProfile
objectClass: radiusprofile
radiusTunnelType: VLAN
radiusTunnelMediumType: IEEE-802
#####################
Et cette configuration de freeradius (voir la conf par défaut pour les
commentaires) :
#####################
ldap ldap-8021x {
server = "ldaps://ldap.example.com"
base_dn = 'dc=example,dc=com'
valuepair_attribute = 'radiusAttribute'
update {
control:Password-With-Header += 'userPassword'
reply:Tunnel-Type := 'radiusTunnelType'
reply:Tunnel-Medium-Type := 'radiusTunnelMediumType'
reply:Tunnel-Private-Group-ID := 'radiusTunnelPrivategroupId'
control: += 'radiusControlAttribute'
request: += 'radiusRequestAttribute'
reply: += 'radiusReplyAttribute'
}
user {
base_dn = "ou=users,ou=radius,${..base_dn}"
filter = "(&(objectClass=simpleSecurityObject)(cn=%{%{Stripped-User-
Name}:-%{User-Name}}))"
}
profile {
filter = '(objectclass=radiusprofile)'
default = "cn=default-vlan,ou=profiles,ou=radius,${..base_dn}"
}
}
#####################
Attention, si on utilise un EAP "tunnel" comme PEAP ou TTLS, il faut aussi
décommenter les sections update dans la section post-auth du site inner-tunnel
afin de copier les attributs dans la réponse envoyée au client.
Testé et validé pour du HPe/aruba (2530), Cisco (2960G), et dell (N1500/os9).
Pour avoir en plus des vlans taggés (mode general / trunk / switch), c'est
plus complexe (RFC4675) et beaucoup moins bien supporté, ca dépend du
constructeur ...
> Je suis preneur si vous avez des liens intéressants à ce sujet.
Je n'ai rien trouvé de très utile avec ldap, mais pour les vlans :
https://wiki.freeradius.org/vendor/HP#procurve-port-authentication-special-features_dynamic-vlan-assignment
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/