domingo, 10 de junio de 2007

Software Libre: AAA y Freeradius

Hace un tiempo mi compañero JP (un autentico gurú de Cisco) me propuso instalar un servidor RADIUS para securizar el acceso a la gestion de la red, por supuesto le propuse instalar Freeradius, aunque al principio me puso muchas pegas al final lo instalmos (practicamente hizo él todo el trabajo) y el resultado como siempre ha sido sorprendente, este es el como se hizo...


Terminología

AAA: Acrónimo que en inglés significa: autenticación (Authentication), autorización (Authorization) y anotación (Accounting).
Authentication: Proceso de validación de usuario.
Authorization: Proceso de asignación de privilegios a los usuarios.
Accounting: Proceso de registro de acciones de los usuarios.
RADIUS (Remote Authentication Dial-In User Service): Protocolo de comunicación cliente/servidor basado en UDP.
TACACS (Terminal Access Controller Access Control System): Protocolo de comunicación cliente/servidor basado en TCP.
Usuario: Es el usuario final de la aplicación, que necesita acceso al equipo o red.
Cliente: También conocido como NAS (Network Access Server). Es el encargado de establecer la negociación con el Servidor, siendo normalmente un router, firewall, switch…
Servidor: Servidor RADIUS o TACACS donde se autentica a los usuarios.

Funcionamiento:


1.El usuario inicia sesión en el NAS.
2.El NAS le pide usuario y password.
3.El usuario responde con sus credenciales.
4.El NAS envía usuario y password encriptadas al servidor RADIUS.
5.RADIUS responde aceptando, rechazando o interactuando con el usuario.

Implementación de servidores AAA con software libre

FreeRADIUS


FreeRADIUS es una implementación de servidor RADIUS con software libre.
En nuestro caso lo hemos usado como servidor de Autenticación de usuarios y de Autorización para tener determinados privilegios en los NAS.
Configuracion de servidor RADIUS

Parámetros generales servidor: en el fichero radiusd.conf se define parámetros generales del servidor RADIUS como directorio donde se guardan los logs, puerto por el que escucha las peticiones (por defecto 1812).
Configuración de clientes (NAS): en el fichero clients.conf se configuran los clientes que se conectan al servidor. Un ejemplo sería:

client 192.168.0.0/16 {
secret = clavesecreta
shortname = NAS1
nastype = cisco
}

Configuracion de los usuarios: en el fichero users se definen los parámetros de autenticación de los usuarios. Un ejemplo de deficion de usuario para acceso a los equipos:

Usuario1 Auth-Type := Local, User-Password == "CLAVE"
Service-Type = Login-User,

Configuración de grupos de usuarios: en el fichero huntgroups se definen los parámetros por los que se agrupan los usuarios y el nombre del grupo. Ejemplo: Los NAS dentro de la red 172.16.21.0 /24 pertenecen a la oficina Oficina1.

Oficina1 NAS-IP-Address =~ "^172\.16\.21\.*"

Configuración de usuario dentro de un grupo: en el fichero users se especifica que el usuario pertenece a ese grupo.

Usuario2 Auth-Type := Local, Huntgroup-Name == Oficina1, User-Password == "CLAVE2"
Service-Type = Login-User,
TACACS+

Hemos usado el software de libre distribución TAC-PLUS. Para nuestro caso lo hemos usado como servidor de autenticación de comandos y como servidor de accounting de los comandos que se ejecutan.
Configuracion de servidor TACACS

Al contrario de FreeRADIUS, en TAC-PLUS se configura todo en un único fichero, en concreto en el fichero tacacs.conf.

Configuración de accounting: Les decimos a ruta del fichero donde se guardan los logs de accounting.

accounting file = /var/log/tac-plus/accounts.log

Configuracion de autorización de comandos. Por ejemplo para el usuario Usuario1 solamente vamos a permitir que ejecute el comando “show run”, el resto es denegado.

user = Usuario1
{
default service = deny
cmd = show
{
permit run
}
}


Configuracion de NAS de cisco

La configuración básica de un NAS de cisco es:

Configuración del servidor RADIUS contra el que se autentica:

# radius-server host X.Y.Z.W auth-port 1812 acct-port 1812

Configuración de la clave secreta. Deberá coincidir con la definida para ese NAS en el servidor RADIUS.

# radius-server key CLAVE

Configuración del servidor TACACS contra el que se autentica:

# tacacs-server host X.Y.Z.W auth-port 1812 acct-port 1812

Configuración de la clave secreta. Deberá coincidir con la definida para ese NAS en el servidor TACACS.

# tacacs-server key CLAVE

Habilitar AAA:

# aaa new-model

Configuración de autenticación de usuario en el login vía RADIUS y si en su defecto el servidor no está accesible que use las credenciales de acceso local:

# aaa authentication login default group radius local

Configuración de autorización al usuario para que al entrar en modo exec le asigne los privilegios definidos en el servidor RADIUS y si en su defecto el servidor no está accesible que use los privilegios definidos localmente:

# aaa authorization exec default group radius local

Ejemplo: Usuario3 adquiere privilegios de nivel 15.

Usuario3 Auth-Type := Local, User-Password == "CLAVE3"
cisco-avpair == "shell:priv-lvl=15",
Service-Type = Login-User,

Configuración de la autorización a un usuario a ejecutar determinados comandos de nivel 15.

# aaa authorization commands 15 default group tacacs+ none

Configuración de accounting de los comandos de nivel 15 ejecutados por el usuario.

# aaa accounting commands 15 default stop-only group tacacs+


Cisco bueno...

No hay comentarios: