Con respecto a la asignación dinámica de VLAN Dot1X

8

Situación:

Estoy tratando de hacer que 802.1X funcione para mí. Quiero que el servidor RADIUS asigne dinámicamente VLAN a los puertos según el atributo de respuesta RADIUS para un usuario en particular. Tengo un conmutador HP E2620 y un servidor FreeRADIUS. El solicitante es una máquina con Windows 8.1

Me referí a este documento en el sitio web de freeradius.


Lo que he hecho hasta ahora:

En FreeRADIUS creé un usuario con tales parámetros:

dot1xtest    User-Password := "secret"
             Tunnel-Type = "VLAN",
             Tunnel-Medium-Type = "IEEE-802",
             Tunnel-Private-Group-ID = "100"

También lo intenté Tunnel-Pvt-Group-ID, pero no funciona en FreeRADIUS, solo me ladra (vi esto en los recursos para configurar en Microsoft NPS, uno de estos ). También probé los valores "802", 802, 6 para el tipo de túnel medio.

También intenté usar el nombre real de VLAN en lugar de VLAN-ID como valor de ID de grupo. De todos modos, su tipo de datos es una cadena.

Configuré el conmutador HP para usar este servidor RADIUS para AAA y configuré esto para el puerto 10:

aaa port-access gvrp-vlans
aaa authentication port-access eap-radius
aaa port-access authenticator 10
aaa port-access authenticator 10 auth-vid 150
aaa port-access authenticator 10 unauth-vid 200
aaa port-access authenticator active

VLAN:

VLAN 100 - VLAN which I want to get after authentication.
VLAN 150 - VLAN which I get now, because my config is not working
VLAN 200 - Unauthorized VLAN which is used on auth. failure

Notas:

  • Puerto 10 también tiene VLAN sin etiqueta 150 asignado: vlan 150 untagged 10. Y no puedo deshacerme de la asignación estática

  • Todas las VLAN enumeradas anteriormente están presentes en la base de datos de VLAN del conmutador.

  • Cada vez que me conecto a este puerto me pide credenciales; después de tener éxito con la autenticación, solo me envía a VLAN150 y si intento fallar, llego a VLAN200.

  • Habilité la autenticación 802.1X en la conexión de Windows tal como se describe aquí .

  • Intenté habilitar GVRP, no cambia nada


Salida de comando de diagnóstico / show:

Asignación de VLAN estática para el puerto 10. VLAN 150 sin etiquetar

 SW # show vlans ports 10 detail

 Status and Counters - VLAN Information - for ports 10

  VLAN ID Name                             | Status     Voice Jumbo Mode
  ------- -------------------------------- + ---------- ----- ----- --------
  150     VLAN150                          | Port-based No    No    Untagged

En show logging veo esto:

I 08/28/14 08:29:24 00077 ports: port 10 is now off-line
I 08/28/14 08:29:29 00435 ports: port 10 is Blocked by AAA
I 08/28/14 08:29:29 00435 ports: port 10 is Blocked by STP
I 08/28/14 08:29:29 00076 ports: port 10 is now on-line
I 08/28/14 08:29:29 00001 vlan: VLAN200 virtual LAN enabled
I 08/28/14 08:29:29 00435 ports: port 10 is Blocked by AAA
I 08/28/14 08:29:29 00002 vlan: UNUSED virtual LAN disabled
I 08/28/14 08:29:29 00435 ports: port 10 is Blocked by STP
I 08/28/14 08:29:29 00076 ports: port 10 is now on-line
I 08/28/14 08:29:29 00001 vlan: UNUSED virtual LAN enabled
I 08/28/14 08:29:47 00002 vlan: UNUSED virtual LAN disabled

show port-access authenticator salida:

SW # show port-access authenticator

 Port Access Authenticator Status

  Port-access authenticator activated [No] : Yes
  Allow RADIUS-assigned dynamic (GVRP) VLANs [No] : Yes

       Auths/  Unauth  Untagged Tagged           % In  RADIUS Cntrl
  Port Guests  Clients VLAN     VLANs  Port COS  Limit ACL    Dir
  ---- ------- ------- -------- ------ --------- ----- ------ -----
  10   1/0     0       150      No     No        No    No     both

Prueba de usuario RADIUS:

Linux-server # radtest dot1xtest secret localhost 0 secretkey
Sending Access-Request of id 158 to 127.0.0.1 port 1812
        User-Name = "dot1xtest"
        User-Password = "secret"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=158, length=37
        Tunnel-Type:0 = VLAN
        Tunnel-Medium-Type:0 = 802
        Tunnel-Private-Group-Id:0 = "100"

Esto es lo que vi en TCPdump en el servidor RADIUS. Estaba capturando el tráfico UDP saliente con el puerto de origen 1812. Es lo que obtiene mi conmutador (si es así, no estoy seguro de cómo verificar eso ...)

      Tunnel Type Attribute (64), length: 6, Value: Tag[Unused]#13
        0x0000:  0000 000d
      Tunnel Medium Attribute (65), length: 6, Value: Tag[Unused]802
        0x0000:  0000 0006
      Tunnel Private Group Attribute (81), length: 5, Value: 100
        0x0000:  3130 30

Depurar:

debug security radius-server
debug security port-access authenticator
debug destination buffer

Después de eso, desconecté y enchufé el cable y lo hice, show debug buffery aquí está el copiar y pegar . Es extraño, no se dice nada sobre ningún atributo relacionado con la VLAN.


Preguntas:

¿Qué estoy haciendo mal?

He leído en un montón de recursos que si el RADIUS asigna un interruptor de ID de VLAN, lo usa en primer lugar. Luego recurre a la VLAN autorizada configurada para el Autenticador de acceso a puerto si la autenticación se realiza correctamente. Si eso no está presente, asigna la VLAN sin etiquetar configurada en el puerto. ¿Por qué no tengo ese comportamiento?

Comienzo a pensar que el atributo Tunnel-Private-Group-Idno es compatible con estos conmutadores. Parece que cada recurso se refiere en su Tunnel-Pvt-Group-Idlugar (configuración en Microsoft). Lástima que no tengo Windows Server para verificar.

Tal vez está relacionado con el firmware? No intenté actualizar aún, uso RA_15_06_0009.swi y ya hay RA_15_14_0007.swi por ahí


Actualizar

Acabo de probar un 3500yl-24G-PWRmodelo y todavía no funciona. Entonces ... supongo que los conmutadores simplemente no obtienen la configuración del servidor RADIUS (¿o utilicé atributos u operadores incorrectos?). ¿Cómo puedo solucionar eso?

Alex
fuente
¿Tiene el puerto en vlan100 como etiquetado?
some_guy_long_gone
Ha pasado un tiempo desde que jugué en los conmutadores HP, pero me parece que también debería haber una aaa port-access authenticator 10 auth-vid 150declaración. IIRC, esto le indicaría al conmutador que use 150 para dispositivos autenticados a menos que obtenga un valor diferente de RADIUS. Sin esto, sospecho que solo usará el valor de puerto configurado. No publico como respuesta porque estoy trabajando fuera de la memoria y a menudo falla hoy en día. Si funciona, avíseme y lo publicaré como respuesta.
YLearn
* legioxi, no, el puerto está configurado como VLAN 150 sin etiquetar. * Sí, no lo necesito para asignar una VLAN específica. Quiero que asigne una VLAN dependiendo de qué usuario se autentique. Auth-vid ocupa el segundo lugar después de RADIUS (que no funciona). Si no se establece Auth-vid, entonces elige la VLAN configurada sin etiquetar.
Alex

Respuestas:

6

Alex, hola!

He creado un entorno de prueba para usted, así que estoy usando freeradius 2.1.12 + dfsg-1.2 (en debian), y cambio hp 2650. Acabo de repetir su configuración y no tengo problemas con esto. Mi prueba procurve ip 10.0.10.29, prueba freeradius ip 192.168.2.60.

configuración de procurve:

Running configuration:

; J4899A Configuration Editor; Created on release #H.10.83

hostname "ProCurve Switch 2650"
interface 1
   no lacp
exit
interface 2
   no lacp
exit
interface 3
   no lacp
exit
interface 4
   no lacp
exit
interface 5
   no lacp
exit
interface 6
   no lacp
exit
interface 7
   no lacp
exit
interface 8
   no lacp
exit
interface 9
   no lacp
exit
interface 10
   no lacp
exit
snmp-server community "public" Unrestricted
vlan 1
   name "DEFAULT_VLAN"
   untagged 11-50
   ip address dhcp-bootp
   no untagged 1-10
   exit
vlan 100
   name "success"
   untagged 1-10
   exit
vlan 200
   name "fail"
   exit
aaa authentication port-access eap-radius
radius-server host 192.168.2.60 key test
aaa port-access authenticator 1-10
aaa port-access authenticator 1 unauth-vid 200
aaa port-access authenticator 2 unauth-vid 200
aaa port-access authenticator 3 unauth-vid 200
aaa port-access authenticator 4 unauth-vid 200
aaa port-access authenticator 5 unauth-vid 200
aaa port-access authenticator 6 unauth-vid 200
aaa port-access authenticator 7 unauth-vid 200
aaa port-access authenticator 8 unauth-vid 200
aaa port-access authenticator 9 unauth-vid 200
aaa port-access authenticator 10 unauth-vid 200
aaa port-access authenticator active

/ etc / freeradius / users:

<...>
testuser User-Password := test
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802,
        Tunnel-Private-Group-Id = "100"
<...>

/etc/freeradius/radiusd.conf:

<...>
client switch {
        ipaddr          = 10.0.10.29
        secret          = test
        require_message_authenticator = no
        nastype     = other
}
<...>

Y he usado este manual, para habilitar 8021x en Windows:

http://windows.microsoft.com/en-us/windows/enable-802-1x-authentication#1TC=windows-7 

Pero, he deshabilitado el uso de créditos de usuario registrados.

Entonces, si las credenciales de los usuarios son correctas, tengo este mensaje en /var/log/freeradius/radius.log

tail -f /var/log/freeradius/radius.log
Fri Sep  5 12:54:14 2014 : Auth: Login OK: [testuser/<via Auth-Type = EAP>] (from client switch port 0 via TLS tunnel)
Fri Sep  5 12:54:14 2014 : Auth: Login OK: [testuser/<via Auth-Type = EAP>] (from client switch port 1 cli b4-99-ba-5a-bb-65)

y en mi interruptor tengo:

ProCurve Switch 2650(eth-1)# sh vlans ports 1

 Status and Counters - VLAN Information - for ports 1

  802.1Q VLAN ID Name         Status       Voice
  -------------- ------------ ------------ -----
  100            success      Port-based   No

Si los créditos son incorrectos:

Fri Sep  5 12:56:06 2014 : Auth: Login incorrect: [sasdasd/<via Auth-Type = EAP>] (from client switch port 0 via TLS tunnel)
Fri Sep  5 12:56:06 2014 : Auth: Login incorrect: [sasdasd/<via Auth-Type = EAP>] (from client switch port 1 cli b4-99-ba-5a-bb-65)


ProCurve Switch 2650(eth-1)# sh vlans ports 1

 Status and Counters - VLAN Information - for ports 1

  802.1Q VLAN ID Name         Status       Voice
  -------------- ------------ ------------ -----
  200            fail         Port-based   No

tal vez no has habilitado 8021x en windows? Espero que esto te ayude, hombre.

Pyatka
fuente
Hola hombre, gracias! Eso es muy apreciado! Sin embargo, hice todo lo posible para habilitar dot1x en Windows. Noté que eligió VLAN 100 como VLAN sin etiqueta predeterminada en el puerto de switch al que intenta conectarse. A mí también me funciona de esa manera. Obtengo una VLAN sin etiquetar configurada en un puerto de switch cuando tengo éxito. Pero, ¿qué sucede si configura VLAN sin etiquetar para su puerto a 1 e intenta asignar VLAN 100 a través de RADIUS? Eso funciona para ti? ¿Qué sucede si tengo varios usuarios diferentes con diferentes valores de Tunnel-Private-Group-Id?
Alex
1
Entendido :) Acabo de escapar de mi trabajo, si nadie te ayudaría, intentaré hacerlo el lunes (cuando pueda tener acceso a mi testlab, aislado, desafortunadamente)
pyatka
1
todavía no hay éxito ... MAC-auth funciona muy bien (el puerto se establece en cualquier objetivo sin etiquetar vlan), pero 8021x (o ambos con MAC-auth) no funciona, en cualquier combinación de todo lo que se puede ajustar ;-) I` Intentaré hacer lo mismo con otro SO cliente (no Windows), tal vez esta sea una clave. Además, parece muy extraño, porque tengo vertederos de radio-tráfico, y IHMO, todos los mensajes que parece ser correcta ...
pyatka
2

Wow, nunca hubiera pensado en este. Fue solo una solución aleatoria.

Entonces, el problema era con la authorizesección en la defaultconfiguración de mi sitio en /etc/raddb/sites-enabled/default, era algo predeterminado. Realmente no sé qué pasa con eso (si ustedes, chicos, saben, comentan sobre eso, por favor), investigarán un poco sobre eso; aquí está:

eap {
    ok = return
}

Comenté esto y lo reemplacé con solo:

eap

Ya no esperaba volver a hacerlo funcionar y luego me reconecté y ... sucedió, ¡al azar y ahora estoy tan emocionado! Me asignaron una VLAN dinámicamente:

Depurar:

0001:03:15:51.07 RAD  mRadiusCtr:ACCESS REQUEST id: 194 to 192.168.1.27,
   session: 56, access method: PORT-ACCESS, User-Name: dot1x,
   Calling-Station-Id: dead00-00beef, NAS-Port-Id: 10, NAS-IP-Address:
   192.168.100.17.
0001:03:15:51.10 RAD  tRadiusR:ACCESS ACCEPT id: 194 from 192.168.1.27 received.
0001:03:15:51.10 1X   m8021xCtrl:Port 10: received Success for client
   dead00-00beef, finished authentication session.
0001:03:15:51.10 1X   m8021xCtrl:Port: 10 MAC: dead00-00beef RADIUS Attributes,
   vid: 100.
0001:03:15:51.10 1X   m8021xCtrl:Port 10: starting session for client
   dead00-00beef.

SW # show port-access authenticator 10 vlan - todavía muestra VLAN 200 no autorizada y VLAN 150 autorizada

Port Access Authenticator VLAN Configuration

  Port-access authenticator activated [No] : Yes
  Allow RADIUS-assigned dynamic (GVRP) VLANs [No] : No

       Access  Unauth  Auth
  Port Control VLAN ID VLAN ID
  ---- ------- ------- -------
  10   Auto    200     150

SW # show vlans ports 10 detail - Y la VLAN sin etiquetar en el puerto 10 se configuró en VLAN 100

 Status and Counters - VLAN Information - for ports 10

  VLAN ID Name                 | Status     Voice Jumbo Mode
  ------- -------------------- + ---------- ----- ----- --------
  100     VLAN100              | Port-based No    No    Untagged

SW # show port-access authenticator

  Port Access Authenticator Status

  Port-access authenticator activated [No] : Yes
  Allow RADIUS-assigned dynamic (GVRP) VLANs [No] : No

       Auths/  Unauth  Untagged Tagged           % In  RADIUS Cntrl
  Port Guests  Clients VLAN     VLANs  Port COS  Limit ACL    Dir
  ---- ------- ------- -------- ------ --------- ----- ------ -----
  10   1/0     0       100      No     No        No    No     both

Además, si desea que funcione, debe crear todas las VLAN requeridas en el conmutador, de lo contrario obtendrá este tipo de cosas:

W 09/12/14 12:47:57 02400 dca: 8021X client, RADIUS-assigned VID validation
            error. MAC DEAD0000BEEF port 10 VLAN-Id 0 or unknown.

y Windows solo dirá: lo Authentication failedcual es un poco confuso también.

No conseguí que funcionara con VLAN desconocidas a pesar del hecho de que GVRP estaba habilitado, aaa port-access gvrp-vlansestaba configurado y también lo hice explícitamente unknown-vlans learnen la interfaz 10, pero bueno ... nvm.

Alex
fuente
1

Necesita agregar el siguiente comando:

aaa port-access authenticator 10 auth-vid 150

Esto le indicaría al conmutador que el puerto 10 usará la VLAN asignada de autenticación para dispositivos autenticados a menos que obtenga un valor diferente de RADIUS. Sin esto, solo usará el valor de puerto configurado e ignorará cualquier asignación de VLAN proporcionada por RADIUS.

Investigué un poco y encontré este dato en uno de mis documentos HP guardados:

Si el servidor RADIUS especifica una VLAN para un solicitante autenticado conectado a un puerto de autenticación 802.1X, esta asignación de VLAN anula cualquier asignación de VLAN de cliente autorizado configurada en el puerto de autenticación. Esto se debe a que ambas VLAN están sin etiquetar y el conmutador solo permite una membresía de VLAN sin etiquetar por puerto. Por ejemplo, suponga que configuró el puerto 4 para colocar proveedores autenticados en la VLAN 20. Si un servidor RADIUS autentica al solicitante “A” y asigna este solicitante a la VLAN 50, entonces el puerto puede acceder a la VLAN 50 mientras dure la sesión del cliente. Cuando el cliente se desconecta del puerto, el puerto descarta estas asignaciones y usa solo las membresías de VLAN para las que está configurado estáticamente.

YLearn
fuente
Lamentablemente, todavía no funciona. Me asignaron la VLAN 150 y no la RADIUS
Alex
Tenga en cuenta que al solucionar un problema como este, puede haber más de un error en la configuración. ¿Esto cambia alguno de los otros resultados ( show loggingo show port-access authenticatorpor ejemplo)? ¿Has combinado esto con algunos de los otros cambios que has probado anteriormente? Quizás se necesitaba uno que descartó, pero le faltaba otra pieza antes de trabajar.
YLearn
Sí, traté de combinar ... Mostrar comandos todavía muestran el mismo comportamiento / salida. No se me ocurre nada más. Supongo que este comando específico no es el problema en absoluto. Es el siguiente en prioridad después de la VLAN asignada por RADIUS y no cambia nada. El problema, IMO, es que el conmutador no obtiene atributos RADIUS para VLAN o no se están procesando o de alguna manera son incorrectos. Quiero decir, mira lo simple que es esa configuración: integratingit.wordpress.com/2012/07/05/…
Alex