ArtigosDefensive

Ossec – Utilizando o shared – HIDS parte 4

Fala pessoal, hoje iremos continuar com a série OSSEC e vamos ver mais uma funcionalidade que ele nos oferece, que é a configuração de agentes remotamente. Essa configuração centralizada é limitada as opções de file integrity checking (syscheckd), rootkit detection (rootcheck) e log analysis.

Para começar com nossos testes precisamos primeiramente criar o arquivo agent.conf no servidor ossec, para isso execute o comando abaixo:

# touch /var/ossec/etc/shared/agent.conf

Uma vez com o arquivo criado precisamos configurá-lo conforme desejarmos. As configurações desse arquivo são bem parecidas com o arquivo central de configuração do ossec, o ossec.conf!

Nesse exemplo aqui eu copiei um arquivo de log do apache e renomeei ele para realizarmos os testes, pois esse tipo de log já é reconhecido pelo ossec e não seria necessário criar novos decoders nesse momento, mais pra frente iremos abordar essa parte de criação de novos decoders, regras e etc… Bem, como expliquei eu renomeei o arquivo do apache e o chamei de “log_ossec.txt”, ele está localizado em /etc/log_ossec.txt em um de nossos agentes, no meu caso, criativamente chamado de “Agent_Linux” 🙂

Agora que já sabemos o arquivo de log que desejamos monitorar no nosso agente, precisamos colocar as entradas abaixo no nosso agent.conf.

<agent_config>
    <localfile>
        <location>/etc/log_ossec.txt</location>
        <log_format>syslog</log_format>
    </localfile>
</agent_config>

Depois de salvar essas configurações é hora de reiniciar o serviço do ossec no nosso servidor para que ele leia as novas configurações, para isso execute:

# /var/ossec/bin/ossec-control restart

Para confirmar que as novas configurações foram lidas e está tudo certinho, execute o comando abaixo:

# cat /var/ossec/etc/shared/merged.mg | grep agent.conf

A saída esperada deve ser a seguinte:

  !152 agent.conf
  <agent_config> 
  </agent_config>

Esse arquivo merged.mg é o responsável por enviar tudo que está dentro do diretório shared para os agentes. Agora precisamos reiniciar os nossos agentes para que essa nova configuração entre em vigor. Temos duas opções, esperar para que o agente faça a checagem e automaticamente pegue o novo arquivo merged.mg ou forçar essa checagem reiniciando o agente remotamente, para reiniciar remotamente execute:

# /var/ossec/bin/agent_control -R 002

OBS: Se o cliente estiver no meio de um rootcheck ou syscheck, o comando não irá funcionar.

O número 002 é o ID do meu agente, no laboratório de vocês será um outro ID provavelmente. Depois re reiniciar precisamos checar se o agente está com o nosso novo arquivo agent.conf, para fazer isso precisamos checar o MD5 no nosso arquivo:

# md5sum /var/ossec/etc/shared/agent.conf 
 1128afe21b421751c75bf79626bd4d75 /var/ossec/etc/shared/agent.conf

Agora que sabemos qual é o hash MD5 do nosso arquivo iremos chegar o do nosso agente, para isso execute o comando:

# /var/ossec/bin/agent_control -i 002 
OSSEC HIDS agent_control. Agent information: 
   Agent ID: 002 
   Agent Name: Agent_Linux 
   IP address: any/0 
   Status: Active
 
   Operating system: Linux OssecClient 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:09:55 UTC 2017 i686 
   Client version: OSSEC HIDS v2.9.0 / 1128afe21b421751c75bf79626bd4d75 
   Last keep alive: Fri Jun 23 04:27:06 2017
 
   Syscheck last started at: Fri Jun 23 03:45:37 2017 
   Rootcheck last started at: Fri Jun 23 03:53:12 2017

Como podemos ver, o valor do hash MD5 do agente e do nosso servidor é o mesmo, então com isso temos certeza que está tudo certo. Se dermos uma olhada nos logs do nosso agente iremos ver que agora o novo arquivo “log_ossec.txt” está sendo monitorado:

2017/06/23 04:27:14 ossec-logcollector(1950): INFO: Analyzing file: '/etc/log_ossec.txt'.

Agora iremos criar uma entrada no nosso agent.conf para configurar uma regra de syscheck, no nosso caso iremos monitorar o diretório /var/laboratorio, para isso deixe o seu agent.conf da seguinte maneira:

<agent_config> 
    <syscheck> 
       <directories realtime="yes" check_all="yes">/var/laboratorio</directories> 
    </syscheck> 
    <localfile> 
       <location>/etc/log_ossec.txt</location> 
       <log_format>syslog</log_format> 
    </localfile> 
