Cargando



Cómo funciona y configurar PAM en Linux

Tutorial para saber cómo funciona y configurar PAM en Linux, administrar grupos y controles, verificar si un programa es compatible y restringir el acceso root.


dic 17 2018 17:16
Avanzado
Total de Apartados : 4

La seguridad cuando administramos usuarios en ambientes Linux es esencial y debemos siempre buscar las mejores opciones disponibles para tal fin ya sea a nivel interno o externo.Uno de los métodos mas seguros para aumentar la seguridad en los sistemas Linux es administrar de una forma mucho mas completa la forma como los usuarios se autentican en el sistema, esto permite que solo aquellos usuarios que disponen de las credenciales correctas son los que tendrán acceso al sistema.

 

Para este caso contamos con una funcionalidad llamada Linux-PAM (Pluggable Authentication Modules for Linux - Módulos de autenticación conectables para Linux) la cual se ha desarrollado como un conjunto de bibliotecas con las cuales será posible que el administrador del sistema seleccione la forma en que las aplicaciones autentican a los usuarios de la red local.
Al compilar una aplicación compatible con PAM, estamos en la posibilidad de cambiar entre los mecanismos de autenticación usada.

 

Para entender un poco mejor este concepto podemos analizar la forma como se autentican los usuarios en la actualidad, en primer lugar la identidad del usuario se verifica cuando se ingresa la contraseña asignada al usuario, estas contraseñas se alojan en el archivo /etc/passwd, luego, el privilegio se define en forma de un identificador de usuario personal llamado UID y la pertenencia a los grupos disponibles, los servicios y las aplicaciones están disponibles en base a la identidad personal y grupal de cada usuario.

 

Pasos para crear múltiples factores de autenticación o MFA en el login con SSH de CentOS 7.

 

La biblioteca de PAM está configurada de forma local en el archivo de sistema /etc/pam.conf o en una serie de archivos ubicados en /etc/pam.d/ con el fin de autenticar una solicitud de usuario a través de los módulos de autenticación disponibles solo de forma local.

 

Los módulos están disponibles en el directorio /lib/security o /lib64/security. La sintaxis del archivo de configuración /etc/pam.conf está compuesta de una lista de reglas, y cada regla está ubicada en una sola línea, pero puede extenderse con un final de línea `\ <LF> '. Los comentarios están precedidos por las marcas `# 'y se extienden al siguiente final de la línea seleccionada.

 

El formato de cada regla es una colección de fichas separadas por espacios, las tres primeras no distinguen entre mayúsculas y minúsculas así:

service type control module-path module-arguments
Los parámetros usados son:

 

Service
Es el nombre real de la aplicación.

Type
Es el tipo de módulo / contexto / interfaz.

Control
Hace referencia al comportamiento de la API PAM por si el módulo no pueda ejecutar la tarea de autenticación

Module path
Es el nombre de archivo absoluto o la ruta de acceso relativa del PAM.

module-arguments
Indica una lista separada por espacios de tokens con el fin de controlar el comportamiento del módulo.

 

La sintaxis de cada archivo en /etc/pam.d/ es idéntica y está formada por líneas con la siguiente estructura:

type control-flag module module-arguments
Por ejemplo, una definición de regla (sin argumentos de módulo) disponible en el archivo /etc/pam.d/sshd, la cual no permite inicios de sesión no root cuando esté disponible /etc/nologin es:
account required pam_nologin.so

1. Cómo administrar grupos y controles de PAM en Linux


Las tareas de autenticación de PAM se catalogan en cuatro grupos de administración independientes, cada uno de estos grupos gestionan diferentes aspectos de la solicitud de un usuario para un servicio restringido.

 

Un módulo está asociado a uno de estos tipos de grupos de administración de la siguiente forma:

 

account
Este valor ofrece los servicios para la verificación de la cuenta con aspectos como caducidad de la contraseña del usuario o si el usuario tiene permitido el acceso al servicio solicitado.

authentication
Con este valor se autentica a un usuario y se puede configurar las credenciales de usuario.

password
Permiten actualizar las contraseñas de los usuarios y se integran junto a los módulos de autenticación de PAM

session
Esta se encarga de administrar las acciones ejecutadas al principio y al final de una sesión.

 

Los archivos de objetos PAM estan alojados en el siguiente directorio /lib/security/ o /lib64/security según la arquitectura usada.

 

Los indicadores de control soportados en PAM son:

 

requisite
Con este indicador el fallo retorna instantáneamente el control a la aplicación, indicando la naturaleza de la falla del primer módulo.

required
Se indica que todos los módulos son necesarios para que libpam sea ejecutado de forma correcta y devuelva el éxito a la aplicación

sufficient
Este módulo conduce a un retorno inmediato y correcto de la aplicación, en este caso se omite la falla de este módulo.

optional
El éxito o fracaso de este módulo generalmente no se registra en este indicador

 

Existen otros valores como:

 

include
Allí se incluyen todas las líneas del tipo en base al archivo de configuración especifico como un argumento para este control.

substack
Incluye todas las líneas del tipo dado del archivo de configuración especificado como un argumento para este control especifico.

 


2. Cómo verificar que un programa es compatible con PAM en Linux


Para implementar PAM en una aplicación, esta debe haber sido escrita y compilada específicamente para usar PAM, para comprobar si esa aplicación es compatible o no, por ejemplo, SSH, ejecutaremos lo siguiente:
sudo ldd /usr/sbin/sshd | grep libpam.so

 


3. Cómo restringir el acceso root a través de SSH con PAM en Linux


PAM puede ser usado para deshabilitar el acceso del usuario root a un sistema a través de SSH y programas de inicio de sesión y esto ayuda a aumentar las opciones de seguridad del sistema.

 

Si deseamos realizar esto, usaremos el modulo /lib/security/pam_listfile.so el cual nos da la opción de limitar los privilegios de cuentas específicas.

 

Paso 1

Para realizar esta acción, vamos a acceder al archivo /etc/pam.d/ de la siguiente forma:
sudo nano /etc/pam.d/sshd
O
sudo nano /etc/pam.d/login
Paso 2

Allí veremos lo siguiente:

 

 

Paso 3

Para este caso añadiremos las siguientes líneas al final:
auth	required	   pam_listfile.so \
		onerr=succeed  item=user sense=deny file=/etc/ssh/deniedusers

 

En este caso se han añadido los siguientes parámetros:

 

auth
Es el tipo de módulo a usar

required
Es un indicador de control con el cual, si se usa el módulo, debe aprobarse o el resultado general tendrá error sin importar el estado de otros módulos.

pam_listfile.so
Es un módulo con el cual se permite negar o permitir servicios basados en un archivo arbitrario.

onerr=succeed
Es el argumento del módulo.

item=user
Es el argumento del módulo en el cual se indica lo que se enumera en el archivo y que se debe verificar.

sense=deny
Hace referencia al argumento del módulo en el cual se especifica la acción a realizar si se encuentra en el archivo, en caso de no ser así, se solicita la acción opuesta.

file=/etc/ssh/deniedusers
Es el argumento del módulo en el cual se especifica un archivo que contiene un elemento por línea.

 

Guardamos los cambios usando las teclas Ctrl + O y salimos del editor usando Ctrl + X.

 

Luego de esto debemos crear el archivo /etc/ssh/deniedusers y añadir el usuario root en él y posteriormente asignar los permisos respectivos:

sudo chmod 600 /etc/ssh/deniedusers

4. Cómo configurar de forma avanzada de PAM en Linux


Un valor especial es el valor predeterminado en PAM, con lo cual todos los valores no se mencionan explícitamente, por ello, el valorN corresponde al código de retorno de la función invocada en el módulo para el cual se define la línea.
La acción dispone de algunos argumentos como:

 

ignore
En caso de usar esta acción con una pila de módulos, el estado de retorno del módulo no genera un código de retorno de la aplicación.

bad
Indica que el código de retorno debe considerarse como indicativo de los fallos del módulo usado.

die
Cumple la misma función de bad, pero está en la capacidad de terminar la pila de módulos y PAM regresa inmediatamente a la aplicación.

ok
Este valor indica a PAM que el administrador del sistema usara este código de retorno directamente al código de retorno de la pila completa de módulos.

done
Cumple el mismo rol de Ok, pero puede finalizar la pila de módulos

N
(un entero sin signo): equivale a ok, pero puede saltar sobre los siguientes N módulos en la pila.

Reset
Al usar este parámetro, se borra toda la memoria del estado de la pila de módulos y se reinicia con el siguiente módulo apilado.

 

Cada una de las palabras base de PAM, required; requisite; sufficient y optional, disponen de una expresión equivalente en términos de la [...] sintaxis, con la cual será posible escribir reglas más complejas como:

 

required
[success=ok new_authtok_reqd=ok ignore=ignore default=bad]

requisite
[success=ok new_authtok_reqd=ok ignore=ignore default=die]

sufficient
[success=done new_authtok_reqd=done default=ignore]

optional
[success=ok new_authtok_reqd=ok default=ignore]

 

Paso 1

Por ejemplo, en CentOS 7 podremos ver las reglas del archivo de PAM ejecutando:
sudo nano /etc/pam.d/postlogin

 

Paso 2

Si accedemos al archivo:
sudo nano  /etc/pam.d/smartcard-auth

 

Para acceder a mas ayuda de PAM podemos ejecutar:

man pam.d
Con PAM será posible crear o editar reglas para una mejor administración de los procesos de autenticación en Linux.

 

Tutorial para instalar y configurar un cliente o servidor OpenSSH en Linux (Ubuntu, Debian, CentOS, Fedora, RHEL) para cifrar el envío de información.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X