sábado, 22 de dezembro de 2012

Instalando e Configurando Snort-Mysql + Guardian


Pessoal hoje iremos aprender 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 pra que ele 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 esta sofrendo de acessos não autorizados que pode ser 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 comparam 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, na 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 .


Bem vamos ao que interessa, mão na massa:

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 usuario 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;

Agora saia.

mysql> quit

Agora é hora de instalar o Snort:

# aptitude install snort-mysql

Durante a instalação informe a faixa de rede e a mascara que sua rede usa. Depois você será questionado se deseja que o crie 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

Agora 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 usuario 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 usuario snort.

mysql> show databases;

mysql> use snort;

mysql> show tables;

mysql> status;

mysql> quit;

Agora 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

Agora crie uma copia do arquivo que acabamos de renomear sem os comentários para o arquivos ficar menor e mais legível.

# cat snort.conf.orig | grep -v ^# | grep . > snort.conf

Agora iremos editar o arquivo snort.conf

# pico snort.conf

Na primeira linha (var HOME_NET any) remova o any e digite a faixa de rede/ mascara:

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 usuario 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 de uma olhada na linha (DEBIAN_SNORT_INTERFACE="eth0") mude-a caso deseje que o snort escute em outra interface.

Agora remova o arquivo de pendência de configuração do banco de dados.

# rm db-pending-config

Agora 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

Agora 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 (esse é o ip do snort no meu laboratorio)

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 esta com o IPS Guardian, vamos fazer isso agora.

Primeiro iremos baixar o guardian:

# cd /opt


Agora iremos descompactar:

 # tar –xvzf guardian-1.7.tar.gz

# cd guardian-1.7

Agora iremos editar o arquivo guardian.conf

# pico guardian.conf

Agora informa 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/

Agora crie o arquivo /etc/guardian.ignore e nele informe os ips que serão ignorados pelo guardian, no caso pode colocar o ip do Server.

# pico  /etc/guardian.ignore

192.168.0.1

Agora iremos copiar os scripts de bloqueio e desbloqueio:

# cd scripts

# cp iptables_block.sh /sbin/guardian_block.sh

# cp iptables_unblock.sh /sbin/guardian_unblock.sh

Agora caso seu sistema esteje em portugues edite o arquivo guardian.pl

# cd /opt/guardian-1.7

# pico guardian.pl

Procure pla linha que contem 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

Agora iremos criar o script para o guardian ser executato 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.

Bem pessoal agora é só fazer os testes e ver se esta tudo ok e o guardian esta bloqueado ataques, você pode usar o mesmo teste de antes de executar o nmap como mostrado acima e ver se o guardian vai bloquear o ip do atacante.

Pessoal é isso ai, espero que tenham gostado do post, desculpe algum erro de ortografia, mais pra frente irei postar um artigo de instalação e configuração do Snort com o Barnyard2 mais o Guardian e suporte ao mysql. Até a próxima.

3 comentários: