GNU/Linux >> Tutoriales Linux >  >> Linux

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

En un artículo anterior, describí el flujo de una aplicación que llama a las bibliotecas PAM para la autenticación a un nivel muy alto. En este artículo, revisaremos los archivos de configuración para un sudo local. comando.

Al usar sudo , cambiamos de usuario y hacemos algo. Este cambio de privilegio requiere la verificación de que somos quienes decimos que somos y se nos permite realizar la acción dada. El /etc/sudoers El archivo controla quién puede hacer qué, pero el proceso aún llama a PAM para cualquier verificación de autenticación. Como parte de estas llamadas, el proceso se identifica a sí mismo y luego libpam busca un archivo de configuración coincidente en /etc/pam.d directorio.

$ cat /etc/pam.d/sudo
#%PAM-1.0
#Type       ReturnCode   Modules       Options
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
session    include      system-auth

Como muchos otros directorios *.d, la administración de paquetes puede agregar o eliminar un archivo de este directorio. El sudo RPM agrega el /etc/pam.d/sudo archivo.

$ rpm -qf /etc/pam.d/sudo
sudo-1.9.0-0.1.b4.fc31.x86_64

Una versión anterior puede tener una variedad de entradas, pero este paquete proporcionado por la distribución incluye un archivo de configuración que tiene varios incluir declaraciones al común /etc/pam.d/system-auth archivo proporcionado por pam paquete.

Campos del archivo de configuración

El primer campo de este archivo identifica un Tipo de llamada realizada a PAM. Las líneas del mismo tipo se agrupan. Hay cuatro tipos:autenticación, cuenta, contraseña y sesión. Mira a man pam para obtener una descripción de cada tipo.

El segundo campo se conoce como ReturnCode . Este campo le permite a PAM saber cómo manejar los resultados de la prueba del módulo. Los códigos de retorno indican si una prueba es obligatoria u opcional. Los códigos también pueden usarse para indicar que la línea no es una prueba de módulo con opciones, sino el nombre de otro archivo de configuración con comprobaciones adicionales. Una descripción completa de los códigos de retorno se encuentra en man pam.conf , y los más comunes se analizan más adelante en este artículo.

El resto de la línea contiene el nombre del módulo y las opciones para ese módulo. El nombre del módulo debe coincidir con un módulo disponible en /etc/lib64/security directorio. Las opciones pueden ser diferentes según el tipo de llamada realizada. Algunos módulos solo realizan pruebas para algunos tipos de llamadas. Utilice la página de manual de cada módulo para ver ejemplos y conocer los usos y las opciones disponibles.

El orden de las entradas dentro de un tipo de llamada es importante. Esto se debe principalmente a cómo se procesan los códigos de retorno, pero en algunos casos a una acción del módulo. Cuando libpam recibe un mensaje de "hecho" o "morir", informa el resultado general al proceso de llamada.

La configuración para sudo tiene varios incluir líneas. Estas líneas le dicen a libpam para incluir todas las líneas de un tipo determinado del archivo de configuración especificado. También hay una subpila opción, que es similar en la forma en que incluye líneas de un archivo de configuración dado, pero en un "hecho" o "morir", informa a la subpila instrucción en lugar del proceso original llamando a libpam . Las versiones anteriores de PAM tenían otras variaciones sobre cómo se incluían otros archivos de configuración. Por ejemplo, cuando comencé a explorar PAM hace casi 20 años, había un módulo específico llamado con los archivos de configuración como argumento. La palabra clave "incluir" no era válida para el ReturnCode campo.

Códigos de retorno en los archivos de configuración central

El /etc/pam.d/sudo El archivo mostrado anteriormente es bastante corto. Tres de los cuatro tipos de llamadas tienen solo un incluir de otro archivo. El /etc/pam.d/system-auth El archivo es más típico de un archivo de configuración, con muchas comprobaciones para cada tipo de llamada.

$ cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_sss.so forward_pass
auth        required      pam_deny.so
...omitted...

El requerido La palabra clave es quizás la más común. Indica que el módulo debe pasar la verificación para que se devuelva un pase general a la aplicación. Sin embargo, incluso en caso de falla, se verificarán las siguientes líneas de ese tipo. Esta es una práctica de mucho tiempo de no compartir ningún motivo de una falla de autenticación. En los sistemas de hace 20 años, podría haber sido posible adivinar cómo falló la autenticación por el tiempo que tardó en fallar.

El requisito la palabra clave es similar a obligatorio en que la verificación debe pasar, pero en caso de falla, devuelve un mensaje de "morir". Requisito vamos a libpam sepa que las siguientes líneas no se verificarán y para informar al proceso de llamada de los resultados generales, en este caso, una falla.

El suficiente palabra clave es casi lo contrario de requisito . En caso de éxito, se devuelve un mensaje de "hecho" y libpam continúa y envía sus resultados generales a la aplicación que llama. Se ignoran otros resultados de este módulo y la comprobación continúa.

El suficiente palabra clave es común cuando podría haber varias formas de verificar un criterio. Por ejemplo, al verificar una contraseña, el usuario puede definirse en el /etc/passwd local. y /etc/shadow archivos, o solo pueden estar definidos en un sistema central al que se accede con sssd . El pam_unix módulo comprueba los archivos locales. Si tiene éxito, no hay necesidad de continuar y verificar los servicios centralizados. Sin embargo, si el usuario no está definido localmente, no queremos registrar una falla, queremos ignorar el resultado y probar el pam_sss módulo. Dado que el suficiente La palabra clave nunca falla realmente, es común agregar un pam_deny requerido línea después de una serie de suficiente líneas. El pam_deny módulo siempre falla como el /bin/false ejecutable.

El opcional la palabra clave es similar a suficiente en que ignora cualquier falla. Sin embargo, en caso de éxito, actúa más como el requerido palabra clave configurando un valor "ok" y continuando con las comprobaciones adicionales.

Dado que ambos requisito y suficiente pueden ser puntos de salida de la pila de módulos, el orden en el archivo de configuración es importante. Las líneas después de esas palabras clave pueden ejecutarse o no.

Códigos de retorno complejos

Más allá de la sintaxis de palabras clave simples, los códigos de retorno complejos se definen con pares clave-valor entre corchetes. El /etc/pam.d/system-auth El archivo tiene una muestra en la sección de sesión de la sintaxis más compleja.

$ cat /etc/pam.d/system-auth
...omitted...
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

Puede encontrar la sintaxis compleja que coincide con cada palabra clave en pam.conf página de manual El - que se muestra arriba también se define en la página del manual. Indica que se puede omitir el registro si el módulo no está instalado en el sistema.

¿Qué sigue?

Ahora que podemos analizar cuándo ocurre una llamada y una salida con libpam , el siguiente paso es comprender mejor el caso de uso de cada módulo. La mayoría de los módulos tienen una página de manual que explica el uso y muestra ejemplos de líneas que deberían aparecer en el pam.d Archivos de configuración. Algunos de los módulos también hacen referencia a archivos complementarios en /etc/security directorio. Esos archivos están bien comentados y, a menudo, también tienen su propia página de manual. La pam_pwquality y pam_limits los módulos son buenos ejemplos para empezar.

Resumir

En el siguiente artículo, revisaré algunos de los cambios realizados con authconfig utilidad. Si desea comenzar a editar archivos usted mismo y tiene una suscripción de aprendizaje de Red Hat, consulte el capítulo sobre PAM en el curso Red Hat Security:Linux in Physical, Virtual, and Cloud (RH415).

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


Linux
  1. Linux – ¿Todo es un archivo?

  2. Guía para principiantes sobre la configuración del módulo kernel en Linux

  3. Comprender el archivo de configuración /etc/profile en Linux

  4. ¿Cómo guardar o exportar una configuración personalizada del kernel de Linux?

  5. Ubicación no predeterminada para el archivo de configuración ssh en Linux

Menos comando en Linux

Comando Gzip en Linux

Comando Gunzip en Linux

Comando Stat en Linux

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

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