Protocolos AAA y control de acceso a red: Radius

Fecha de publicación 05/02/2015
Autor
Antonio López (INCIBE)
Protocolos AAA y control de acceso a red

La familia de protocolos AAA, acrónimo de Authentication, Authorization y Accounting (Autenticación, Autorización y Contabilización) fueron diseñados como mecanismos de control de acceso remoto y provisión de servicios de red originalmente a través modem y línea telefónica (dial-in), pero se siguen implementando actualmente en múltiples arquitecturas.

RADIUS, acrónimo de Remote Authentication Dial-In User Service, es el paradigma de protocolo AAA. Nacido en 1991 desarrollado originalmente por Livingston Enterprises para la serie PortMaster de sus Servidores de Acceso a la Red (NAS), más tarde se convirtió en estándares RFC a través de la Internet Engineering Task Force IETF:

  • 1991-1993: Merit Network y Livingston Enterprise (accesos al NSFnetwork)
  • 1997 - Enero: RFC 2058 (autenticación y autorización) y RFC 2059 (Contabilización )
  • 1997 - Abril: RFC 2138 (autenticación y autorización) y RFC 2139 (Contabilización )
  • 2000 - Junio: RFC 2865 (autenticación y autorización) y RFC 2866 (Contabilización )

Otros protocolos pertenecientes a la familia de los AAA son TACACS , protocolo propietario de Cisco Systems, o la evolución de RADIUS, DIAMETER.

Descripción de una plataforma AAA básica con RADIUS

Sin entrar en demasiado detalle, usaremos RADIUS como ejemplo para describir una arquitectura habitual de AAA como por ejemplo los utilizados por un proveedor de internet o ISP. En estas arquitecturas existe un elemento intermedio, el Servidor de Acceso a la Red (NAS por sus siglas inglesas) que funciona como un cliente de RADIUS. El cliente es el responsable de pasar la información de los usuarios a los servidores RADIUS y luego actuar sobre la respuesta que se devuelve.

Los servidores RADIUS reciben la petición del cliente y realizan la autenticación del usuario a partir de los datos recibidos (generalmente contra servidores de directorio) devolviendo la configuración con la información necesaria para que el cliente acceda al servicio del usuario autenticado. Durante este proceso de Autenticación y Autorización que verifica la validez del usuario y los recursos a los que tiene acceso autorizado. Esta gestión se complementa con el proceso de Contabilización que registrará los datos relevantes de la sesión y que se usa normalmente para generar registros de tarificación.

Autenticación y Autorización

El solicitante de acceso hace la petición enviando su información de usuario y contraseña a un NAS con el cual establece comunicación punto a punto a nivel de enlace (PPP). El NAS, que actúa como cliente RADIUS reenvía la solicitud al servidor RADIUS. En esta solicitud se incluyen entre otros datos, un identificador de la petición, unos atributos, así como la información del cliente final junto con su contraseña, que se cifra usando una clave compartida con el servidor y se almacena en el campo Authenticator. El servidor validará la autenticación mediante cualquiera de los mecanismos soportados: PAP, CHAP, EAP (mecanismos basados desafío-respuesta), Unix login, LDAP, etc. y obtendrá la información relevante relativa al cliente. Si el servidor RADIUS autoriza el acceso responde con un mensaje (Access Accept) donde se adjuntan una serie de parámetros que caracterizarán su conexión, como pueden ser la dirección IP y el ancho de banda. Si el acceso es rechazado, se denegará la autenticación/autorización notificando un mensaje de Access Reject, indicado las causas de la misma.

Flujo de mensajes en un proceso de autenticación/autorización RADIUS

-Flujo de mensajes en un proceso de autenticación/autorización RADIUS -

Contabilización

Adicionalmente, una vez autenticado y autorizado, el cliente puede enviar una petición de contabilización para iniciar una sesión a la que el servidor RADIUS responderá, iniciándose un registro de conexión con datos sobre inicio/fin de sesión, volumen de datos transferidos, etc. La sesión finalizará con una petición por parte del servidor o del cliente (Accounting Stop).

Mensajes más comunes de RADIUS

Para controlar todas las fases del proceso de AAA, RADIUS dispone, entre otros, de los siguientes mensajes:

  • Access-Request. Enviado por un cliente RADIUS para solicitar autenticación y autorización de acceso a red.
  • Access-Accept. Enviado por el servidor RADIUS server en respuesta a un mensaje Access-Request. Este mensaje notifica al cliente su autenticación y autorización que corresponda aportando los atributos necesarios.
  • Access-Reject. Enviado por el servidor RADIUS server en respuesta a un mensaje Access-Request. Este mensaje informa al cliente que su petición ha sido rechazada aportando la causa.
  • Access-Challenge. Enviado por el servidor RADIUS server en respuesta a un mensaje Access-Request. Este mensaje se envía al cliente con un desafío que el cliente debe responder.
  • Accounting-Request. Enviado por un cliente RADIUS para especificar la información de la conexión que le ha sido aceptada. Puede ser de tipo start o stop para iniciar o finalizar el accounting.
  • Accounting-Response. Enviado por el servidor RADIUS server en respuesta a un mensaje Accounting-Request. Este mensaje notifica la recepción correcta de la solicitud e inicia el procesado de la sesión.

Seguridad en RADIUS.

RADIUS adolece de una serie de debilidades que son:

  • Los mensajes RADIUS no viajan cifrados, a excepción de aquellos datos especialmente sensibles como las contraseñas
  • RADIUS utiliza MD5 como algoritmo criptográfico de hashing, lo que lo hace vulnerable a ataques de colisión.
  • La comunicación se realiza a través del protocolo UDP, lo que permite que las direcciones IP puedan ser fácilmente falseadas y susceptible de suplantación de identidad.
  • Las especificaciones para la clave compartida no son lo suficientemente robustas y es reutilizada por el servidor con los clientes. Por tanto, es vulnerable a ataques de fuerza bruta. Una vez obtenida la clave, el campo "Autenticator" utilizado en mensajes de autenticación (Access-Request) es fácilmente generado.

Algunas contramedidas para reforzar la seguridad del RADIUS, pasarían por contemplar la implementación de IPSec para cifrar las comunicaciones entre cliente y servidor. Adicional o alternativamente puede reforzarse la autenticación haciendo uso de protocolos robustos desafío-respuesta, como CHAP.

Evolución de RADIUS.

 

Para solventar muchas de las debilidades que RADIUS tiene como protocolo AAA, aparece en escena DIAMETER que es una evolución de RADIUS (se decía que era "el doble de buena" y por ello recibió su nombre) y que cuenta entre otras, con las siguientes mejoras:

  • Usa protocolos de transporte fiables (TCP o SCTP)
  • Usa seguridad a nivel de transporte (IPSEC o TLS)
  • Tiene un espacio de direcciones mayor para atributos (Attribute Value Pairs, pares atributo-valor) e identificadores (32 bits en lugar de 8)
  • Es un protocolo punto a punto en lugar de cliente-servidor. Por tanto cualquier nodo puede iniciar el intercambio de mensajes.
Etiquetas