PDF de programación - RADIUS en Linux y Cisco

Imágen de pdf RADIUS en Linux y Cisco

RADIUS en Linux y Ciscográfica de visualizaciones

Actualizado el 25 de Marzo del 2020 (Publicado el 16 de Abril del 2017)
572 visualizaciones desde el 16 de Abril del 2017
23,4 KB
9 paginas
Creado hace 16a (22/10/2003)
La Web de Miliu

1 Introducción

RADIUS en Linux y Cisco

Emilio José Mira Alfaro

emial@alumni.uv.es 12 de Agosto de 2001

RADIUS (Remote Authentication Dial In User Service) es un protocolo de control de accesos desarrollado por
Livingston Enterprises y que la IETF ha recogido en los RFCs 2865 y 2866. Fue diseñado para autenticar usuarios y
utiliza una arquitectura cliente/servidor. El servidor contiene información de los usuarios, almacenando sus passwords y
sus perfiles, y el cliente es el encargado de pasar las peticiones de conexión de los usuarios al servidor para que éste las
autentique y responda al cliente diciéndole si ese usuario está o no registrado.

Un ejemplo de uso de RADIUS se puede dar en un ISP, donde el NAS (Network Access Server) hace de cliente
RADIUS y un host del ISP podría hacer de servidor. El NAS recibe vía módem una petición de acceso y envía los datos
que el usuario ha proporcionado al servidor RADIUS. Es éste el que consulta su base de datos y comprueba si el usuario
que ha realizado la llamada es en realidad quien dice ser. En ese caso, responde al NAS con una respuesta de aceptación
de la llamada y, opcionalmente, con datos sobre el perfil del usuario (tipo de servicio, protocolo de conexión, IP
asignada, ...). En caso contrario notifica al NAS que debe rechazar la petición de conexión. Opcionalmente, el servidor
RADIUS guardará logs de las conexiones en las que estemos interesados.

A lo largo del texto veremos con algo más de detalle como funciona este protocolo y algunos ejemplos de configuración
para autenticar usuarios en Linux y Cisco. El servidor RADIUS elegido para las pruebas ha sido FreeRADIUS y se
puede descargar de www.freeradius.org . Los clientes son un PC Linux con PAM v.075 (
www.kernel.org/pub/linux/libs/pam/ ) modificado y un router Cisco 2500.

2 Protocolo RADIUS

La primeras páginas del RFC 2865 (las secciones 1 y 2, páginas de la 1 a la 13) describen el funcionamiento de este
protocolo. Ver [4].

3 Clientes RADIUS

3.1 Linux−PAM (Pluggable Authentication Modules for Linux)

Linux−PAM es el sistema de autenticación utilizado en Linux. Antes, cuando una aplicación quería ofrecer un servicio
para el que se requería autenticación (como es el caso de login), la aplicación pedía al usuario que tecleara su login y su
password, consultaba el fichero /etc/passwd para comprobar que los passwords encriptados correspondían, y
lanzaba una shell con el PID del usuario. Nuevas formas de autenticación obligaban a nuevos programas login que las
implementaran.

Con Linux−PAM se define una interfaz para que los programas como login que requieran de una autenticación sean
transparentes al tipo de autenticación utilizada. Para ello se escribió una librería ( libpam.so y libpam_misc.so ) que
implementaba la interfaz para todo lo relacionado con accesos al sistema. Ahora una aplicación ya no trabaja con el
fichero /etc/passwd, sino que llama a una función genérica autenticar(usuario, token) implementada en la librería y,
dependiendo de la configuración que hizo el administrador del sistema, esta función usará una forma u otra de validar a
ese usuario.

PAM tiene cuatro formas de actuación, que se transforman en cuatro grupos de funciones distintas dentro de la librería:



Authentication: utilizada para validar usuarios. Las funciones asociadas son: int

1/9

La Web de Miliu






pam_sm_authenticacion(...) int pam_sm_setcred(...)
Accounting: se utiliza para gestionar la cuenta del usuario (habilitación/deshabilitación de la cuenta, fecha de
expiración, etc.). La función asociada es: int pam_sm_acct_mgmt(...)
Password: actualización del password del cliente. Su función es: int pam_sm_chauthtok(...)
Session: gestión de la sesión del usuario (logs al inicio y al final, montaje de directorios del usuario, etc. ). Las
funciones son: int pam_sm_open_session(...) int pam_sm_close_session(...)

La aplicación llamará a estas funciones con los parámetros necesarios y PAM hará el resto. El administrador del sistema
es el encargado de decirle a PAM como ha de comportarse dependiendo de la aplicación que lo llame. Así, login puede
usar una forma de autenticación y xdm puede usar otra distinta, por ejemplo. Para ello aparecen los módulos, que son
los encargados de implementar la forma en al que se hará la autenticación, el accounting, la gestión de passwords y el
inicio y fin de la sesión. Podemos utilizar un módulo para la gestión de accesos en la forma tradicional que UNIX lo
hace y asociárselo a login, y otro modulo distinto que lea el password de una tarjeta electrónica y asignárselo a xdm, por
ejemplo.

3.1.1 Configuración de PAM

La configuración de PAM se puede hacer de dos formas distintas: editando el fichero /etc/pam.conf o editando los
fichero que aparecen en el directorio /etc/pam.d/. Si el directorio /etc/pam.d/ existe, PAM tomará la
configuración de los ficheros que contenga, y si no existe, la tomará del fichero /etc/pam.conf.

/etc/pam.conf

Este fichero está formado por lineas sucesivas que siguen la siguiente sintaxis:

aplicación tipo−del−modulo control ruta−del−modulo argumentos

aplicación

Nombre de la aplicación a la que se le aplicará la configuración que sigue la linea. Ejemplos: login, su, xdm, ...

tipo−del−modulo

Hay cuatro posibles tipos que corresponden con las cuatro formas de actuación que vimos antes: auth, account,
password y session.

control

Nos dice como reacciona PAM ante el fallo o éxito de esta línea. Puede tomar cuatro valores distintos:









required: es necesario que tenga éxito esta línea para que PAM devuelva PAM_SUCCESS a la aplicación. Si
falla esta línea, el control no se pasa directamente a la aplicación, sino que se sigue la ejecución del resto de
líneas asociadas al mismo tipo−de−modulo, aunque PAM ya sepa que devolverá un fallo a la aplicación.
requisite: igual que antes, pero ahora, cuando falle esta línea, el control será pasado directamente a la
aplicación, sin ejecutar el resto de líneas asociadas a este mismo tipo−de−modulo.
sufficient: el éxito de esta línea significa el éxito del módulo dentro de este tipo−de−modulo, sin importar las
líneas sucesivas de este mismo tipo.
optional: si tiene o no éxito esta línea no influye para nada en el comportamiento de PAM.

ruta−del−modulo

Localización absoluta del módulo. En Red Hat se encuentra en el directorio /lib/security/ , mientras que en el
resto de distribuciones se suele encontrar en /usr/lib/security/.

argumentos

Lista de argumentos para ejecutar el módulo separados únicamente por espacios en blanco.

2/9

La Web de Miliu

El funcionamiento de PAM es el siguiente: cuando se ejecuta una aplicación como login, esta aplicación llamará a las
funciones que hemos descrito antes. Primero, login llamará a pam_sm_authentication(...), que está asociada
con el tipo de módulo auth. La llamada tendrá como argumentos, entre otras cosas, el nombre de usuario, el password y
el terminal desde el que se está haciendo la conexión. Esta función le da el control a PAM, que buscará en
/etc/pam.conf todas las líneas cuyo campo de aplicación sea login y su tipo−de−modulo, auth. Para cada una de
estas líneas, PAM cargará el módulo indicado en ruta−del−modulo y lo ejecutará con los argumentos que haya en
argumentos. Dependiendo del contenido del campo control, PAM reaccionará de una forma u otra ante el fallo o éxito
de este módulo. Cuando pam_sm_authentication(...) haya finalizado, login puede proceder de dos formas: si
la función ha devuelto éxito, puede continuar la autenticación estableciendo los credenciales de este usuario con
pam_sm_setcred(...) y seguir con el proceso de conexión. Si no ha tenido éxito mostrará un mensaje por pantalla
diciendo: ``Login incorrect''.

Veamos un ejemplo de configuración de /etc/pam.conf:

login auth required /lib/security/pam_securetty.so

login auth sufficient /lib/security/pam_unix.so likeauth nullok md5 shadow

login auth required /lib/security/pam_deny.so

login auth required /lib/security/pam_nologin.so

login account sufficient /lib/security/pam_unix.so

login account required /lib/security/pam_deny.so

login password required /lib/security/pam_cracklib.so retry=3

login password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow

login password required /lib/security/pam_deny.so

login session required /lib/security/pam_limits.so

login session required /lib/security/pam_unix.so

login session optional /lib/security/pam_console.so

Esta parte de /etc/pam.conf configura la seguridad en el programa login. Cuando login llame a
pam_sm_authentication(...), se buscarán en este fichero las líneas de configuración para login con el tipo de
módulo auth. PAM ejecutará primero el módulo pam_securetty.so, que comprueba que si es el usuario root el que
intenta establecer una conexión, ha de hacerlo desde una terminal incluida en el fichero /etc/securetty. Si
añadimos en este fichero las terminales de la tty1 a la tty6, obligaremos a que el usuario root, siempre que se registre en
el sistema, lo haga desde la terminal física y no por telnet. Eso sí, todavía podríamos llegar a ser superusuarios desde
telnet por medio del comando su.

Si el módulo pam_securetty.so devuelve éxito, PAM pasaría a la siguiente línea. Para ello carga el módulo pam_unix.so
que buscará el password de ese usuario en /etc/shadow con encriptación md5. Si el usuario y el password
corresponden con los que PAM le pasó al módulo, devolverá éxito, por lo que como el contenido del campo control era
sufficient, pam_sm_authentication(...) devuelve PAM_SUCCESS a login, y login sabe que puede continuar
con la conexión. En el caso de que el usuario hubiese equivocado su contraseña o que no fuese el usuario legítimo, este
módulo fallaría y PAM continuaría con el siguiente, pam_deny.so, que fallaría y provocaría que
pam_sm_authentication(...) d
  • Links de descarga
http://lwp-l.com/pdf2948

Comentarios de: RADIUS en Linux y Cisco (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad