DEV Community

Railander Marques
Railander Marques

Posted on • Updated on

Configurar Logs do RDS no Wazuh

Ideia Geral

Monitoramento de tentativas de logins inválidos nas máquinas com RDS.

Nota

Algo que pode causar bastante confusão na configuração destes arquivos é que estes estão num formato “baseado em xml” , ou pelo menos um xml degenerado. Estes arquivos não contam com um único nó raiz com nós internos e folhas (característico do xml), mas sim sendo cada configuração seu próprio nó raiz, ou de forma geral, um conjunto de nós irmãos.

Dessa forma, se for editar o xml em um editor/IDE, este vai reclamar que o xml está malformado. Porém essa informação não é necessariamente correta. Tem que se verificar os pares de tags manualmente.

Pré-requisitos

Documentação oficial

:::

Para funcionamento correto do envio/processamento dos logs, é necessário instalar:

  • Python3
  • boto3 >=1.13.1

Por se tratar de um requisito de uso global, pode se instalar a biblioteca boto3 diretamente pelo gerenciador de pacotes quando disponível, não havendo necessidade de se instalar via pip. Em máquinas Debian/Ubuntu:

apt install python3-boto3
Enter fullscreen mode Exit fullscreen mode

A documentação oficial aponta que a versão máxima suportada é 1.17.76, mas foi testada a versão 1.9.253 com sucesso.

:::

Configurando o Wazuh para o RDS

Para configurar o Wazuh para monitorar o CloudWatch é necessário adicionar a seguinte configuração ao arquivo /var/ossec/etc/ossec.conf:

<ossec_config>
  <wodle name="aws-s3">
    <disabled>no</disabled>
    <interval>10m</interval>
    <run_on_start>yes</run_on_start>
    <skip_on_error>yes</skip_on_error>

    <service type="cloudwatchlogs">
      <access_key>ABCD_Minha_Access_Key</access_key>
      <secret_key>EfgH_Minha_Secret_Key</secret_key>
      <aws_log_groups>/aws/rds/instance/caminho/do/log</aws_log_groups>
      <regions>us-east-1,sa-east-1</regions>
      <only_logs_after>DATA-INICIAL-LOGS</only_logs_after>
      <aws_account_id>account_id</aws_account_id>
    </service>
  </wodle>
</ossec_config>
Enter fullscreen mode Exit fullscreen mode
chown root:wazuh /var/ossec/etc/ossec.conf
chmod 0660 /var/ossec/etc/ossec.conf
Enter fullscreen mode Exit fullscreen mode
  • Adicionar o bloco inteiro ao final do arquivo;
  • Data no formato YYYY-MMM-DD, separado com hífens e meses em três letras em maiúsculo;
  • Na configuração testada o arquivo pertence a root:wazuh com permissões rw-rw----. Pode ser que funcione com outro grupo/usuário/permissões, mas este estado foi o testado e aprovado.

:::

Configurando os Decoders

As regras e decoders podem ser copiados/colados sem edições, mas vale lembrar que as permissões e usuário/grupo são os mesmos do arquivo acima .

Caso a pasta decoders não exista, pode-se cria-la:

cd /var/ossec/etc
mkdir decoders
chown -R root:wazuh decoders
Enter fullscreen mode Exit fullscreen mode
/var/ossec/etc/decoders/local_decoders.xml
Enter fullscreen mode Exit fullscreen mode
<decoder name="RDS"> 
    <prematch>^.* Connect|Query|Quit</prematch> 
</decoder> 

<decoder name="RDS-1"> 
    <parent>RDS</parent> 
    <regex>(.*)</regex> 
    <order>Action</order> 
</decoder> 
<decoder name="RDS-1"> 
    <parent>RDS</parent> 
    <regex>(\w+) (.*)\s</regex> 
    <order>id,user-action</order> 
</decoder> 
<decoder name="RDS-1"> 
    <parent>RDS</parent> 
    <regex offset="after_regex">(.*)</regex> 
    <order>query</order> 
</decoder> 

<decoder name="RDS-1"> 
    <parent>RDS</parent> 
    <regex offset="after_regex">\s(\w+)@(.*)\son\s(.*)\susing\s(.*)</regex> 
    <order>username,srcip,service,protocol</order> 
</decoder> 

<decoder name="RDS-ERROR"> 
    <prematch>^.* Aborted</prematch> 
</decoder> 

<decoder name="RDS-2"> 
    <parent>RDS-ERROR</parent> 
    <regex>(.*) (.*\s.*) (.*) db:\s(.*) user:\s(.*) host:\s(.*) </regex> 
    <order>severity,connection-action,id,db,user,host</order> 
</decoder>
Enter fullscreen mode Exit fullscreen mode
/var/ossec/etc/rules/local_rules.xml
Enter fullscreen mode Exit fullscreen mode
<group name="RDS"> 
  <rule id="100141" level="3"> 
    <decoded_as>RDS</decoded_as> 
    <field name="user-action">Connect</field> 
    <description>Connect using \$(username)</description> 
  </rule> 
</group> 

<group name="RDS ERROR"> 
  <rule id="100208" level="3"> 
    <decoded_as>RDS-ERROR</decoded_as> 
    <field name="connection-action">Aborted Connection</field> 
    <description>Aborted Connection from \$(dstuser)</description> 
  </rule> 
</group> 
Enter fullscreen mode Exit fullscreen mode
chown root:wazuh \
  /var/ossec/etc/decoders/local_decoders.xml \
  /var/ossec/etc/rules/local_rules.xml
chmod 0660 \
  /var/ossec/etc/decoders/local_decoders.xml \
  /var/ossec/etc/rules/local_rules.xml
Enter fullscreen mode Exit fullscreen mode

Provavelmente estes arquivos ainda não existam, mas caso contrário, colar o bloco inteiro no final do arquivo.

:::

Finalizando

Para reiniciar o serviço, execute:

# Para reiniciar o container do Wazuh é necessário estar no diretório onde se encontra o 
# arquivo do Docker Compose, suponha o seguinte caminho:
cd /home/ubuntu/wazuh-docker/single-node/

#Em seguida, reiniciar o container:
docker-compose restart
Enter fullscreen mode Exit fullscreen mode

Máquina Testada

cat /etc/os-release

NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
Enter fullscreen mode Exit fullscreen mode

Troubleshooting

Os logs do RDS não estão aparecendo

  • Verificar se o agent está rodando corretamente:
systemctl status wazuh-agent
Enter fullscreen mode Exit fullscreen mode

Caso não esteja rodando, na linha onde se descreve a razão do fechamento (exited code = 1 …) pode haver uma pista para solucionar o problema.

  • Verificar se os pré-requisitos foram cumpridos:

A máquina precisa do Python3 instalado e da lib boto3. Ver mais detalhes na seção Pré-requisitos.

Top comments (0)