Una vez descritos los aspectos teóricos sobre la configuración de PAM, procederemos a describir un ejemplo práctico acerca de cómo configurar PAM para sshd:
Ejemplo 21.1. Configuración PAM para sshd
#%PAM-1.0 auth include common-auth auth required pam_nologin.so account include common-account password include common-password session include common-session # Enable the following line to get resmgr support for # ssh sessions (see /usr/share/doc/packages/resmgr/README.SuSE) #session optional pam_resmgr.so fake_ttyname
Una configuración típica de PAM para una aplicación (en este caso sshd)
contiene cuatro declaraciones que corresponden a los archivos de configuración
de cuatro tipos de módulos: common-auth,
common-account, common-password, y
common-session. Estos cuatro archivos contienen la
configuración predeterminada para cada tipo de módulo. Si los incluye en lugar
de activar cada módulo por separado para cada aplicación PAM, la configuración
se actualizará automáticamente cada vez que el administrador cambie los valores
predeterminados. Anteriormente era necesario adaptar todos los archivos de
configuración manualmente para todas las aplicaciones cada vez que PAM era
modificado o se instalaba una nueva aplicación. La configuración de PAM con
todos sus cambios se transmiten a través de los archivos de configuración
predeterminados.
El primer archivo include (common-auth) activa dos
módulos de tipo auth: pam_env y
pam_unix2 (ver el Ejemplo 21.2, “Configuración predeterminada para la sección auth”).
Ejemplo 21.2. Configuración predeterminada para la sección auth
auth required pam_env.so auth required pam_unix2.so
El primer módulo, pam_env, lee el archivo
/etc/security/pam_env.conf y define las variables de
entorno especificadas en él. Aquí puede configurarse, por ejemplo, la variable
DISPLAY con su valor correcto, ya que el módulo
pam_env conoce la ubicación desde la que el usuario está
intentando iniciar la sesión. El segundo módulo,
pam_unix2, compara la contraseña y el nombre de usuario
con las entradas de /etc/passwd y
/etc/shadow.
Una vez que los módulos especificados en common-auth se
han activado con éxito, un tercer módulo llamado
pam_nologin comprueba si el archivo
/etc/nologin existe. En caso afirmativo, sólo root podrá entrar al sistema. La pila completa de
módulos auth se procesa antes de que el daemon ssh reciba
una notificación respecto a si el inicio de sesión se ha realizado
satisfactoriamente o no. Puesto que todos los módulos pertenecientes a la pila
incorporan el marcador de control required, deben ser
procesados con éxito para que sshd reciba un resultado positivo. En caso de que se
produzca un error durante la ejecución de alguno de estos módulos, el resultado
final será considerado como negativo, aunque sshd no tendrá conocimiento de
ello hasta que todos los módulos de la pila hayan sido procesados.
Después de haber procesado todos los módulos de tipo
auth, se inicia el tratamiento de otra declaración include,
en este caso la mostrada en el Ejemplo 21.3, “Configuración predeterminada para la sección account”.
common-account contiene únicamente un módulo,
pam_unix2. Si pam_unix2 concluye que el
usuario existe, sshd recibe un mensaje anunciando el resultado positivo y se
procesa la siguiente pila de módulos (password) mostrada en
el Ejemplo 21.4, “Configuración predeterminada para la sección password”.
Ejemplo 21.4. Configuración predeterminada para la sección password
password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok #password required pam_make.so /var/yp
La configuración de PAM para sshd contiene únicamente una declaración
include referente a la configuración predeterminada para los módulos
password, la cual está incluida en
common-password. Es necesario que estos módulos se procesen
satisfactoriamente (marcador de control required) cada vez
que la aplicación solicite el cambio de un elemento de la autenticación. La
modificación de una contraseña u otro elemento de autenticación requiere una
comprobación de seguridad, la cual es realizada por el módulo
pam_pwcheck. El módulo pam_unix2 que
se utiliza posteriormente guarda las contraseñas nuevas y antiguas de
pam_pwcheck para que el usuario no tenga que volver a
autenticarse. Esto también hace que sea imposible evitar las comprobaciones
realizadas por pam_pwcheck. Los módulos de tipo
password deben utilizarse en los casos en los que los
módulos anteriores de tipo account o auth
hayan sido configurados para quejarse acerca de una contraseña caducada.
Ejemplo 21.5. Configuración predeterminada para la sección session
session required pam_limits.so session required pam_unix2.so
Finalmente, los módulos del tipo session agrupados en el
archivo common-session se activan para poder configurar
adecuadamente las especificaciones relativas a la sesión del usuario. Aunque el
módulo pam_unix2 se inicia de nuevo, la opción
none está seleccionada en el archivo de configuración de este
módulo (pam_unix2.conf), por lo que su ejecución no tiene
ninguna consecuencia práctica. El módulo pam_limits lee el
archivo /etc/security/limits.conf, en el que pueden
establecerse los límites para la utilización de algunos recursos del
sistema. En caso de que el usuario cierre la sesión, se inician de nuevo los
módulos session.