¿Cómo utilizar Calling-Station-Id por usuario en freeRADIUS?

¿Cómo utilizar Calling-Station-Id por usuario en freeRADIUS?

Estoy tratando de limitar a cada usuario a un pequeño conjunto de ID de Mac en RADIUS, incluyendo directamente la información adecuada en el usersarchivo. Sería aceptable incluso si cada usuario estuviera limitado a una Mac. El servidor ejecuta FreeRADIUS versión 2.1.12 desde los repositorios de Ubuntu 13.10. La autenticación utilizada es PEAP y MSCHAPv2.

Cuando un cliente físico (Nexus 5) intenta conectarse a través del punto de acceso (Netgear WG-102), FreeRADIUS parece identificar el ID de Mac en la solicitud de acceso, pero no lo usa en las comprobaciones. Los únicos dispositivos en la red en mi configuración de prueba actual son el servidor Radius, el punto de acceso y un cliente de prueba. Las entradas del usersarchivo están configuradas como:

testuser   NT-Password := "<hash>", Calling-Station-Id == "a1b2c3d4e5f6"

El policy.confarchivo tiene una rewrite.calling_station_idfunción que normaliza los ID de Mac al formato anterior y se llama available-sites/defaultinmediatamente después preprocess. Los mac-id con el formato correcto aparecen en el registro al ejecutar freeradius -X. Sin embargo, las solicitudes son rechazadas. Incluso si la verificación se reemplaza por Calling-Station-Id =* "a1b2c3d4e5f6", que se supone que debe aprobarse siempre que el atributo exista, las solicitudes se rechazan. Sin embargo, si se reemplaza por Calling-Station-Id !* "a1b2c3d4e5f6", que se supone que pasa solo si el atributo esnopresente en la solicitud, las solicitudes son aceptadas.

Por el contrario, si uso radclient, se observa el comportamiento esperado. Los archivos de configuración y los registros relevantes están vinculados a continuación. Toda la /etc/freeradiuscarpeta está vinculada y también contiene los registros de los siguientes cuatro casos. Tenga en cuenta que el número 2 es el único comportamiento inesperado:

  1. nexus-without-mac-success: El usersarchivo no tuvo comprobaciones de Mac y la autenticación se realizó correctamente.
  2. nexus-with-mac-fail: El usersarchivo tenía la dirección mac correcta y la autenticación falló
  3. radclient-with-mac-expected-behaviour-fail-with-wrong: radclient se ejecuta con una dirección mac incorrecta y se rechaza:echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0e" | radclient localhost auth testing123
  4. radclient-with-mac-expected-behaviour-success-with-correct: radclient se ejecuta con la dirección mac correcta y se acepta:echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0f" | radclient localhost auth testing123

¿No es posible usarlo Calling-Station-Idde esta manera? Contrariamente ahttp://wiki.freeradius.org/guide/Mac-Auth, Quiero tener los ID de Mac limitados por usuario, por lo que si tiene un método alternativo para hacer esto, también sería bienvenido.

http://portmasters.com/tech/docs/radius/userinfo.html#1004825Parece decir que esta es la forma correcta de hacerlo, aunque está escrito en 1999.

http://www.cmi.ac.in/~ronno/freeradius-testcontiene lo siguiente:

  • freeradius- contenidos de/etc/freeradius
  • logs- los cuatro registros descritos anteriormente
  • wg102.cfg- la configuración del punto de acceso
  • snapshot.tar.gz- tarball que contiene todo lo anterior

Respuesta1

No ha enviado los atributos de la solicitud externa al servidor interno.

Establecer copy_tunnel_request = yesen eap{peap{}}(en eap.conf o mods-available/eap).

https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594

La llamada de archivos en el servidor interno no tiene acceso al atributo Calling-Station-ID en la solicitud externa, no coincide con ninguna entrada y, por lo tanto, no establece el atributo de control NT-Password.

información relacionada