Lab03 Wazuh Vulnerability Detector

Objetivo

En este laboratorio vamos activar el detector de vulnerabilidades. Es necesario activar el modulo tanto en la parte del servidor como en los clientes. La activación en los clientes es diferente si son clientes tipo Windows o tipo Linux. También aprovecharemos para aprender como trabajar con grupos y distribuir configuraciones desde el servidor.

Configuración

La configuración se tiene que realizar en las dos partes, tanto servidor como cliente.

Servidor

En la parte del servidor tendremos que editar el fichero de configuración var/etc/ossec/ossec.conf del siguiente modo:

<ossec_config>
<vulnerability-detector>
    <enabled>yes</enabled>
    <interval>5m</interval>
    <ignore_time>6h</ignore_time>
    <run_on_start>yes</run_on_start>

    <!-- Ubuntu OS vulnerabilities -->
    <provider name="canonical">
    <enabled>yes</enabled>
    <os>trusty</os>
    <os>xenial</os>
    <os>bionic</os>
    <os>focal</os>
    <update_interval>1h</update_interval>
    </provider>

    <!-- Debian OS vulnerabilities -->
    <provider name="debian">
    <enabled>yes</enabled>
    <os>stretch</os>
    <os>buster</os>
    <update_interval>1h</update_interval>
    </provider>

    <!-- RedHat OS vulnerabilities -->
    <provider name="redhat">
    <enabled>yes</enabled>
    <os>5</os>
    <os>6</os>
    <os>7</os>
    <os>8</os>
    <os allow="Centos Linux-8">8</os>
    <update_interval>1h</update_interval>
    </provider>

    <!-- Windows OS vulnerabilities -->
    <provider name="msu">
    <enabled>yes</enabled>
    <url>https://feed.wazuh.com/vulnerability-detector/windows/msu-updates.json.gz</url>
    <update_interval>1h</update_interval>
    </provider>

    <!-- Aggregate vulnerabilities -->
    <provider name="nvd">
    <enabled>yes</enabled>
    <update_from_year>2010</update_from_year>
    <update_interval>1h</update_interval>
    </provider>

</vulnerability-detector>
</ossec_config>

Una vez modificado el fichero reiniciamos el servicio desde el terminal como root:

systemctl restart wazuh-manager

Al arrancar de nuevo el servicio de Wazuh-Manager y se descarga el listado de vulnerabilidades configurado anteriormente.

La primera vez que realiza la descarga tarda bastante, pues la realiza completamente, luego solo actualiza. Por este motivo se aconseja solo tener activo lo que necesitemos según nuestra plataforma, es mas óptimo y rápido. Dado nuestra plataforma actual:

Solo dejaremos activo lo que necesitemos y así sera mas efectivo y rápido. Es importante tener en cuenta también el intervalo de actualización configurado.

Agentes

Como siempre tenemos las diferencias entre Windows y Linux, con lo cual vamos a crear dos grupos y sus configuraciones correspondientes para cada uno de ellos.

Grupos

Desde el terminal como root en el path de los binarios de Wazuh (/var/ossec/bin/)

Listamos que grupos tenemos:

#./agent_groups 
Groups (1):
  default (3)
Unassigned agents: 0.

Creamos dos grupos, uno para Linux otro para Windows:

#./agent_groups -a -g Windows
Do you want to create the group 'Windows'? [y/N]: y
Group 'Windows' created.
#./agent_groups -a -g Linux
Do you want to create the group 'Linux'? [y/N]: y
Group 'Linux' created.

Teniendo estos agentes:

#./agent_control -l

Wazuh agent_control. List of available agents:
   ID: 000, Name: wzuaio (server), IP: 127.0.0.1, Active/Local
   ID: 001, Name: db1000-01, IP: any, Active
   ID: 002, Name: w1000-01, IP: any, Active
   ID: 003, Name: ub200400-01, IP: any, Active

List of agentless devices:

Los id`s 001 y 003 los asociaremos al grupo Linux y el id 002 al grupo Windows:

#./agent_groups -a -i 001 -g Linux
Do you want to add the group 'Linux' to the agent '001'? [y/N]: y
Group 'Linux' added to agent '001'.
#./agent_groups -a -i 003 -g Linux
Do you want to add the group 'Linux' to the agent '003'? [y/N]: y
Group 'Linux' added to agent '003'.
#./agent_groups -a -i 002 -g Windows
Do you want to add the group 'Windows' to the agent '002'? [y/N]: y
Group 'Windows' added to agent '002'.

Comprobamos que todo esta en su sistio:

#./agent_groups -l -g Linux
2 agent(s) in group 'Linux':
  ID: 001  Name: db1000-01.
  ID: 003  Name: ub200400-01.
#./agent_groups -l -g Windows
1 agent(s) in group 'Windows':
  ID: 002  Name: w1000-01.

Ahora tendremos la siguiente estructura de directorios:

/var/ossec/etc/shared/
├── agent-template.conf
├── ar.conf
├── default
│   ├── agent.conf
│   ├── cis_apache2224_rcl.txt
│   ├── cis_debian_linux_rcl.txt
│   ├── cis_mysql5-6_community_rcl.txt
│   ├── cis_mysql5-6_enterprise_rcl.txt
│   ├── cis_rhel5_linux_rcl.txt
│   ├── cis_rhel6_linux_rcl.txt
│   ├── cis_rhel7_linux_rcl.txt
│   ├── cis_rhel_linux_rcl.txt
│   ├── cis_sles11_linux_rcl.txt
│   ├── cis_sles12_linux_rcl.txt
│   ├── cis_win2012r2_domainL1_rcl.txt
│   ├── cis_win2012r2_domainL2_rcl.txt
│   ├── cis_win2012r2_memberL1_rcl.txt
│   ├── cis_win2012r2_memberL2_rcl.txt
│   ├── merged.mg
│   ├── rootkit_files.txt
│   ├── rootkit_trojans.txt
│   ├── system_audit_rcl.txt
│   ├── system_audit_ssh.txt
│   ├── win_applications_rcl.txt
│   ├── win_audit_rcl.txt
│   └── win_malware_rcl.txt
├── Linux
│   ├── agent.conf  ---> fichero de configuración a distribuir en los miembros del grupo.
│   └── merged.mg
└── Windows
    ├── agent.conf  ---> fichero de configuración a distribuir en los miembros del grupo.
    └── merged.mg

Linux

Para agentes Linux el fichero tendrá este contenido:

<agent_config>
<!-- System inventory -->
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <scan_on_start>yes</scan_on_start>
  <hardware>yes</hardware>
  <os>yes</os>
  <network>yes</network>
  <packages>yes</packages>
  <ports all="no">yes</ports>
  <processes>yes</processes>

  <!-- Database synchronization settings -->
  <synchronization>
    <max_eps>10</max_eps>
  </synchronization>
</wodle>
</agent_config>

Windows

Para agentes Windows el fichero tendrá este contenido:

<agent_config>
<!-- System inventory -->
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <scan_on_start>yes</scan_on_start>
  <hardware>yes</hardware>
  <os>yes</os>
  <network>yes</network>
  <packages>yes</packages>
  <ports all="no">yes</ports>
  <processes>yes</processes>
  <hotfixes>yes</hotfixes>

  <!-- Database synchronization settings -->
  <synchronization>
    <max_eps>10</max_eps>
  </synchronization>
</wodle>
</agent_config>

Ahora verificamos que las configuraciones se sincronizaron correctamente:

#./agent_groups -S -i 001
Agent '001' is synchronized. 
#./agent_groups -S -i 002
Agent '002' is synchronized. 
#./agent_groups -S -i 003
Agent '003' is synchronized. 

Bueno pues ya tenemos nuestro modulo configurado y en los próximos laboratorios seguiremos haciendo alguna cosa mas sobre el para dejarlo mas fino.