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/

Répondre à