Loguear todos los comandos de Linux a Wazuh

Hay muchas opciones para loguear todos los comandos de un usuario o todos los usuarios en Linux hacia Wazuh, en este artículo mostraremos como hacerlo con rsyslog que esta instalado por defecto en muchas distros de Linux.

  1. Agrega al final del archivo /etc/bash.bashrc (Ubuntu/Debian) o /etc/bashrc (RedHat/CentOS) lo siguiente:
    export PROMPT_COMMAND='RETRN_VAL=$?;logger -t LinuxCommandsWazuh -p local6.debug "User $(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" )"'
  2. Crea un nuevo archivo para rsyslog: /etc/rsyslog.d/bash.conf
  3. Configura «local6» para loguear en el archivo bash.conf: local6.* /var/log/commands.log.
    Nota: otros números locales se pueden usar y pueden ser especificados en la opción export del paso 1
  4. Encuentra la línea *.*;auth,authpriv.none -/var/log/syslog en el archivo /etc/rsyslog.d/50-default.conf y cámbialo a:
    *.*;auth,authpriv.none,local6.none -/var/log/syslog
    Estamos excluyendo a local6 para que no loguee a var/log/syslog, si omitimos este paso tendremos los comandos en ambos archivos /var/log/commands.log y var/log/syslog.
    Nota: este procedimiento aplica para Ubuntu 22.04 y puede variar por distro
  5. Reinicia rsyslog: systemctl restart rsyslog
  6. Configura la rotación del archivo “/var/log/commands.log” agregandolo en el archivo correspondiente de ryslog: /etc/logrotate.d/rsyslog (Ubuntu/Debian) o /etc/logrotate.d/syslog (RedHat/CentOS).
  7. Vuelve a ingresar al sistema Linux y ya debería estar funcionando.

En este punto ya podremos loguear todos los comando ejecutados por todos los usuarios al archivo /var/log/commands.log

Configuración en Wazuh:

Ahora tenemos que especificar al agente de Wazuh que lea ese archivo, la mejor manera es desde la configuración de grupos, creamos un grupo llamado linux-ubuntu y agregamos lo siguiente:

<agent_config>
<localfile>
  <location>/var/log/commands.log</location>
  <log_format>syslog</log_format>
</localfile>
</agent_config>

Ahora tenemos que crear decoders y reglas en Wazuh que reconozcan todos los eventos, agregamos en el paso uno LinuxCommandsWazuh lo que hará este proceso más fácil.

Decoders:

<decoder name="Linux-commands">
  <program_name>^LinuxCommandsWazuh</program_name>
</decoder>

<decoder name="Linux-commands1">
  <parent>Linux-commands</parent>
  <regex>User (\w+) [\d+]: (\.+)</regex>
  <order>User, Command</order>
</decoder>

Regla:

<group name=”Linux-commands,”>
<rule id="100002" level="3">
         <program_name>LinuxCommandsWazuh</program_name>
         <description>Command: “$(Command)” executed by $(User) in $(hostname)</description>
         <group>syslog, local</group>
 </rule>
</group>

Ingeniero de Seguridad informática, Administrador IT, anteriormente docente de tecnología, apasionado por la ingeniería y como aprovechar la tecnología para nuestro beneficio

Artículos relacionados

Deja una respuesta

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