Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Hardening – Securizando contraseñas con PAM en GNU/Linux

Hardening – Securizando  contraseñas con PAM en GNU/Linux

Tabla de contenidos

Hardening-GNUlinuxAnteriormente vimos como realizar una configuración  básica para securizar nuestros servidores GNU/Linux (Hardening básico en GNU/Linux), en este caso vamos a fortalecer las contraseñas de acceso de los usuarios mediante Módulos de Autentificación Conectables.

¿Que es PAM?

La estructura del módulo de autenticación conectable (PAM) permite a los administradores coordinar y configurar requisitos de autenticación de usuarios para cuentas, credenciales, sesiones y contraseñas sin modificar los servicios que requieren autenticación.

La estructura PAM permite a las organizaciones personalizar la experiencia de autenticación del usuario y la función de administración de contraseñas, sesiones y cuentas. Los servicios de entrada del sistema, como login y ssh, utilizan la estructura PAM para proteger todos los puntos de entrada del sistema recién instalado. PAM permite la sustitución o modificación de los módulos de autenticación en el campo para proteger el sistema contra cualquier debilidad recién detectada sin la necesidad de realizar cambios a ningún servicio del sistema que use la estructura PAM.

Instalación en Debian y derivados: :

bash
apt-get install libpam-cracklib

Configuramos las directivas en el archivo common-password

bash
vi /etc/pam.d/common-password

Instalación en Red-Hat y derivados:

bash
yum install cracklib

Configuramos las directivas en el archivo system-auth

bash
vi /etc/pam.d/system-auth

Configurar directivas:

Una vez dentro del archivo buscamos la linea «password        requisite                       pam_cracklib.so retry=3 minlen=8 difok=3«. En esta linea definimos la complejidad de la contraseña.

Ejemplo:

text
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 lcredit=1 ucredit=1 dcredit=1 ocredit=1
  • minlen: especifica el número mínimo de caracteres.
  • lcredit: especifica el número mínimo de letras minúsculas
  • ucredit: especifica el número mínimo de letras mayúsculas
  • dcredit: especifica el número mínimo de caracteres numéricos
  • ocredit: especifica el número de caracteres de otro tipo, como por ejemplo símbolos.

Definir el periodo de expiración de la contraseña:

Para establecer un período máximo para la contraseña, se debe editar las siguientes variables en /etc/login.defs.

text
PASS_MAX_DAYS   99999

PASS_MIN_DAYS   0

PASS_WARN_AGE   7

En mi caso lo he dejado así:

text
PASS_MAX_DAYS   100

PASS_MIN_DAYS   0

PASS_WARN_AGE   10

Esta directiva obligara a los usuarios a cambia la contraseña cada 100 días, y enviara un mensaje 10 días antes del vencimiento de la contraseña.

Mediante el comando chage podemos establecer la caducidad de las contraseñas a un usuario especifico.

Vemos la directivas de un usuario:

text
chage -l rokitoh

Último cambio de contraseña                    :ene 28, 2015

La contraseña caduca                    : nunca

Contraseña inactiva                    : nunca

La cuenta caduca                        : nunca

Número de días mínimo entre cambio de contraseña        : 0

Número de días máximo entre cambio de contraseña        : 99999

Número de días de aviso antes de que caduque la contraseña    : 7

Por defecto se establece que la contraseña de un usuario no caduque  nunca. Para cambiar esto simplemente ejecutamos el siguiente comando:

text
chage -E 5/02/2016 -m 10 -M 80 -I 30 -W 14 rokitoh
  • -E 5/02/2016: Esblece que la contraseña expirara el: 5/02/2016
  • -m 10 -M 80: Numero maximo/minimo de días entre los cambios.
  • -I 30: Se bloqueara a los 30 días despues de que expire la contraseña
  • -W 14: Envía el mensaje de advertencia 14 días antes de la expiración de la contraseña

Un saludo, rokitoh!

:wq!

Comentarios