Pluggable Authentication Modules (PAM)
Imobach González Sosa
Manolo Padrón Martínez
[email protected]
[email protected]
Versión 1.0
Curso 2003/04
Licencia
Copyright (c) 2004 Manolo Padrón Martínez, Imobach González Sosa.
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.2 or any later version published by
the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section entitled ”GNU Free
Documentation License”.
Índice
1. Acerca de este documento
2. Fundamentos básicos
2.1. ¿Qué es PAM?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Grupos de gestión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Arquitectura
4. Configuración
4.1. Enfoques de la organización de la configuración . . . . . . . . . . . . . . .
4.2. Reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5. Algunos módulos disponibles
1
2
2
3
4
6
6
6
11
5.1. pam console.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.2. pam cracklib.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3. pam deny.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.4. pam env.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.5. pam limits.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.6. pam nologin.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.7. pam permit.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.8. pam rootok.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.9. pam securetty.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.10. pam stack.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.11. pam wheel.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.12. pam xauth.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Ejemplos de configuración
17
6.1.
login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2. passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.3. su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Ampliación de sistemas operativos
Índice
6.4. other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A. Valores devueltos por los módulos de PAM
22
A.1. authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
A.2. account
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
A.3. password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
A.4. session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
B. Referencias
24
Ampliación de sistemas operativos
Índice
1. Acerca de este documento
Los Pluggable Authentication Modules se han convertido en el estándar de facto
para la autenticación de usuarios en los sistemas UNIX. Su gran flexibilidad ofrece a
administradores y desarrolladores un control muy valioso.
Gracias a PAM,
los administradores de sistemas pueden modelar e implementar
diferentes políticas de autenticación para los distintos usuarios de forma individualizada
para cada servicio. Pero hay que manejar estas facilidades con sumo cuidado, ya que una
mala decisión o, simplemente, un despiste pueden comprometer gravemente la seguridad
del sistema. Por tanto, el administrador tiene que conocer muy bien cómo funciona PAM
si, realmente, quiere afinar al máximo el proceso de autenticación de su sistema.
Este documento pretende servir como introducción a PAM, centrándose en la
implementación desarrollada por Red Hat para GNU/Linux, Linux-PAM, si bien los
conceptos básicos son los mismos que presentara Sun en su momento allá por 1995.
Como siempre, para obtener información más precisa, lo mejor es consultar directa-
mente la documentación oficial del proyecto, en http://www.kernel.org/pub/linux/libs/pam/.
Ampliación de sistemas operativos
Página 1
2. Fundamentos básicos
2.1.
¿Qué es PAM?
La idea original de los Pluggable Authentication Modules, en adelante PAM, fue de Sun
y sus especificaciones se encuentran recogidas en [5]. Sin embargo, muchos otros sistemas
adoptaron esta solución y cuentan desde hace tiempo con sus propias implementaciones.
En este sentido, GNU/Linux no es una excepción y, gracias a Red Hat, disfruta ya desde
hace años de la funcionalidad que ofrece Linux-PAM1.
Pero, ¿qué es PAM exactamente? Tal y como puede leerse en la FAQ2 oficial del
proyecto, PAM es, básicamente, un mecanismo flexible para la autenticación de usuarios.
Y quizás esta característica, la flexibilidad, sea su aportación más importante.
A lo largo de los años, desde los primeros sistemas UNIX,
los mecanismos de
autenticación han ido evolucionando y han aparecido nuevas opciones: desde mejoras
del clásico /etc/passwd —como la shadow — hasta dispositivos hardware orientados a la
autenticación. Y, claro está, cada vez que aparecía y se popularizaba un nuevo método,
los desarrolladores debían modificar sus programas para darles soporte.
PAM permite el desarrollo de programas independientes del mecanismo de autenti-
cación a utilizar. Así es posible que un programa que aproveche las facilidades ofrecidas
por PAM sea capaz de utilizar desde el sencillo /etc/passwd hasta dispositivos hardware
—como lectores de huella digital—, pasando por servidores LDAP 3 o sistemas de gestión
de bases de datos. Y, por supuesto, todo esto sin cambiar ni una sola línea de código.
Pero PAM va más allá todavía, permitiendo al administrador del sistema construir
políticas diferentes de autenticación para cada servicio.
En resumen, podrían sintetizarse las ventajas más importantes de PAM en los
siguientes puntos:
Ofrece un esquema de autenticación común y centralizado.
Permite a los desarrolladores abstraerse de las labores de autenticación.
Facilita el mantenimiento de las aplicaciones.
1A no ser que se indique lo contrario, a partir de ahora se hará referencia “PAM” y “Linux-PAM”
indistintamente.
2Frequently Asked Questions, http://www.kernel.org/pub/linux/libs/pam/FAQ
3Lightweight Directory Access Protocol
Ampliación de sistemas operativos
Página 2
Ofrece flexibilidad y control tanto para el desarrollador como para el administrador
de sistema.
2.2. Grupos de gestión
A pesar de lo que se ha explicado anteriormente, la misión de PAM no es, únicamente,
comprobar que un usuario es quien dice ser —autenticación—. Su alcance es mucho mayor
y pueden dividirse sus tareas en cuatro grupos independientes de gestión, cada uno de los
cuáles se encarga de un aspecto diferente de los servicios restringidos.
account (cuenta) En este grupo se engloban tareas que no están relacionadas
directamente con la autenticación. Algunos ejemplos son permitir/denegar el acceso
en función de la hora, los recursos disponibles o, incluso, la localización. Ofrece
verificación de cuentas de usuario. Por ejemplo, se encarga de determinar si el usuario
tiene o no acceso al servicio, si su contraseña ha caducado, etc.
authentication (autenticación) Tareas encaminadas a comprobar que, efectivamente,
el usuario es realmente quien dice ser. A menudo, cuando se habla de PAM, sólo
se tiene en cuenta esta tarea, ignorando las demás. Estas tareas ofrecen incluso un
sistema de credenciales que permiten al usuario ganar ciertos privilegios —fijados
por el administrador—.
password (contraseña) Se encarga de mantener actualizado el elemento de autenti-
cación asociado a cada usuario —por ejemplo, su contraseña—. Acciones como
comprobar la fortaleza de una clave son típicas de este grupo.
session (sesión) En este grupo se engloban tareas que se deben llevar a cabo antes
de iniciarse el servicio y después de que este finalice. Es especialmente útil para
mantener registros de acceso o hacer accesible el directorio home del usuario.
Ampliación de sistemas operativos
Página 3
3. Arquitectura
Hasta ahora se ha estudiado cuál es la misión de PAM y qué grupos de tareas lleva a
cabo. Así que, la siguiente pregunta es: ¿cómo se organizan todas estas ideas?
La figura 1, extraída de [?], ilustra de forma clara su arquitectura.
+
+----------+
+----------------+
| application: X |
+----------------+
| authentication-[---->--\--] Linux-
|
|[conversation()][--+
|
+----------------+
|
|
|
|
|
A
|
|
|
+------|-----|---------+ -----+------+
+----------------+
|
+================+
|--<--| PAM config file|
|
|================|
[----<--/--]
| X auth .. a.so |
|
|
| X auth .. b.so |
+-n--n-----+
|
__|
_____/
|____,-----’
service user
|
|
A
PAM
|
V
/
\
/
|
|
|--[ a ]--[ b ]--[ c ]
acct....
auth....
+---u-----u----+
|
+--------------+
|
+--------------+
|
+--------------+
|
+--------------+
password
session
|--[ b ]--[ d ]
|--[ b ]--[ c ]
|--[ e ]--[ c ]
Figura 1: Arquitectura de Linux-PAM
Supóngase que una aplicación X quiere hacer uso de las facilidades ofrecidas por PAM.
Para ello, interactúa con la biblioteca de Linux-PAM, sin tener que conocer ningún detalle
acerca de como está configurado el sistema para la aplicación X. Será precisamente esta
biblioteca quien se encargue de leer la configuración de PAM para conocer qué política de
autenticación ha de aplicarse —combinando de forma conveniente una serie de módulos—.
Los módulos se colocan en una pila según el grupo de gestión y el orden en el que
aparecen en la configuración —un módulo puede pertenecer a varios grupos—, para ser
Comentarios de: Pluggable Authentication Modules (PAM) (0)
No hay comentarios