</agent_config>

Agora iremos criar alguns arquivos no novo diretório monitorado para que ver se o ossec irá nos alertas quando tais arquivos forem alterados. Como fizemos anteriormente, precisamos reiniciar nosso ossec server e depois prosseguir com as mesmas checagens feitas anteriormente, olhar o merdeg.mg e checar o hash dos agentes. Depois disso, iremos ver a seguinte entrada no log do nosso agente:

2017/06/23 06:18:26 ossec-syscheckd: INFO: Directory set for real time monitoring: '/var/laboratorio'.

Depois que ele concluir o scan do syscheck ele irá alimentar o banco com os resultados obtidos e depois comparar com os resultados dos próximos scans, porém como estamos monitorando em tempo real não iremos precisar esperar pelo próximo scan. Porém precisamos nos atentar caso o agente esteja rodando o rootcheck, caso positivo, os alertas irão ficar na fila e só serão alertados depois que o scan de rootcheck terminar.

Para efeitos de testes, iremos alterar os arquivos criados dentro do /var/laboratorio. Assim que as alterações forem feitas iremos receber alertas no nosso ossec server como é mostrado abaixo:

** Alert 1498210128.272502: mail - ossec,syscheck, 2017 Jun 23 06:28:48 (Agent_Linux) any->syscheck Rule: 550 (level 7) -> 'Integrity checksum changed.' Integrity checksum changed for: '/var/laboratorio/a5' Size changed from '0' to '9' Old md5sum was: 'd41d8cd98f00b204e9800998ecf8427e' New md5sum is : 'edd88cd9c215b64b29b331ae83ad3773' Old sha1sum was: 'da39a3ee5e6b4b0d3255bfef95601890afd80709' New sha1sum is : '02464656456857becd3fc1368950cacbbed0f197'
** Alert 1498210034.269783: mail - ossec,syscheck, 2017 Jun 23 06:27:14 (Agent_Linux) any->syscheck Rule: 550 (level 7) -> 'Integrity checksum changed.' Integrity checksum changed for: '/var/laboratorio/a3' Size changed from '0' to '21' Old md5sum was: 'd41d8cd98f00b204e9800998ecf8427e' New md5sum is : 'f1a60a1aaa123d6cf9df8f4b4eff85bd' Old sha1sum was: 'da39a3ee5e6b4b0d3255bfef95601890afd80709' New sha1sum is : '810fffbc12f66cbac8ad4d0837ac52b90914cfec'
** Alert 1498210041.270245: mail - ossec,syscheck, 2017 Jun 23 06:27:21 (Agent_Linux) any->syscheck Rule: 551 (level 7) -> 'Integrity checksum changed again (2nd time).' Integrity checksum changed for: '/var/laboratorio/a1' Size changed from '6' to '13' Old md5sum was: '1ca308df6cdb0a8bf40d59be2a17eac1' New md5sum is : 'f79ca20cc9103e7f82281102108225a2' Old sha1sum was: '9dc628289966d144c1a5fa20dd60b1ca1b9de6ed' New sha1sum is : '2e50524a44c4bda43ed36e841c77d383bb4a7296'

Antes de terminar esse post quero deixar mais uma dica… Em ambientes de produção onde teremos diversos agentes, provavelmente iremos precisar ter configurações específicas para cada um ou para um grupo de agentes. O ossec permite essa configuração através do agent.conf, para fazer isso podemos definir uma regra para um agente específico ou pelo sistema operacional do agente. Olhe como ficaria o nosso agent.conf nesse caso:

<agent_config name="Agent_Linux"> 
    <syscheck> 
       <directories realtime="yes" check_all="yes">/var/laboratorio</directories> 
    </syscheck> 
</agent_config> 

<agent_config os="Linux"> 
    <localfile> 
        <location>/etc/log_ossec.txt</location> 
        <log_format>syslog</log_format> 
    </localfile> 
</agent_config>

Dessa forma a primeira regra seria aplicada somente ao agente “Agent_Linux” e a segunda regra a todos os agentes com sistema operacional Linux.

Bem pessoal é isso ai, espero que tenham curtido. Em breve irei postar outros artigos sobre o Ossec mostrando configurações mais avançadas. Não esqueçam de curtir nossas páginas nas redes sociais, FacebookG+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.

Ricardo Galossi
Siga me
Últimos posts por Ricardo Galossi (exibir todos)

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão. Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.

Deixe seu comentário