Administración del servidor

Configurar y usar Linux-PAM

En la publicación anterior, hablamos acerca del firewall de Linux iptables , y algunas personas preguntaron sobre la autenticación. Hoy hablaremos sobre el potente framework en Linux utilizado para la autenticación Linux-PAM. PAM o módulos de autenticación conectables (Pluggable Authentication Modules) son la capa de gestión que se encuentran entre las aplicaciones de Linux y el sistema de autenticación nativo del Linux.

 


Beneficio de Linux-PAM

Hay muchos programas en tu sistema que utilizan módulos PAM como su, passwd, ssh, login y otros servicios, discutiremos algunos de ellos.

El enfoque principal de PAM es autenticar a tus usuarios.

La autenticación en Linux se realiza al hacer coincidir la contraseña encriptada en el archivo /etc/shadow con la ingresada.

Tenemos muchos servicios en nuestros sistemas que requieren autenticación como SSH, FTP , TELNET, IMAP y muchos otros, por lo que tendremos muchos archivos de autenticación además del archivo /etc/shadow que hacerles mantenimiento, y podría ser un problema grave si existe algún tipo de información inconsistente entre estos archivos de autenticación.

En esto entra PAM. Linux-PAM ofrece un sistema de logueo unificado para tus servicios.

Para verificar si tu programa utiliza Linux-PAM o no realiza lo siguiente:

$ ldd /bin/su

linux PAM check pam usability

Deberías ver la biblioteca libpam.so.

 

Configuración Linux-PAM

La configuración de Linux-PAM está en el directorio  /etc/pam.d/.

Algunos módulos PAM requieren archivos de configuración PAM para funcionar. Puedes encontrar estos archivos de configuración en  /etc/security

Servicios de PAM

 

Los cuatro tipos de servicios PAM:

Los cuatro tipos de servicios PAM:

  • Módulos de servicio de autenticación.
  • Módulos de administración de cuentas.
  • Módulos de gestión de sesiones.
  • Módulos de gestión de contraseñas.

Cualquier aplicación que requiere autenticación puede registrarse en PAM utilizando un nombre de servicio.

Puedes listar los servicios de Linux que usan Linux-PAM de la siguiente forma.

$ ls /etc/pam.d/

Linux PAM services

Si abres un archivo de servicio, verás que está dividido en tres columnas. La primera columna es el grupo de administración, la segunda columna es para las banderas de control y la tercera columna es el módulo (por lo tanto, el archivo) utilizado.

$ cat /etc/pam.d/sshd

account    required     pam_nologin.so

La cuenta es el grupo de administración, required es la bandera de control y el módulo utilizado es pam_nologin.so.

Se puede observar una cuarta columna que es para los parámetros del módulo.

 



Grupos de gestión

Hay cuatro grupos de administración que verás en los archivos de servicios de PAM:

  • GrupoAuth: puede validar usuarios
  • Grupo Account: controla el acceso al servicio, por ejemplo, cuántas veces deberías un servicio determinado.
  • Grupo Session: responsable del entorno de servicio.
  • Grupo Password: se utilizar para la actualización de contraseñas.

 

Banderas de control

Tenemos cuatro banderas de control en los archivos de servicios:

  • Requisite: la bandera de más precedencia.Si el requisito no se encuentra o no se puede cargar, dejará de cargar otros módulos y retornará un error.
  • Required: lo mismo que el requisite, pero si el módulo no se pudo cargar por algún motivo, continúa cargando otros módulos y retorna el error al final de la ejecución.
  • Sufficient: si el módulo retorna éxito, el procesamiento de otros módulos ya no es necesario.
  • Optional: en caso de falla, la pila de módulos continúa la ejecución y el código de retorno se ignora

 

Orden de los módulos

El orden es importante porque cada módulo depende del módulo anterior en la pila.

Si intentas una configuración como la siguiente para iniciar sesión:

Funcionará correctamente, pero ¿qué pasará si cambiamos el orden de esta manera?

Nadie puede iniciar sesión, por lo que el orden importa.

 


Módulos PAM

Hay módulos integrados PAM en tu sistema que debes conocer, para que puedas usarlos perfectamente.

 

Módulo pam_succeed_if

Este módulo permite el acceso a grupos especificados. Puedes validar cuentas de usuario de esta manera:

auth required pam_succeed_if.so gid=1000,2000

La línea anterior indica que solo los usuarios en el grupo cuyo ID este entre 1000 o 2000 pueden iniciar sesión.

Puedes usar uid como id de usuario.

auth requisite pam_succeed_if.so uid >= 1000

