Aplicación de Líneas Base de Seguridad y Controles de Cumplimiento

CompTIABeginner
Practicar Ahora

Introducción

En la administración de sistemas y la ciberseguridad, una línea base de seguridad (security baseline) es un nivel estandarizado de configuración de seguridad mínima para un sistema o red. Establecer líneas base es un paso fundamental para endurecer los sistemas, reducir la superficie de ataque y garantizar una postura de seguridad coherente en toda una organización. Los controles de cumplimiento (compliance controls) son los mecanismos y procedimientos utilizados para verificar que estas líneas base se cumplen y se mantienen.

En este laboratorio, obtendrá experiencia práctica con estos conceptos en un sistema Linux. Aprenderá a definir una línea base de seguridad simple para nuevas cuentas de usuario, verificar que la línea base se aplica correctamente y configurar el Demonio de Auditoría de Linux (auditd) para monitorear archivos de configuración críticos en busca de cambios no autorizados. Este proceso es crucial para mantener la integridad del sistema y cumplir con los requisitos de cumplimiento normativo.

Al final de este laboratorio, usted será capaz de:

  • Modificar la configuración predeterminada de usuarios a nivel de sistema.
  • Crear nuevos usuarios que cumplan con una línea base de seguridad definida.
  • Verificar el cumplimiento utilizando comandos estándar de Linux.
  • Configurar auditd para detectar cambios en archivos críticos.
  • Buscar y revisar registros de auditoría para eventos de seguridad.

Definir una Línea Base de Seguridad Simple para Valores Predeterminados de Usuario en Linux

En este paso, definirá una línea base de seguridad simple estableciendo políticas de contraseña predeterminadas para todos los usuarios nuevos creados en el sistema. Editaremos el archivo /etc/login.defs, que controla estas configuraciones predeterminadas.

Primero, abriremos el archivo de configuración usando nano con privilegios de sudo, ya que es un archivo a nivel de sistema.

sudo nano /etc/login.defs

Dentro del editor nano, desplácese hacia abajo para encontrar los siguientes tres parámetros relacionados con el envejecimiento de contraseñas y modifique sus valores. Puede usar Ctrl + W para buscar texto dentro de nano.

  • PASS_MAX_DAYS: El número máximo de días que se puede usar una contraseña. Lo estableceremos en 90.
  • PASS_MIN_DAYS: El número mínimo de días permitidos entre cambios de contraseña. Lo estableceremos en 7.
  • PASS_WARN_AGE: El número de días de advertencia que se da antes de que expire una contraseña. Lo estableceremos en 14.

Encuentre estas líneas y cámbielas para que se vean así:

#
## Password aging controls:
#
## PASS_MAX_DAYS Maximum number of days a password may be used.
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
## PASS_WARN_AGE Number of days warning is given before a password expires.
#
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

Después de realizar los cambios, guarde el archivo y salga de nano presionando Ctrl + X, luego Y, y finalmente Enter.

Ahora ha establecido una línea base de seguridad simple para las políticas de contraseña en su sistema. Cualquier usuario nuevo creado a partir de este momento heredará estas configuraciones.

Verificar el Cumplimiento de la Línea Base con Comandos del Sistema

En este paso, verificará que la línea base que definió en el paso anterior se está aplicando correctamente. La forma más directa de hacerlo es crear un nuevo usuario e inspeccionar las propiedades de su cuenta.

Primero, creemos un nuevo usuario llamado compliance_user. El comando useradd aplicará automáticamente la configuración predeterminada de /etc/login.defs. La bandera -m asegura que se cree un directorio de inicio para el usuario.

sudo useradd -m compliance_user

Este comando no producirá ninguna salida si tiene éxito. Ahora, podemos verificar la configuración de envejecimiento de contraseñas para nuestro nuevo usuario utilizando el comando chage (change age) con la bandera -l (list).

sudo chage -l compliance_user

Debería ver una salida similar a la siguiente. Observe cómo los valores de "Maximum number of days between password change" (Número máximo de días entre cambios de contraseña), "Minimum number of days between password change" (Número mínimo de días entre cambios de contraseña) y "Number of days of warning before password expires" (Número de días de advertencia antes de que expire la contraseña) coinciden con la línea base que establecimos en /etc/login.defs.

Last password change                                    : Aug 05, 2025
Password expires                                        : Nov 03, 2025
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 14

Esta salida confirma que nuestra línea base es efectiva y que el sistema cumple con nuestra nueva política para usuarios nuevos.

Configurar Auditd para Monitorear Llamadas al Sistema

En este paso, configuraremos el Demonio de Auditoría de Linux (auditd) para monitorear nuestro archivo de configuración base, /etc/login.defs, en busca de cualquier cambio. Este es un control de cumplimiento crítico, ya que proporciona un registro de quién cambió el archivo y cuándo.

El servicio auditd utiliza un conjunto de reglas para determinar qué eventos registrar. Agregaremos una nueva regla para monitorear cualquier operación de escritura o cambio de atributos en nuestro archivo.

Agregaremos nuestra regla al archivo /etc/audit/rules.d/audit.rules. Usar echo y tee es una forma segura de agregar una línea a un archivo del sistema.

Ejecute el siguiente comando para agregar la regla de auditoría:

sudo echo "-w /etc/login.defs -p wa -k login_defs_changes" | sudo tee -a /etc/audit/rules.d/audit.rules

Analicemos esta regla:

  • -w /etc/login.defs: Especifica la ruta del archivo a monitorear.
  • -p wa: Establece los permisos a auditar. w es para acceso de escritura (write), y a es para cambios de atributos (attribute changes).
  • -k login_defs_changes: Asigna una clave personalizada login_defs_changes a estos eventos de auditoría, lo que facilita su búsqueda posterior.

Para que la nueva regla surta efecto, debe reiniciar el servicio auditd.

sudo systemctl restart auditd

Ahora, auditd está monitoreando activamente /etc/login.defs en busca de cualquier modificación.

Generar y Revisar Registros de Auditoría para la Aplicación de Políticas

En este paso, probará la regla de auditoría desencadenando un evento y luego revisando los registros generados. Esto demuestra que su control de cumplimiento está funcionando según lo esperado.

Para desencadenar la regla de auditoría, necesitamos modificar el archivo /etc/login.defs. Una forma sencilla de hacerlo sin cambiar el contenido es usar el comando touch, que actualiza las marcas de tiempo de acceso y modificación del archivo. Esta acción será detectada por auditd como un cambio de atributos.

sudo touch /etc/login.defs

Esta acción debería haber creado un evento en el registro de auditoría. Los registros se almacenan en /var/log/audit/audit.log, pero pueden ser extensos. Una mejor manera de encontrar eventos específicos es usar el comando ausearch con la clave que definimos en el paso anterior.

Busquemos todos los eventos etiquetados con nuestra clave, login_defs_changes:

sudo ausearch -k login_defs_changes

La salida contendrá uno o más registros relacionados con el comando touch. Se verá algo como esto (las marcas de tiempo y los IDs variarán):

----
time->Tue Dec 12 08:35:15 2023
type=PROCTITLE msg=audit(1702370115.321:101): proctitle=746F756368002F6574632F6C6F67696E2E64656673
type=PATH msg=audit(1702370115.321:101): item=0 name="/etc/login.defs" inode=131409 dev=00:1e mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1702370115.321:101): cwd="/home/labex/project"
type=SYSCALL msg=audit(1702370115.321:101): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc62e212d0 a2=90800 a3=0 items=1 ppid=1102 pid=1125 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="touch" exe="/usr/bin/touch" key="login_defs_changes"

Busque key="login_defs_changes" al final del registro SYSCALL. Esto confirma que auditd registró con éxito el evento de modificación de nuestro archivo de configuración crítico, lo que demuestra que nuestro control de monitoreo está activo y es efectivo.

Resumen

¡Felicitaciones por completar este laboratorio! Ha recorrido con éxito el proceso fundamental de aplicar una línea base de seguridad e implementar un control de cumplimiento en un sistema Linux.

En este laboratorio, aprendió a:

  • Definir una línea base de seguridad para las políticas de contraseñas de usuario modificando /etc/login.defs.
  • Verificar que la línea base se aplica correctamente a los nuevos usuarios con el comando chage.
  • Configurar el Demonio de Auditoría de Linux (auditd) para monitorear un archivo de configuración crítico en busca de cambios.
  • Desencadenar y revisar registros de auditoría usando ausearch para confirmar que su control de monitoreo está funcionando.

Estas habilidades son fundamentales para cualquier administrador de sistemas o profesional de seguridad responsable de endurecer sistemas, mantener la postura de seguridad y cumplir con estándares de cumplimiento como los CIS Benchmarks o las directrices NIST. Al establecer líneas base claras y monitorear continuamente las desviaciones, puede mejorar significativamente la seguridad e integridad de su infraestructura de TI.