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;
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;
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
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:
# cd /opt
# wget -cv http://www.chaotic.org/guardian/guardian-1.7.tar.gz
# wget -cv http://www.chaotic.org/guardian/guardian-1.7.tar.gz
Agora iremos descompactar:
# tar -xvzf guardian-1.7.tar.gz
# cd guardian-1.7
# 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
# 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
# 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
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
# 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)
Irei configurar o snort no Kali, funciona?
ResponderExcluirSim, funciona bem :D
Excluir