En este ejemplo, cualquier id de usuario mayor o igual a 1000 puede iniciar sesión.

También puedes utilizarlo con un parámetro de grupo como se muestra a continuación:

auth required pam_succeed_if.so user ingroup mygroup

Solo las personas del grupo llamado mygroup pueden iniciar sesión.

 

Módulo pam_nologin

Este módulo permite a los usuarios root que inicien sesión si el archivo  /etc/nologin está disponible.

auth required pam_nologin.so

Puedes modificar el archivo de servicio de logueo con esta línea y crear el archivo /etc/nologin, de modo que solo los usuarios root puedan iniciar sesión.

Este módulo se utiliza con los grupos de administración auth y account.

 

Módulo pam_access

Este módulo funciona como el módulo pam_succeed_if, excepto que el módulo pam_access verifica el registro de los hosts en red, mientras que al módulo pam_succeed_if no le importa.

account required pam_access.so accessfile=/etc/security/access.conf

Puede escribir reglas para este módulo en el archivo  /etc/security/access.conf  así:

Las reglas anteriores establecen que solo los usuarios de mygroup pueden iniciar sesión mientras que otros no.

Donde el signo de adición significa permitir y el símbolo de sustracción negar.

Este módulo se usa con los grupos de administración auth, account, session y password.

 


Módulo pam_deny

Este módulo se usa para restringir el acceso. Siempre devolverá un no OK.

Puedes usarlo al final de tu pila de módulos para protegerte de cualquier configuración incorrecta.

Si lo usa al principio de la pila de módulos, tu servicio se desactivará:

This module is used with auth, account, session, password management groups.

 

Módulo pam_unix

Este módulo se utiliza para verificar las credenciales del usuario contra el archivo /etc/shadow.

auth required pam_unix.so

Verás que este módulo se usa en muchos servicios de tu sistema.

Este módulo se utiliza con auth, session, y password.

 

Módulo pam_localuser

Utilizado para verificar si el usuario aparece en /etc/passwd.

account sufficient pam_localuser.so

El módulo se usa con auth, session, password y account.

 


Módulo pam_mysql

En lugar de verificar las credenciales del usuario contra /etc/shadow, puedes usar una base de datos MySQL como back-end utilizando el módulo pam_mysql.

Se puede usar como se muestra a continuación:

Los parámetros para pam_mysql se usan para validar al usuario.

Puedes instalarlo si no lo tienes en tu sistema de esta manera:

$ yum install libpam-mysql

Este módulo se usa con auth, session, password y account.

 

pam_cracklib module

Las contraseñas seguras son imprescindibles en estos días. Este módulo garantiza que usarás contraseñas seguras.

password required pam_cracklib.so retry=4 minlen=12 difok=6

Este ejemplo se asegura que:

La longitud de la contraseña = 12

Cuatro veces para elegir una contraseña, de lo contrario, saldrá.

Tu nueva contraseña debe tener 6 caracteres nuevos con respecto a la contraseña anterior.

Este módulo se utiliza con el grupo de administración de password.

 

Módulo pam_rootok

Este módulo comprueba si el ID de usuario es 0, lo que significa que solo los usuarios root pueden ejecutar este servicio.

auth sufficient   pam_rootok.so

Puedes usar este módulo para garantizar que solo se permita el acceso a un servicio específico por usuarios root.

Este módulo se usa con el grupo de administración auth.

 

Módulo pam_limits

Este módulo se utiliza para establecer límites en los recursos del sistema, incluso los usuarios root se ven afectados por estos límites.

La configuración de límites se encuentra en los directorios:    /etc/security/limits.conf y  /etc/security/limits.d/.

session  required  pam_limits.so

Puedes usar este módulo para proteger los recursos de su sistema.

Este módulo se utiliza con el grupo de administración sessions.

Los límites en el archivo /etc/security/limits.conf pueden ser fuertes o suaves.

Fuertes (Hard): el usuario no puede cambiar su valor, pero el root si puede.

Suave (Soft): el usuario normal puede cambiarlo.

Los límites pueden ser fsize, cpu, nproc, nproc, data y muchos otros límites.

El primer límite para los miembros de mygroup que establece el número de procesos para cada uno de ellos es 50.

El segundo límite para el usuario llamado myuser que limita el tiempo de CPU a 5000 minutos.

Puedes editar cualquier archivo de servicio PAM en /etc/pam.d/ y usar el módulo que desees para proteger tus servicios de la manera que quieras.

Espero que hayas entendido y se te facilite el uso de módulos Linux PAM.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *