quarta-feira, 22 de maio de 2013


Introdução

Pessoal, aqui aprenderemos, passo a passo, como instalar e configurar o 
Snort
 com suporte a
MySQL
 e integrado com o 
Guardian
. Mas antes de colocar a mão na massa, vamos ver o que é esse tal de Snort e para que serve. 
O Snort é um sistema de detecção de intrusão de rede, ou simplesmente NIDS, é uma ferramenta open source, que nos permite monitorar o tráfego da rede e descobrir quando a rede está sofrendo de acessos não autorizados que podem ser de um potencial atacante. 
O Snort funciona da seguinte maneira: Inicialmente os pacotes são capturados pelo Snort utilizando o DAQ, depois são remontados pelos pré-processadores para analisar seu conteúdo e comparar com as assinaturas existentes, para dar confiabilidade ao IDS e evitar falso-negativo. Depois, o Payload é comparado com as regras que possuímos, então, caso exista uma regra que bata com o Payload, é gerado o output, que pode ser um alerta, logs ou alguma medida de ação. 
O Snort pode vir a ter duas coisas que podem atrapalhar sua confiabilidade, que são:
  • Falso-negativo → É quando um pacote passa sem ser notificado pelo IDS , o IDS pensa que o pacote é fluxo normal. Em minha opinião, pior que os falsos-positivos.
  • Falso-positivo → É quando o pacote é notificado como intrusivo, mas na verdade, é somente um falso alerta, alarme falso. O grande problema de muito falso positivo é a ferramenta perder a credibilidade, é a velha história do alarme do carro que dispara muito, e quando realmente for um furto, você não vai acreditar que estão levando seu carro.

Fonte: 
Sp0oKeR Labs: Introdução ao Snort - Serie Snortando (Parte 1)
Bem, vamos ao que interessa. Mão na massa! 

MySQL

Primeiramente, iremos instalar e configurar nosso banco de dados 
MySQL
# aptitude install mysql-server 
Depois de instalar, iremos criar o usuário "snort": 
# mysql -u root -p 
Entre com a senha de root que você forneceu durante a instalação. 
mysql> grant all privileges on snort.* to snort@localhost identified by "123456";
mysql> quit; 
Agora entre no MySQL usando o usuário que acabamos de criar: 
# mysql -u snort -p 
Informe a senha que utilizou para criar o usuário. Verifique as bases: 
mysql> show databases; 
Crie a base Snort no banco: 
mysql> create database snort; 
Saia: 
mysql> quit 

Snort

Agora é hora de instalar o Snort: 
# aptitude install snort-mysql 
Durante a instalação, informe a faixa de rede e a máscara que sua rede usa. Depois você será questionado se deseja que seja criado uma base de dados para gravar os logs, selecione "Sim" e depois dê OK. 
Agora acesse o diretório da documentação do Snort que contém as tabelas: 
# cd /usr/share/doc/snort-mysql 
Use o arquivo "create_mysql" para criar as tabelas na base Snort do banco: 
# zcat create_mysql.gz | mysql -u snort -h localhost -p snort 
Informe a senha do usuário "snort". Depois acesse a base Snort do banco e verifique se as tabelas foram criadas com sucesso: 
# mysql -u snort -p 
(Entre com a senha do usuário snort) 
mysql> show databases;
mysql> use snort;
mysql> show tables;
mysql> status;
mysql> quit; 
Vá ate o diretório onde estão os arquivos de configuração do Snort: 
# cd /etc/snort 
Renomeie o arquivo "snort.conf": 
# mv snort.conf snort.conf.orig 
Crie uma cópia do arquivo que acabamos de renomear sem os comentários, para o arquivo ficar menor e mais legível: 
# cat snort.conf.orig | grep -v ^# | grep . > snort.conf 
Agora vamos editar o arquivo "snort.conf": 
# pico snort.conf 
Na primeira linha (var HOME_NET any) remova o "any" e digite a faixa de rede/máscara: 
var HOME_NET 192.168.0.0/24
Agora, quase no final do arquivo, abaixo da linha (output log_tcpdump: tcpdump.log), digite o seguinte: 
output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
output alert_full: /var/log/snort/alert
Entendendo: Na primeira linha informamos o nome de usuário da banco, a senha, o nome da base e o host do banco. No exemplo estou usando 
localhost
, mas é muito importante você colocar o banco de dados em outro servidor. Já na segunda linha, informamos o Snort para gerar os logs no arquivo alert. 
Agora vá até o arquivo "snort.debian.conf" e dê uma olhada na linha (DEBIAN_SNORT_INTERFACE="eth0"), mude-a caso deseje que o Snort escute em outra interface. 
Remova o arquivo de pendência de configuração do banco de dados: 
# rm db-pending-config 
Entre no arquivo /etc/snort/database.conf e comente a seguinte linha: 
### output database: log, mysql,
Depois disso, pode iniciar o Snort: 
# /etc/init.d/snort start 
Faça um teste, fique monitorando o arquivo de log do Snort: 
# tail -f /var/log/snort/alert 
E em outra máquina, use o Nmap para escanear o host do Snort: 
# nmap -sX 192.168.0.1 
Obs.: Esse é o IP do Snort no meu laboratório. 
Fique acompanhando o arquivo "alert" e veja o que acontece. 
Pronto. Até aqui já temos o Snort pronto para gerar os alertas e gravar no banco de dados, mas ele ainda não é capaz de bloquear nada, pois não está com o IPS Guardian. Vamos fazer isso agora. 
 

Guardian

Primeiro baixaremos o Guardian: 
Agora iremos descompactar: 
# tar -xvzf guardian-1.7.tar.gz
# cd guardian-1.7
 
Editar o arquivo "guardian.conf": 
# pico guardian.conf 
Informar o IP do servidor na linha HostIpAddr: 
HostIpAddr        192.168.0.1
Informe a interface na linha Interface: 
Interface        eth0
Na linha "AlertFile", informe o caminho do arquivo "alert": 
AlertFile        /var/log/snort/alert
Salve o arquivo e copie para o 
/etc/
# cp guardian.conf /etc/ 
Crie o arquivo /etc/guardian.ignore e nele informe os IPs que serão ignorados pelo Guardian. No caso, pode colocar o IP do servidor: 
# pico /etc/guardian.ignore 
192.168.0.1
Copiaremos os scripts de bloqueio e desbloqueio: 
# cd scripts
# cp iptables_block.sh /sbin/guardian_block.sh
# cp iptables_unblock.sh /sbin/guardian_unblock.sh
 
Caso seu sistema esteja em português, edite o arquivo "guardian.pl": 
# cd /opt/guardian-1.7
# pico guardian.pl
 
Procure pela linha que contém "inet addr" (linha 320) e mude para: 
inet end
Salve o arquivo e copie para o 
/sbin/
# cp guardian.pl /sbin 
Crie o arquivo de log do Guardian: 
# touch /var/log/guardian.log 
Criaremos o script para o Guardian ser executado automaticamente durante o boot: 
# pico /etc/init.d/guardian 
#!/bin/bash 
test -f /sbin/guardian.pl || exit 0
case "$1" in
    start)
          guardian.pl -c /etc/guardian.conf
          ;;
    stop)
          kill -9 $(pgrep guardian.pl)
          ;;
    *)
          echo "Opção invalida. Use start ou stop."
          exit 2
          ;;
esac
exit 0
Dê permissão de execução para o script: 
# chmod 755 /etc/init.d/guardian 
Agora pode iniciar o Guardian com o comando: 
# /etc/init.d/guardian start 
E parar com o: 
# /etc/init.d/guardian stop 
Habilite o Guardian para ser executado durante o boot com o assistente rcconf
# aptitude install rcconf
# rcconf
 
Marque a opção do Guardian e dê OK. 

Conclusão

Agora é só fazer os testes e ver se está tudo OK. O Guardian está bloqueando ataques, você pode usar o mesmo teste antes de executar o 
Nmap
 como mostrado acima e ver se o Guardian vai bloquear o IP do atacante. 
Pessoal, é isso aí. Espero que tenham gostado do post. Adiante postarei um artigo de instalação e configuração do Snort com o Barnyard2 mais o Guardian e suporte ao MySQL. 
Creditos: rik_99(VOL)

2 comentários:

Subscribe to RSS Feed Follow me on Twitter!