PAM (Español)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Estado de la traducción: esta traducción de PAM fue revisada el 2020-12-11. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Los módulos de autenticación conectables de Linux (Linux Pluggable Authentication Modules, o simplemente PAM) proporcionan un marco para la autenticación de usuarios en todo el sistema. Para citar el proyecto:

PAM proporciona una manera de desarrollar programas que son independientes del esquema de autenticación. Estos programas necesitan "módulos de autenticación" que se deben adjuntar en tiempo de ejecución para que funcionen. El módulo de autenticación que se adjuntará depende de la configuración del sistema local y queda a discreción del administrador del sistema local.

Este artículo explica los valores predeterminados de configuración base de Arch Linux para PAM para autenticar usuarios locales y remotos. La aplicación de cambios a los valores predeterminados está sujeta a artículos especializados reticulados por tema.

Instalación

El paquete pam es una dependencia del meta paquete base y, por lo tanto, instalado normalmente en un sistema Arch. Los módulos PAM están instalados exclusivamente en /usr/lib/security.

Los repositorios contienen una serie de paquetes PAM opcionales, en #Configuración guiada se muestran unos ejemplos.

Configuración

Un número de rutas en /etc son relevantes para PAM, ejecute pacman --query --list pam | grep /etc para ver los archivos de configuración por defecto creados. Se relacionan con los #Parámetros de seguridad para los módulos, o la configuración #Apilado base de PAM.

Parámetros de seguridad

La ruta /etc/security contiene la configuración específica del sistema para las variables que ofrecen los métodos de autenticación. La instalación básica lo puebla con los archivos de configuración predeterminados.

Note que Arch Linux no proporciona una configuración específica de distribución para estos archivos. Por ejemplo, el archivo /etc/security/pwquality.conf se puede utilizar para definir los valores predeterminados de todo el sistema para la calidad de la contraseña. Sin embargo, para activarlo, el módulo pam_pwquality.so debe añadirse al #Apilado base de PAM de los módulos, que no es el caso por defecto.

Véase #Configuración de los parámetros de seguridad para algunas de las posibilidades.

Apilado base de PAM

La ruta /etc/pam.d/ es exclusiva de la configuración de PAM para vincular las aplicaciones a los esquemas individuales de autenticación de los sistemas. Durante la instalación de la base del sistema se puebla con:

  • el paquete pambase, que contiene la pila base de la configuración PAM específica de Arch Linux para ser utilizada por las aplicaciones, y
  • otros paquetes base. Por ejemplo, util-linux añade la configuración para el inicio de sesión central y otros programas, el paquete shadow añade los valores predeterminados de Arch Linux para proteger y modificar la base de datos del usuario (véase Usuarios y grupos).

Los diferentes archivos de configuración de la instalación base se enlazan y apilan durante el tiempo de ejecución. Por ejemplo, en el inicio de sesión de un usuario local, la aplicación login carga la política system-local-login, que a su vez carga otros:

/etc/pam.d/
login -> system-local-login -> system-login -> system-auth

Para una aplicación diferente, se puede aplicar una ruta diferente. Por ejemplo, openssh instala su política de PAM sshd:

/etc/pam.d/
sshd -> system-remote-login -> system-login -> system-auth

En consecuencia, la elección del archivo de configuración en la pila es importante. Para el ejemplo anterior, se podría requerir un método de autenticación especial solo para sshd o para todos los inicios de sesión remotos cambiando system-remote-login; ambos cambios no afectarían los inicios de sesión locales. Aplicar el cambio a system-login o system-auth en cambio afectaría los inicios de sesión locales y remotos.

Al igual que en el ejemplo de sshd, se requiere que cualquier aplicación consciente de PAM instale su política en /etc/pam.d para integrar y confiar en la pila de PAM apropiadamente. Si una aplicación no lo hace, se aplica la política predeterminada para denegar de /etc/pam.d/other y se registra una advertencia.

Sugerencia: PAM está enlazado dinámicamente en tiempo de ejecución. Por ejemplo:
$ ldd /usr/bin/login | grep pam
libpam.so.0 => /usr/lib/libpam.so.0 (0x000003d8c32d6000)
libpam_misc.so.0 => /usr/lib/libpam_misc.so.0 (0x000003d8c30d2000)
la aplicación login es consciente de PAM y debe, por lo tanto, tener una política.

Las páginas del manual del paquete PAM pam(8) y pam.d(5) describen el contenido estandarizado de los archivos de configuración. En particular, explican los cuatro grupos de PAM: gestión de cuentas, autenticación, contraseña y sesión, así como los valores de control que pueden utilizarse para configurar el apilamiento y el comportamiento de los módulos.

Además, se ha instalado una extensa documentación en /usr/share/doc/Linux-PAM/index.html que, entre varias guías, contiene páginas de manual navegables para cada uno de los módulos estándar.

Advertencia: Los cambios en la configuración de PAM afectan fundamentalmente a la autenticación del usuario. Los cambios erróneos pueden dar como resultado que ningún usuario pueda iniciar sesión, o todos los usuarios pueden iniciar sesión.
Sugerencia: Los cambios no son efectivos para los usuarios ya autenticados, una forma de trabajar con PAM es iniciar sesión preferiblemente local en la máquina de prueba y desarrollar, manteniendo la sesión en constante ejecución, mientras verifica los resultados con otro usuario en otra consola.

Ejemplos

Dos ejemplos breves para ilustrar la advertencia anterior.

Primero, tomamos las siguientes dos líneas:

/etc/pam.d/system-auth
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so

De pam_unix(8): "El componente de autenticación pam_unix.so realiza la tarea de verificar las credenciales (contraseña) de los usuarios. La acción predeterminada de este módulo es no permitir que el usuario acceda a un servicio si su contraseña oficial está en blanco." - siendo lo último para lo que se utiliza pam_permit.so. Basta con intercambiar los valores de control required y optional para desactivar la autenticación de contraseña, es decir, cualquier usuario puede iniciar sesión sin proporcionar una contraseña.

Segundo, como ejemplo contrario, por configuración predeterminada de pam_nologin.so en /etc/pam.d/login, creando el siguiente archivo:

# touch /etc/nologin 

da como resultado que ningún usuario que no sea root pueda iniciar sesión (si se permiten inicios de sesión del superusuario, otro valor predeterminado para Arch Linux). Para volver a permitir los inicios de sesión, elimine el archivo. Posiblemente, desde la consola con la que lo creó.

Con eso como fondo, véase #Configuración del apilado y los módulos de PAM para configuraciones de casos de uso particulares.

Configuración guiada

Esta sección proporciona una descripción general del contenido que detalla cómo aplicar cambios a la configuración de PAM y cómo integrar nuevos módulos PAM especiales en la pila de PAM. Tenga en cuenta que, por lo general, se puede acceder a las páginas del manual de los módulos al eliminar la extensión .so.

Configuración de los parámetros de seguridad

Las siguientes secciones describen ejemplos para cambiar la configuración predeterminada de parámetros de PAM:

muestra cómo forzar contraseñas seguras con pam_cracklib.so.
muestra cómo configurar los limites en los intentos de inicio de sesión con pam_faillock.so.
limita los inicios de sesión de usuario con pam_wheel.so.
detalla cómo configurar los límites del proceso del sistema con pam_limits.so.
muestra ejemplos para establecer variables de entorno a través de pam_env.so.

Configuración del apilado y los módulos de PAM

Los siguientes artículos detallan cómo cambiar el #Apilado base de PAM para casos de uso especiales.

Módulos PAM de los repositorios oficiales:

ejemplos detallados para utilizar pam_mount.so para montar automáticamente las rutas de directorio cifradas en el inicio de sesión del usuario.
utiliza pam_ecryptfs.so para montar automáticamente un directorio cifrado.
muestra cómo utilizar pam_exec.so para ejecutar un script personalizado en un inicio de sesión de usuario.
utiliza pam_winbind.so y pam_krb5.so para que los usuarios se identifiquen a través de servicios Active Directory (LDAP, Kerberos).
es un artículo sobre la integración de la autenticación de cliente o servidor LDAP con pam_ldap.so.
se basa en pam_yubico.so en la pila de PAM para activar la autenticación a través del protocolo propietario Yubikey.
muestra un ejemplo para implementar la autenticación de dos factores (two-factor) basada en software con pam_oath.so.
emplea pam_fprintd.so para configurar la autenticación mediante huellas digitales.

Módulos PAM del repositorio de usuarios de Arch:

muestra cómo configurar pam_usb.so para utilizar un dispositivo USB para autenticar, opcionalmente, mediante dos factores.
utiliza pam_ssh.so para autenticar como un usuario remoto.
explica cómo se puede utilizar pam_abl.so para limitar los ataques de fuerza bruta a través de ssh.
puede ser montado automáticamente a través pam_encfs.so.
muestra cómo configurar la autenticación de dos factores con pam_google_authenticator.so.
explica cómo configurar un chroot FTP con pam_pwdfile.so para autenticar usuarios sin una cuenta local de sistema.

Otros paquetes de PAM

Aparte de los paquetes mencionados hasta ahora, el repositorio de usuarios de Arch Contiene varios módulos y herramientas PAM adicionales.

Las utilidades de propósito general relacionadas con PAM son:

http://linux-pam.org/ || libx32-pamAUR
  • Pamtester — Programa para probar la instalación de los módulos de autenticación conectables (PAM)
http://pamtester.sourceforge.net/ || pamtesterAUR

Tenga en cuenta que AUR cuenta con una etiqueta de palabra clave para PAM, pero no todos los paquetes disponibles se actualizan para incluirlo. Por lo tanto, puede ser necesario buscar en la descripción del paquete.

Véase también