Integrar auditd con Wazuh

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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *