ArtigosDefensive

Ossec – Trabalhando com agents linux – HIDS parte 2

Fala galera.. como prometido aqui vai mais um post pra série HIDS Ossec, hoje iremos ver um pouco mais sobre a parte de agentes linux, como instalar um agente, como adicionar ele no Ossec server, ver suas principais funcionalidades funcionando e mais algumas coisas.

Bom como falei no último post, o agente do Ossec é bem simples e funciona basicamente como um encaminhador de logs para o server fazer a análise e correlacionamento, por isso ele quase não consome recursos do servidor. Para fazer a instalação do agente do Ossec é bem simples, é o mesmo passo a passo de instalação do server como é mostrado abaixo. Iremos baixar a versão atual que é a 2.8.3, descompactar e instalar:

# wget https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz
# tar -xvzf ossec-hids-2.8.3.tar.gz
# cd ossec-hids-2.8.3
# ./install.sh

Quando o wizard questionar o tipo de instalação é só você selecionar “agent” como é mostrado abaixo:

1- What kind of installation do you want (server, agent, local, hybrid or help)? agent

Em seguida você terá que escolher o local de instalação do Ossec, recomendo deixar no padrão mesmo:

- Choose where to install the OSSEC HIDS [/var/ossec]: /var/ossec

Depois você terá que informar o endereço IP do servidor Ossec:

3.1- What's the IP Address or hostname of the OSSEC HIDS server?: 192.168.0.101

Habilite o check de integridade:

3.2- Do you want to run the integrity check daemon? (y/n) [y]: y

Habilite a engine de detecção de rootkit:

3.3- Do you want to run the rootkit detection engine? (y/n) [y]: y

Habilite a resposta ativa:

3.4 - Do you want to enable active response? (y/n) [y]: y

Agora é só esperar terminar de compilar o Ossec. Depois de concluir a instalação vá no Ossec server para adicionar o agente.Selecione a opção A para adicionar o novo agente e depois siga o passo a passo abaixo:

# /var/ossec/bin/manage_agents
****************************************
 * OSSEC HIDS v2.8.3 Agent manager. *
 * The following options are available: *
 ****************************************
 (A)dd an agent (A).
 (E)xtract key for an agent (E).
 (L)ist already added agents (L).
 (R)emove an agent (R).
 (Q)uit.
 Choose your action: A,E,L,R or Q: A

Aqui você precisa definir um nome para o novo agente, aqui irei chamar de “Apache_Server”, depois informe o endereço IP do agente e em seguida defina um ID para o agente:

- Adding a new agent (use '\q' to return to the main menu).
 Please provide the following:
 * A name for the new agent: Apache_Server
 * The IP Address of the new agent: 192.168.0.35
 * An ID for the new agent[001]: 100
 Agent information:
 ID:100
 Name:Apache_Server
 IP Address:192.168.0.35

Confirm adding it?(y/n): y
 Agent added.

Depois de adicionar o agente no servidor precisamos extrair a chave dele para adicionar no agente, esse passo também é extremamente simples, basta executar o comando abaixo e selecionar a opção E, depois informar o ID do agente que deseja extrair a chave:

# /var/ossec/bin/manage_agents
****************************************
 * OSSEC HIDS v2.8.3 Agent manager. *
 * The following options are available: *
 ****************************************
 (A)dd an agent (A).
 (E)xtract key for an agent (E).
 (L)ist already added agents (L).
 (R)emove an agent (R).
 (Q)uit.
 Choose your action: A,E,L,R or Q: E

Available agents:
 ID: 100, Name: Apache_Server, IP: 192.168.0.35
 Provide the ID of the agent to extract the key (or '\q' to quit): 100

Agent key information for '100' is:
 MTAwIEFwYWNoZV9TZXJ2ZXIgMTkyLjE2OC4wLjM1IGM2YmJkYzkyMmU1ZDI1YmU1YTllY2M5N2RhNzQ2NzFkMWI1YWI3MzE3NGVjNDVlMGMwNzliZGJiMD
 E4OGY0OTA=

Como esse é o primeiro agente que estamos adicionando no nosso Ossec server precisamos reiniciá-lo para que ele fique ouvindo na porta 1514 que é a porta que os agentes utilizam para se comunicar com ele:

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

Agora no servidor onde o agente do Ossec se encontra precisamos importar a chave que acabamos de extrair, basta executar o comando abaixo e selecionar a opção I para importar e depois colar a chave:

# /var/ossec/bin/manage_agents
****************************************
 * OSSEC HIDS v2.8.3 Agent manager. *
 * The following options are available: *
 ****************************************
 (I)mport key from the server (I).
 (Q)uit.
 Choose your action: I or Q: I

* Provide the Key generated by the server.
 * The best approach is to cut and paste it.
 *** OBS: Do not include spaces or new lines.

Paste it here (or '\q' to quit): MTAwIEFwYWNoZV9TZXJ2ZXIgMTkyLjE2OC4wLjM1IGM2YmJkYzkyMmU1ZDI1YmU1YTllY2M5N2RhNzQ2NzFkM
 WI1YWI3MzE3NGVjNDVlMGMwNzliZGJiMDE4OGY0OTA=

Agent information:
 ID:100
 Name:Apache_Server
 IP Address:192.168.0.35

Confirm adding it?(y/n): y
 Added.

Depois de importar a chave precisamos iniciar o nosso agente:

# /var/ossec/bin/ossec-control start

Depois de iniciar o serviço é importante checar o arquivo de log para ver se o agente conseguiu se comunicar com o server perfeitamente, rode o comando abaixo para ver o arquivo de log do agente e procure pela entrada que está em negrito:

# tail -f /var/ossec/logs/ossec.log
2017/04/29 18:40:24 ossec-logcollector(1950): INFO: Analyzing file: '/var/log/syslog'.
2017/04/29 18:40:24 ossec-logcollector(1950): INFO: Analyzing file: '/var/log/dpkg.log'.
2017/04/29 18:40:24 ossec-logcollector: INFO: Monitoring output of command(360): df -h
2017/04/29 18:40:24 ossec-logcollector: INFO: Monitoring full output of command(360): netstat -tan |grep LISTEN |grep
 -v 127.0.0.1 | sort
2017/04/29 18:40:24 ossec-logcollector: INFO: Monitoring full output of command(360): last -n 5
2017/04/29 18:40:24 ossec-logcollector: INFO: Started (pid: 4309).
2017/04/29 18:40:26 ossec-logcollector: WARN: Process locked. Waiting for permission...
2017/04/29 18:40:40 ossec-agentd(4102): INFO: Connected to the server (192.168.0.101:1514).
2017/04/29 18:40:41 ossec-logcollector: INFO: Lock free. Continuing...
2017/04/29 18:41:24 ossec-syscheckd: INFO: Starting syscheck scan (forwarding database).
2017/04/29 18:41:24 ossec-syscheckd: INFO: Starting syscheck database (pre-scan).

Você também pode verificar se o agente conseguiu se conectar ao Ossec server executando o comando abaixo no server, como podemos ver o agent está ativo:

# /var/ossec/bin/agent_control -l
OSSEC HIDS agent_control. List of available agents:
 ID: 000, Name: Galaxy (server), IP: 127.0.0.1, Active/Local
 ID: 100, Name: Apache_Server, IP: 192.168.0.35, Active

Depois de alguns minutos o nosso novo agente já vai ter concluído a primeira verificação de integridade de arquivos e de rootkit, para você ver quando foi a última verificação de um agente específico, além de ver outras informações do agente basta executar:

# /var/ossec/bin/agent_control -i 100
OSSEC HIDS agent_control. Agent information: 
   Agent ID:   100 
   Agent Name: Apache_Server 
   IP address: 192.168.0.35 
   Status:     Active 
 
   Operating system:    Linux ubuntu 4.8.0-22-generic #24-Ubuntu SMP Sat Oct.. 
   Client version:      OSSEC HIDS v2.8.3 
   Last keep alive:     Sat Apr 29 19:10:40 2017 
 
   Syscheck last started  at: Sat Apr 29 18:41:24 2017 
   Rootcheck last started at: Sat Apr 29 18:48:39 2017

O binário “agent_control” é bastante útil no dia a dia, pois é com ele que nós podemos controlar nossos agentes remotamente. Utilizando esse binário é possível reiniciar um agente, forçar uma verificação de integridade de arquivos, detecção de rootkit, bloquear endereços IP em um agente e etc.

Antes de encerrar esse post vamos ver um pequeno exemplo de um alerta sendo gerado, como vocês devem lembrar o Ossec server concentra todos os logs e alertas dos agentes, então vamos ficar monitorando o log do alerts e ver o que acontece quando alguém logar no nosso agente via SSH por exemplo:

# tail -f /var/ossec/logs/alerts/alerts.log
** Alert 1493505448.317738: mail  - syslog,fts,authentication_success 
2017 Apr 29 19:37:28 (Apache_Server) 192.168.0.35->/var/log/auth.log 
Rule: 10100 (level 4) -> 'First time user logged in.' 
Src IP: 192.168.0.101 
User: ricardo 
Apr 29 19:37:27 ubuntu sshd[5379]: Accepted password for ricardo from 192.168.0.101 port 58584 ssh2 
 
** Alert 1493505448.318068: - pam,syslog,authentication_success, 
2017 Apr 29 19:37:28 (Apache_Server) 192.168.0.35->/var/log/auth.log 
Rule: 5501 (level 3) -> 'Login session opened.' 
Apr 29 19:37:27 ubuntu sshd[5379]: pam_unix(sshd:session): session opened for user ricardo by (uid=0)

Como vocês podem ver o Ossec alertou que o usuário ricardo se logou via ssh e está com uma sessão aberta. Se vocês fizerem outras ações no host do agent vocês irão ver diversos outros alertas que o Ossec irá gerar.

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, Facebook, G+ 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