GNU/Linux >> Tutoriales Linux >  >> Linux

Una introducción a los módulos de autenticación conectables (PAM) en Linux

Los Módulos de autenticación conectables (PAM) han existido desde 1997. Me enseñaron que PAM se originó en Solaris de Sun, y parece que el primer uso y popularización empresarial ocurrió allí. Sin embargo, según un artículo de 1997 que encontré, la primera implementación completa fue la implementación de Linux-PAM. El artículo todavía está disponible en Linux Journal. La premisa básica y la implementación no han cambiado desde entonces. Hay algunas palabras clave nuevas y muchos módulos nuevos, pero en general el proceso es el mismo que hace 20 años.

Como la A en PAM indica, PAM se trata de autenticación. En la mayoría de los casos, cuando inicia sesión en un sistema a través de una consola o desde la red con SSH o Cockpit, PAM está involucrado. No importa si las cuentas de usuario se mantienen localmente o en una ubicación centralizada. Por mucho que se use, no es común manipular los archivos de configuración de PAM directamente. Otras utilidades lo hacen por ti. Se realizan muchos cambios en la instalación, como cuando se instala el sssd RPM o usando ipa-client-install utilidad. Las configuraciones adicionales más comunes pueden ser manejadas por authconfig (RHEL7 y anteriores) o authselect (RHEL8), o incluso a través de la interfaz web de Cockpit. La mayoría de los administradores no conocen los archivos de configuración de PAM hasta que se involucran en temas de seguridad y autenticación avanzada.

¿Qué ganamos con PAM?

PAM separa las tareas estándar y especializadas de autenticación de las aplicaciones. Programas como login , gdm , sshd , ftpd , y muchos más quieren saber que un usuario es quien dice ser, pero hay muchas maneras de hacerlo. Un usuario puede proporcionar una credencial de nombre de usuario y contraseña que se puede almacenar de forma local o remota con LDAP o Kerberos. Un usuario también puede proporcionar una huella digital o un certificado como credencial. Sería doloroso pedirle a cada desarrollador de aplicaciones que reescribiera las verificaciones de autenticación para cada método nuevo. Una llamada a las bibliotecas PAM deja los controles a los expertos en autenticación. PAM es conectable en el sentido de que podemos hacer que diferentes aplicaciones ejecuten diferentes pruebas y modular en el sentido de que podemos agregar nuevos métodos con nuevas bibliotecas.

Veamos los pasos de alto nivel que se toman cuando un usuario definido localmente inicia sesión en una consola basada en texto:

  • La aplicación de inicio de sesión solicita un nombre de usuario y una contraseña, luego hace un libpam llamada de autenticación para preguntar:"¿Este usuario es quien dice ser?" El pam_unix El módulo es responsable de verificar la autenticación de la cuenta local. También se pueden verificar otros módulos y, en última instancia, el resultado se devuelve al proceso de inicio de sesión.
  • El proceso de inicio de sesión luego pregunta:"¿Este usuario puede conectarse?", luego realiza una llamada de cuenta a libpam . El pam_unix El módulo comprueba cosas como si la contraseña ha caducado. Otros módulos pueden comprobar las listas de control de acceso basadas en el tiempo o en el host. Se devuelve una respuesta general al proceso.
  • Si la contraseña ha caducado, la aplicación responde. Algunas aplicaciones simplemente no pueden iniciar sesión en el usuario. El proceso de inicio de sesión solicita al usuario una nueva contraseña.
  • Para verificar la contraseña y escribirla en la ubicación correcta, el proceso de inicio de sesión realiza una llamada de contraseña a libpam . El pam_unix el módulo escribe en la sombra local expediente. También se pueden llamar a otros módulos para verificar la seguridad de la contraseña.
  • Si el proceso de inicio de sesión continúa en este punto, está listo para crear la sesión. Una llamada de sesión a libpam da como resultado el pam_unix módulo escribiendo una marca de tiempo de inicio de sesión en wtmp expediente. Otros módulos permiten la autenticación X11 o los contextos de usuario de SELinux.
  • Al cerrar la sesión, cuando se cierra la sesión, se puede realizar otra llamada de sesión a libpam . Esto es cuando el pam_unix módulo escribe la marca de tiempo de cierre de sesión en el wtmp archivo.

Hay muchos componentes para PAM

Si realiza un cambio en la autenticación mediante un programa como authconfig o authselect y quiere ver qué cambió, estos son algunos de los lugares para buscar:

/usr/lib64/seguridad
Una colección de bibliotecas PAM que realizan varias comprobaciones. La mayoría de estos módulos tienen páginas man para explicar el caso de uso y las opciones disponibles.

/etc/pam.d
Una colección de archivos de configuración para aplicaciones que llaman a libpam . Estos archivos definen qué módulos se comprueban, con qué opciones, en qué orden y cómo manejar el resultado. Estos archivos se pueden agregar al sistema cuando se instala una aplicación y otras utilidades los editan con frecuencia.

Dado que todas las aplicaciones realizan varias comprobaciones, estos archivos también pueden incluir instrucciones para llamar a otros archivos de configuración en este directorio. La mayoría de los módulos compartidos se encuentran en system-auth archivo para autenticación local y password-auth archivo para aplicaciones que escuchan conexiones remotas.

/etc/seguridad
Una colección de archivos de configuración adicionales para módulos específicos. Algunos módulos, como pam_access y pam_time , permita granularidad adicional para los controles. Cuando un archivo de configuración de la aplicación llama a estos módulos, las comprobaciones se completan utilizando la información adicional de sus archivos de configuración complementarios correspondientes. Otros módulos, como pam_pwquality , facilita que otras utilidades modifiquen la configuración colocando todas las opciones en un archivo separado en lugar de en la línea del módulo en el archivo de configuración de la aplicación.

/var/log/seguro
La mayoría de los errores de seguridad y autenticación se informan en este archivo de registro. Los permisos están configurados en este archivo para restringir el acceso.

man pam
Esta página del manual describe el proceso general, incluidos los tipos de llamadas y una lista de los archivos involucrados.

man pam.conf
Esta página del manual describe el formato general y define las palabras clave y los campos para pam.d archivos de configuración.

man -k pam_
Esta búsqueda de páginas de manual enumera las páginas disponibles para los módulos instalados.

Resumir

PAM permite un entorno de autenticación mucho más sólido que el que podrían proporcionar los servicios por aplicación. Ha estado en Linux durante muchos, muchos años y está involucrado en casi todos los procesos de identificación de usuarios.

En el próximo artículo, revisaré el formato de /etc/pam.d archivos de configuración.

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]


Linux
  1. ¿Qué es un usuario de Linux?

  2. Introducción a Nmap en Kali Linux

  3. Una introducción a la supervisión de cuentas de usuario de Linux

  4. Cambiar nombre de usuario en Linux

  5. Cómo restringir su acceso a un usuario solo por PAM en Linux

Cómo encontrar si un usuario está utilizando autenticación SSH basada en contraseña o clave en Linux

Comando su en Linux

Anatomía de un archivo de configuración de módulos de autenticación conectables (PAM) de Linux

Cómo mejorar la seguridad de los usuarios de Linux con la configuración del módulo de autenticación conectable

Autenticación PAM

Cómo cambiar de usuario en Linux