Monitoreo de integridad de archivos críticos en Linux con Wazuh Syscheck y Whodata
Wazuh Syscheck rastrea cambios en archivos clave de Linux como /etc/passwd, /etc/shadow, /etc/sudoers y /etc/ssh/sshd_config. El modo Whodata captura el usuario y proceso que realiza los cambios mediante auditd. Esta configuración se aplica de forma centralizada a un grupo de agentes Linux, generando alertas de nivel 12.
Arquitectura de Wazuh y rol de Syscheck
Wazuh consta de un gestor para procesar eventos, agentes en los hosts y un panel basado en Kibana. Syscheck escanea archivos de forma programada o en tiempo real, verificando hashes, permisos y propiedad. En modo whodata, se integra con auditd para atribuir los cambios.
Características clave:
- Escaneos periódicos cada 300 segundos.
- Envío de diffs de cambios.
- Detección de nuevos archivos en directorios.
- Exclusión de archivos temporales para reducir ruido.
Preparación de los agentes
Instala auditd en todos los agentes Linux del grupo linux.
Para sistemas tipo RHEL:
sudo dnf install audit audispd-plugins -y
sudo systemctl enable --now auditd
Para Debian/Ubuntu:
sudo apt install auditd audispd-plugins -y
sudo systemctl enable --now auditd
Verifica el estado: sudo auditctl -l.
Confirma que existe el grupo linux: ls -la /var/ossec/etc/shared/. Créalo en la interfaz si no existe.
Configuración centralizada de agent.conf
Edita /var/ossec/etc/shared/linux/agent.conf en el gestor:
<agent_config>
<syscheck>
<frequency>300</frequency>
<whodata>yes</whodata>
<diff>yes</diff>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/passwd</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/shadow</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/sudoers</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/ssh/sshd_config</directories>
<ignore>/etc/passwd-</ignore>
<ignore>/etc/shadow-</ignore>
<ignore>/etc/sudoers.tmp</ignore>
<ignore>/etc/.pwd.lock</ignore>
<alert_new_files>yes</alert_new_files>
<scan_on_start>yes</scan_on_start>
<auto_ignore>no</auto_ignore>
</syscheck>
</agent_config>
Reinicia: sudo systemctl restart wazuh-manager.
Parámetros clave:
check_all="yes"— Verificación completa de atributos.whodata="yes"— Atribución vía auditd.report_changes="yes"— Diffs en alertas.alert_new_files="yes"— Alertas para nuevos archivos.
Reglas de alertas de alta prioridad
Añade a /var/ossec/etc/rules/local_rules.xml:
<group name="syscheck,">
<rule id="100100" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/passwd</field>
<description>CAMBIO CRÍTICO: /etc/passwd modificado</description>
<mitre>
<id>T1078</id>
<id>T1136</id>
</mitre>
</rule>
<rule id="100101" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/shadow</field>
<description>CAMBIO CRÍTICO: /etc/shadow modificado (contraseñas)</description>
<mitre>
<id>T1003</id>
<id>T1078</id>
</mitre>
</rule>
<rule id="100102" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/sudoers</field>
<description>CAMBIO CRÍTICO: /etc/sudoers modificado</description>
<mitre>
<id>T1078</id>
<id>T1548</id>
</mitre>
</rule>
<rule id="100104" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/ssh/sshd_config</field>
<description>CAMBIO CRÍTICO: /etc/ssh/sshd_config modificado</description>
<mitre>
<id>T1078</id>
<id>T1548</id>
</mitre>
</rule>
<rule id="100103" level="10">
<if_sid>554</if_sid>
<field name="file">/etc/passwd</field>
<field name="file">/etc/shadow</field>
<field name="file">/etc/sudoers</field>
<options>alert_by_email</options>
<description>Usuario detectado modificando archivo crítico: $(file) - $(audit.user.name)</description>
<mitre>
<id>T1078</id>
</mitre>
</rule>
</group>
Reinicia el gestor. Las reglas se activan con if_sid 550 (cambio de archivo), nivel 12 para prioridad.
Prueba de la configuración
En un agente, verifica: sudo cat /var/ossec/etc/shared/agent.conf | grep -A5 "syscheck".
Simula un cambio:
sudo cp /etc/passwd /etc/passwd.backup.test
echo "testuser:x:9999:9999:Test User:/home/testuser:/bin/bash" | sudo tee -a /etc/passwd
Las alertas mostrarán JSON con rule.level=12, syscheck.path, audit.user.name (root), process.name (tee) y diff.
Restaura: sudo cp /etc/passwd.backup.test /etc/passwd && sudo rm /etc/passwd.backup.test.
Lecciones clave
- Syscheck con whodata rastrea autores de cambios vía auditd.
- Configuración centralizada para grupo linux reduce trabajo manual.
- Reglas de nivel 12 con etiquetas MITRE para /etc/passwd, /etc/shadow, etc.
- Diffs y atribución en alertas para investigaciones forenses.
- Exclusiones de archivos temporales reducen falsos positivos.
Escalado del monitoreo
Amplía a /etc/hosts.allow, configuraciones de nginx/apache, claves SSH. Añade respuesta activa para bloqueos e integraciones con sistemas de notificación externos.
— Editorial Team
Aún no hay comentarios.