21.2. Configuración PAM para sshd

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.3. Configuración predeterminada para la sección account

account required        pam_unix2.so

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.


SUSE LINUX Manual de administración 9.3