Auditd Se encarga de realizar un seguimiento de todo lo que va sucediendo en nuestro sistema GNU/Linux, en el cual va recopilando eventos sobre reglas pre-configuradas.
En esta entrada veremos como integrar Auditd con wazuh para así poder generar ciertas alertas.
Para ello, lo primero que tenemos que hacer es la instalación y configuración de Auditd en nuestro entorno.
RedHat
yum install audit
Debian
apt install auditd
Suse
zypper install audit
Agregamos las reglas en /etc/audit/rules.d/audit.rules.
Cualquiera de estas reglas pueden ser modificadas para adaptarlas a nuestras necesidades, En este caso esta configuración está realizada bajo un servidor Debian
## First rule - delete all
-D
## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192
## This determine how long to wait in burst of events
--backlog_wait_time 0
## Set failure mode to syslog
-f 1
################## Ignorar Registros ##################
## Ignorar registros de SELinux AVC
-a always,exclude -F msgtype=AVC
## Ignorar registros del area de trabajo
-a always,exclude -F msgtype=CWD
## Ignoar archivos EOE Ignore
-a always,exclude -F msgtype=EOE
## Ignorar registros cron
-a never,user -F subj_type=crond_t
-a exit,never -F subj_type=crond_t
-a exit,never -F subj_type=cron
## Ignorar registros de CRYPTO_KEY_USER
-a always,exclude -F msgtype=CRYPTO_KEY_USER
-a never,user -F subj_type=du
-a never,user -F subj_type=df
################## Controlar cambios de archivos ##################
## Parametros del kernel
-w /etc/sysctl.conf -p wa -k audit-wazuh-w
##Archivos especiales
#-a exit,always -F arch=b32 -S mknod -S mknodat -k audit-wazuh-x
#-a exit,always -F arch=b64 -S mknod -S mknodat -k audit-wazuh-x
##Contrab
-w /etc/cron.allow -p wa -k audit-wazuh-w
-w /etc/cron.deny -p wa -k audit-wazuh-w
-w /etc/cron.d/ -p wa -k audit-wazuh-w
-w /etc/cron.daily/ -p wa -k audit-wazuh-w
-w /etc/cron.hourly/ -p wa -k audit-wazuh-w
-w /etc/cron.monthly/ -p wa -k audit-wazuh-w
-w /etc/cron.weekly/ -p wa -k audit-wazuh-w
-w /etc/crontab -p wa -k audit-wazuh-w
-w /var/spool/cron/crontabs/ -k audit-wazuh-w
##Usuario y grupos
-w /etc/group -p wa -k audit-wazuh-w
-w /etc/passwd -p wa -k audit-wazuh-w
-w /etc/gshadow -k audit-wazuh-w
-w /etc/shadow -k audit-wazuh-w
-w /etc/security/opasswd -k audit-wazuh-w
##Sudoers
-w /etc/sudoers -p wa -k audit-wazuh-w
##hosts
-w /etc/hosts -p wa -k audit-wazuh-w
##fstab
-w /etc/fstab -p wa -k audit-wazuh-w
## Configuración de pam
-w /etc/pam.d/ -p wa -k audit-wazuh-w
-w /etc/security/limits.conf -p wa -k audit-wazuh-w
-w /etc/security/pam_env.conf -p wa -k audit-wazuh-w
-w /etc/security/namespace.conf -p wa -k audit-wazuh-w
-w /etc/security/namespace.init -p wa -k audit-wazuh-w
## Configuracuón de SSH
-w /etc/ssh/sshd_config -k audit-wazuh-w
################## Ejecución de comandos ##################
##Tuneles, rdesktop o sniffing
-w /usr/sbin/tcpdump -p x -k audit-wazuh-c
-w /usr/bin/nc -p x -k audit-wazuh-c
-w /bin/netcat -p x -k audit-wazuh-c
-w /usr/bin/ncat -p x -k audit-wazuh-c
-w /usr/bin/ssh -p x -k audit-wazuh-c
-w /usr/bin/socat -p x -k audit-wazuh-c
-w /usr/bin/wireshark -p x -k audit-wazuh-c
-w /usr/bin/rawshark -p x -k audit-wazuh-c
-w /usr/bin/rdesktop -p x -k audit-wazuh-c
-w /usr/bin/nmap -p x -k audit-wazuh-c
##Otros comandos interesantes
-w /usr/bin/wget -p x -k audit-wazuh-c
-w /usr/bin/curl -p x -k audit-wazuh-c
-w /usr/bin/base64 -p x -k audit-wazuh-c
##Elevar privilegios
-w /usr/sbin/useradd -p x -k audit-wazuh-c
-w /bin/su -p x -k audit-wazuh-c
-w /usr/bin/sudo -p x -k audit-wazuh-c
##Detectar el uso abusivo de root
-a always,exit -F dir=/home -F uid=0 -F auid>=1000 -F auid!=4294967295 -C auid!=obj_uid -k audit-wazuh-x
##Apagar servidor
-w /sbin/shutdown -p x -k audit-wazuh-c
-w /sbin/poweroff -p x -k audit-wazuh-c
-w /sbin/reboot -p x -k audit-wazuh-c
-w /sbin/halt -p x -k audit-wazuh-c
################## Injeccion de codigo con ptrace ##################
-a always,exit -F arch=b32 -S ptrace -k audit-wazuh-x
-a always,exit -F arch=b64 -S ptrace -k audit-wazuh-x
-a always,exit -F arch=b32 -S ptrace -F a0=0x4 -k audit-wazuh-x
-a always,exit -F arch=b64 -S ptrace -F a0=0x4 -k audit-wazuh-x
-a always,exit -F arch=b32 -S ptrace -F a0=0x5 -k audit-wazuh-x
-a always,exit -F arch=b64 -S ptrace -F a0=0x5 -k audit-wazuh-x
-a always,exit -F arch=b32 -S ptrace -F a0=0x6 -k audit-wazuh-x
-a always,exit -F arch=b64 -S ptrace -F a0=0x6 -k audit-wazuh-x
################## Instalacion de software ##################
# DEB (Debian)
-w /usr/bin/dpkg -p x -k audit-wazuh-c
-w /usr/bin/apt -p x -k audit-wazuh-c
Tras guardar el archivo de configuración de las reglas, activamos Auditd
systemctl enable auditd
systemctl start auditd
auditctl -R /etc/audit/rules.d/audit.rules
En Wazuh Agent debemos indicar que nos envié los logs de Auditd, para ello agregamos las siguientes lineas en: /var/ossec/etc/ossec.conf y reiniciamos el agente
<localfile>
<location>/var/log/audit/audit.log</location>
<log_format>audit</log_format>
</localfile>
Reinicamos el agente
systemctl restart wazuh-agent
Ahora nos tenemos que ir al servidor donde tenemos el rol de Wazuh Manager y configuramos la siguiente lista de patrones
/var/ossec/etc/lists/audit-keys
audit-wazuh-w:write
audit-wazuh-r:read
audit-wazuh-a:attribute
audit-wazuh-x:execute
audit-wazuh-c:command
De la misma forma, si queremos realizar algún tipo de regla extra la podemos realizar en: /var/ossec/etc/rules/local_rules.xml
En mi caso he realizado una alerta para poder identificar la modificación de los archivos shadow y passwd (La cual ya existe pero con un nivel muy bajo)
<group name="auditd,">
<rule id="221000" level="0">
<if_sid>80781</if_sid>
<field name="audit.file.name">/etc/shadow|shadow|passwd|/etc/passwd</field>
<description>Ignoring check</description>
<group>audit_watch_write,</group>
</rule>
<rule id="221002" level="12">
<if_sid>221000</if_sid>
<list field="data.audit.exe" lookup="match_key">etc/lists/editor-programs</list>
<description>User auid $(audit.auid) Watch - Write access: $(audit.file.name). Exe: $(audit.exe)</description>
<group>audit_watch_write,</group>
</rule>
</group>
Reiniciamos el servicio de Wazuh Manager
systemctl status wazuh-manager
Ahora nos vamos a la consola de Wazuh Manager > Agent > Seleccionamos el agente > System Auditing
:wq!