Evolucionando nuestro VPMS II

Hace algo más de dos años que vimos como evolucionar nuestro VPMS inicial para el control de acceso a red, a un sistema basado en una asignación dinámica de VLANs en función del usuario. No obstante, no siempre es posible este tipo de autenticación ya que, por ejemplo, podemos encontrar dispositivos conectados a nuestra red como controles de acceso, teléfonos o impresoras que no dispongan de funcionalidad para su autenticación mediante 802.1x y, por lo tanto, debemos garantizar otro tipo de autenticación, siendo lo más habitual usar la autenticación MAB (MAC Authentication Bypass).

Al igual que vimos en la configuración inicial de nuestro VPMS, mediante la autenticación MAB nos volvemos a basar en la dirección MAC del cliente para proporcionar el acceso a la red (no en el usuario final) aunque, al estar integrado en un servidor Radius, nos da más potencia que la versión inicial de VPMS. No obstante, como todo, tiene sus ventajas e inconvenientes.

Para llevar a cabo nuestra configuración hacemos uso de los mismos dispositivos vistos en las entradas anteriores:

  • Switch de acceso a la red (Cisco 2960) como Authenticator (172.18.0.200).
  • Servidor Radius (Freeradius) como Authentication Server (172.17.2.23).
  • Equipo de usuario (Microsoft Windows 10) como Supplicant.

Además de hacer uso de un teléfono IP Snom 300 para el cual habilitaremos la autenticación MAB (aunque el terminal disponga de soporte 802.1x).

Una vez tenemos claros los dispositivos, lo primero que vamos a hacer es preparar nuestro servidor Radius para que valide las dirección MAC de los dispositivos (Calling-Station-Id), concretamente del terminal IP. Para ellos realizamos las siguientes acciones, aunque es posible configurar la autenticación MAB de otras formas:

Configuramos el módulo que nos permitirá buscar las direcciones MAC, indicando el fichero donde vamos a guardar las direcciones y la clave de búsqueda:

files authorized_macs {
        key = "%{Calling-Station-Id}"
        usersfile = ${confdir}/authorized_macs
        compat = no
}

Creamos el fichero de direcciones MAC autorizadas:

98-0c-82-b5-00-f2
        Reply-Message = "Direccion MAC %{Calling-Station-Id} AUTORIZADA"
00-04-13-37-8d-cf

Como se puede ver, podemos configurar opciones independientes por dirección MAC, por ejemplo múltiples VLANs.

A continuación, indicamos en la configuración de autorización (recordemos la arquitectura AAA) que use ese módulo, por ejemplo, si no hay mensajes de autenticación EAP:

 # If cleaning up the Calling-Station-Id...
 rewrite.calling_station_id

       if (!EAP-Message) {
                   authorized_macs

                if (!ok) {
                        reject
                }
                else {
                        # accept
                        update control {
                                Auth-Type := Accept
                        }
                }
        }

Dado que cada dispositivo puede enviar el Calling-Station-Id en un formato distinto (separación y agrupación), lo primero es hacer uso del método existente para reescribir el Calling-Station-Id.

Viendo el script anterior, podemos ver que no parece complicado usar ambas formas de autenticación a nivel de configuración del servidor Radius para validar tanto el dispositivo como el usuario final.

Una vez dada de alta la dirección MAC del teléfono IP, y teniendo preparada la configuración de nuestro servidor Radius, previamente a configurar el switch procedemos a validar que la dirección MAC está autorizada para conectar:

echo "Calling-Station-Id=00-04-13-37-8d-cf" | radclient 127.0.0.1:1812 auth password -x
Sending Access-Request of id 104 to 127.0.0.1 port 1812
	Calling-Station-Id = "00-04-13-37-8d-cf"
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=104, length=20

Como vemos, nos devuelve el mensaje de aceptación. También podemos verlo en la consola del servidor:

++} # policy rewrite.calling_station_id = updated
++? if (!EAP-Message)
? Evaluating !(EAP-Message) -> TRUE
++? if (!EAP-Message) -> TRUE
++if (!EAP-Message) {
[authorized_macs] 	expand: %{Calling-Station-Id} -> 00-04-13-37-8d-cf
[authorized_macs] users: Matched entry 00-04-13-37-8d-cf at line 3
+++[authorized_macs] = ok
+++? if (!ok)
? Evaluating !(ok) -> FALSE
+++? if (!ok) -> FALSE
+++else else {
++++update control {
++++} # update control = noop
+++} # else else = noop
++} # if (!EAP-Message) = ok
+} # group authorize = updated
Found Auth-Type = Accept
Auth-Type = Accept, accepting the user
Login OK: [000413378dcf/000413378dcf] (from client switch port 50003 cli 00-04-13-37-8d-cf)
# Executing section post-auth from file /etc/freeradius/sites-enabled/default
+group post-auth {
++[exec] = noop
+} # group post-auth = noop
Sending Access-Accept of id 226 to 172.18.0.200 port 1645
Finished request 1.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 1 ID 226 with timestamp +36
Ready to process requests.

Tras validar que ‘en local funciona’, y recordando de los post anteriores que tenemos configurada autenticación 802.1x en el puerto 1 de nuestro switch, procedemos a configurar de forma básica la autenticación MAB en el puerto 3:

interface FastEthernet0/3                                                                                                                                       
 switchport mode access                                                                          
 dot1x mac-auth-bypass                                                                           
 dot1x pae authenticator                                                                         
 dot1x port-control auto                                                                         
 dot1x violation-mode protect

Para finalizar, conectamos nuestro teléfono IP a la interfaz 3 del switch y comprobamos que su dirección MAC se autentica correctamente:

                                                                                                 
Dot1x Info for FastEthernet0/3                                                                   
-----------------------------------                                                              
PAE                       = AUTHENTICATOR                                                        
PortControl               = AUTO                                                                 
ControlDirection          = Both                                                                 
HostMode                  = SINGLE_HOST                                                          
Violation Mode            = PROTECT                                                              
ReAuthentication          = Disabled                                                             
QuietPeriod               = 60                                                                   
ServerTimeout             = 30                                                                   
SuppTimeout               = 30                                                                   
ReAuthPeriod              = 3600 (Locally configured)                                            
ReAuthMax                 = 2                                                                    
MaxReq                    = 2                                                                    
TxPeriod                  = 30                                                                   
RateLimitPeriod           = 0                                                                    
Mac-Auth-Bypass           = Enabled                                                              
    Inactivity Timeout    = None                                                                 
                                                                                                 
Dot1x Authenticator Client List                                                                  
-------------------------------                                                                  
Domain                    = DATA                                                                 
                                                                                                 
Supplicant                = 0004.1337.8dcf                                                       
    Auth SM State         = AUTHENTICATED                                                        
    Auth BEND SM State    = IDLE                                                                 
Port Status               = AUTHORIZED                                                           
Authentication Method     = MAB                                                                  
Authorized By             = Authentication Server                                                
Vlan Policy               = N/A                                                                  

Lógicamente, esta es una pequeña aproximación a una posible solución final más robusta, cómoda y fácil de gestionar, pero añade una pequeña capa de seguridad adicional en nuestra organización. No obstante, como posibles mejoras de cara a esta solución final, se podrían encontrar por ejemplo:

  • Asignación a unas direcciones MAC (por ejemplo teléfonos IP) a la VLAN de voz de nuestra red mediante las opciones vistas en los post anteriores.
  • La posibilidad de definir OUI completos de fabricantes en lugar de usar direcciones MACs individuales, de forma que la gestión es más rápida y sencilla.
  • Hacer uso de otras medidas de seguridad adicionales como podría ser Port-Security para los puertos que solo puedan tener configurada la autenticación MAB.
  • Dependiendo de la versión de nuestro sistema operativo, hacer uso de distintos métodos de autenticación mediante el uso de prioridades, por ejemplo, primero tratar de autenticar la conexión mediante credenciales de usuario y disponer de un método secundario de autenticación MAB.
  • Poder notificar de cambios y violaciones de la política de seguridad.
  • Integrarse con una base de datos para disponer de una interfaz cómoda de administración.
  • Implementar un sistema de autenticación de usuarios/dispositivos robusto, por ejemplo, añadiendo el uso de certificados a la solución.
  • Posibilidad de obtener informes y estadísticas del acceso a la red.

Comments

  1. solicito informacion en que fecha se puede presentar el examen de certificación CISSP, y el costo. La certificacion seria para dos personas.

    Quedo pendiente de esta informacion