Mostrando postagens com marcador snort. Mostrar todas as postagens
Mostrando postagens com marcador snort. Mostrar todas as postagens

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)

Introdução

Snort é um sistema de detecção de intrusos (IDS), o qual usa seus sensores e um conjunto de regras para monitorar todo o tráfego da rede e gerar alertas de possíveis ameaças à segurança de seus sistemas. Com a ajuda do plugin SnortSam, será possível automatizar bloqueios de endereços IP em seu firewall. 
Neste tutorial será mostrado como instalar e configurar o Snort. Como este pacote só gera alertas de ameaças, será necessária a ajuda do plugin SnortSam para recebê-los e executar uma regra de firewall para bloquear o endereço IP do computador mal-intencionado. 
Para visualizar os alertas do Snort utilizaremos uma interface amigável de um sistema Web chamado BASE (Basic Analysis and Security Engine), conectada a uma base de dados emMySQL
Abaixo, o sistema operacional e versões dos pacotes utilizados:
  • S.O. → Debian Squeeze 6.0.5
  • Snort → 2.9.2.2
  • SnortSam → 2.70
  • Firewall → IPtables
  • BASE → 1.4.5
  • MySQL → 5.1

Para proceder a instalação dos pacotes foi utilizado um servidor com duas placas de rede atuando como firewall/roteador, recebendo Internet por uma placa e distribuindo para a rede interna através da outra placa. 
Endereços IPs do firewall:
  • eth0 = 10.0.0.5 - obtido por DHCP = Internet (WAN)
  • eth1 = 192.168.1.1 - IP fixo - Rede interna (LAN)

De forma resumida, para utilizar o Snort com o SnortSam, será necessário:
  1. Baixar o código fonte do Snort;
  2. Aplicar patch SnortSam sobre o fonte do Snort;
  3. Compilar e instalar Snort;
  4. Baixar código fonte do SnortSam;
  5. Compilar e instalar SnortSam. 

Instalação do Snort

Inicie pelos procedimentos de compilação e instalação do 
Snort
, para isto é preciso instalar algumas dependências via 
apt-get
# apt-get install -y libfont-afm-perl libgcrypt11 libgnutls26 libgpg- error0 libhtml-format-perl libhtml-parser-perl autoconf automake # apt-get install -y libhtml-tagset-perl libhtml-tree-perl libltdl7 libmailtools-perl libmysqlclient16 libmysql++-dev libpcap0.8 libpcre3 
# apt-get install -y libprelude2 libtasn1-3 liburi-perl libwww-perl oinkmaster libpcap-dev libpcre3-dev libxml2-dev bison flex libprelude-dev libdumbnet-dev 

Outras dependências

Instalando 
libdnet
# wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
# tar zxvf libdnet-1.12.tgz
# cd libdnet-1.12
# ./configure --prefix=/usr --enable-shared
# make
# make install
 
Instalando DAQ
# cd ..
# wget
 http://www.snort.org/downloads/1623 -O daq-0.6.2.tar.gz
# tar zxvf daq-0.6.2.tar.gz
# cd daq-0.6.2
# ./configure
# make
# make install
 
Atualizando as bibliotecas (importante para que não ocorra alguns erros): 
# echo >> /etc/ld.so.conf /usr/lib
# ldconfig
 
Preparando o Snort: 
# cd ..
# wget
 http://www.snort.org/dl/snort-current/snort-2.9.2.2.tar.gz
# tar zxvf snort-2.9.2.2.tar.gz
# cd snort-2.9.2.2
 
Download e aplicação do patch SnortSam: Baixe o patch compatível com a versão do Snort, no caso 2.9.2.2: 
Descompacte na mesma pasta do código fonte do Snort e aplique o patch: 
# gunzip snortsam-2.9.2.2.diff.gz
# patch -p1 < snortsam-2.9.2.2.diff
 
Compilar e instalar o Snort: 
# ./configure --prefix=/usr/local/snort --with-mysql --with-daq-libraries=/usr/local/lib/daq/ --disable-prelude --disable-rzb-saac
# make
# make install
 
Caso encontre algum erro de razorback ou libtool, faça os procedimentos abaixo: 
1. Edite o arquivo "configure.in", comente as linhas: 1526 à 1557, que trata sobre o razorback e para corrigir o libtool.
2. Edite o arquivo "autojunk.sh" acrescentando o parâmetro: "-- force", na linha onde consta o comando libtoolize
3. Por último, torne o arquivo "autojunk" executável e execute: 
# chmod +x autojunk.sh
# ./autojunk.sh
 
Repita o processo de compilação e instalação. 
Crie a pasta para os arquivos de configuração do Snort e copie os arquivos de configuração fornecidos na pasta do código fonte: 
# mkdir /etc/snort
# cp src-pacote-snort/etc/*.* /etc/snort/
 
Edite o arquivo /etc/snort/snort.conf, localize e altere as linhas para que fique conforme abaixo: 
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules 
dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor
dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so 
#dynamicdetection directory /usr/local/lib/snort_dynamicrules 
# Linhas necessárias para enviar os alertas para o banco de dados Mysql.
output database: log, mysql, user=snort password=senha-snort dbname=snort host=localhost
output database: alert, mysql, user=snort password=senha-snort dbname=snort host=localhost 
# Linha necessária para enviar os alertas específicos ao daemon SnortSam.
output alert_fwsam: 127.0.0.1:898/password
Em "Customize your rule site", comente todas regras com a exceção da "icmp-info.rules", pois será a única regra usada em nossos teste. Salve e feche o arquivo de configuração. 
Crie o usuário "snort" para o sistema: 
# useradd snort -d /var/log/snort -s /bin/false -c SNORT_IDS 
Crie uma pasta para os logs: 
# mkdir /var/log/snort
# chown -R snort /var/log/snort
 
Faça o download do pacote de regras do Snort no site oficial (necessário criar uma conta no site):
E descompacte em 
/etc/snort/
Faça um primeiro teste, execute o comando para que o Snort mostre na tela os pacotes da rede capturados, mas antes, coloque a interface eth0 no modo promíscuo: 
# ifconfig eth0 promisc
# /usr/local/snort/bin/snort -v -i eth0 

Instalação do MySQL e BASE

Instalação do 
MySQL
# apt-get install mysql-server -y 
O instalador irá pedir uma senha de acesso root ao MySQL (coloque a senha que preferir). Acesse o console de administração do MySQL e coloque a senha criada na hora da instalação:
# mysql -u root -p 
Use os comandos abaixo para criar a base de dados e usuário para o Snort: 
mysql> create database snort;
mysql> grant all on snort.* to snort@localhost identified by 'senha-snort';
mysql> flush privileges;
mysql> exit; 
Crie as tabelas importando o arquivo "create_mysql" encontrado dentro do código fonte do Snort: 
# cd src-pacote-snort/schema
# mysql -u root -p snort < create_mysql
 
Instalar o BASE
# apt-get install acidbase -y 
O instalador irá perguntar qual senha será usada para acessar a base de dados snort no MySQL, digite "senha-snort", confirme a senha digitando-a novamente. 
Acrescente o acidbase no Apache
# nano /etc/apache2/sites-enabled/000-default 
Posicione o cursor antes da tag </VirtualHost>, aperte Ctrl+R e insira o caminho /etc/acidbase/apache.conf
Permita o acesso via rede local alterando a linha: 
allow from 127.0.0.0/255.0.0.0 
Para: 
allow from 192.168.1.0/255.255.255.0
Reinicie o serviço apache2: 
# invoke-rc.d apache2 restart 
Acesse a página do acidbase via rede local: http://192.168.1.1/acidbase 
Para completar a instalação, surgirá uma página com um erro, mas é normal. Clique em Setup Page e depois em Create_ACID_AG. Após feita a instalação com sucesso, acesse novamente o endereço da página do acidbase. 

Instalação do serviço SnortSam

Execute os comandos: 
# wget http://www.snortsam.net/files/snortsam/snortsam-src-2.70.tar.gz
# tar zxvf snortsam-src-2.70.tar.gz
# cd snortsam
# chmod +x makesnortsam.sh
# ./makesnortsam.sh
# cp snortsam /usr/local/bin
 
Crie um arquivo "snortsam.conf" em /etc e adicione as seguintes linhas de configuração: 
defaultkey password
accept localhost
keyinterval 30 minutes
dontblock 192.168.1.1   # rede local
rollbackhosts 50
rollbackthreshold 20 / 30 secs
rollbacksleeptime 1 minute
logfile /var/log/snort/snortsam.log
loglevel 3
daemon
nothreads
# linha importante para gerar os bloqueios via iptables
iptables eth0 LOG
bindip 127.0.0.1
Pra finalizar as configurações, escolha um arquivo de regras dentro da pasta 
/etc/snort/rules/
 e acrescente no final da regra o parâmetro "fwsam: src, 5 minutes", onde src é o IP de origem e 5 minutes é o tempo em que o IP de origem será bloqueado. 
Exemplo: Edite o arquivo "icmp-info.rules", encontre e descomente a regra com a descrição "ICMP-Info Echo Reply". Acrescente nesta regra o parâmetro "fwsam: src, 5 minutes" ao final da linha, como abaixo: 
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP-INFO Echo Reply"; icode:0; itype:0; classtype:misc-activity; sid:408; rev:6;fwsam: src, 5 minutes;)

Testes finais

Inicie todos os serviços: 
# /usr/local/snort/bin/snort -u snort -i eth0 -c /etc/snort/snort.conf -l /var/log/snort -Dq 
Para depurar erros do Snort, inicie o serviço sem o parâmetro "-Dq". 
# /usr/local/bin/snortsam 
Para depurar erros do SnortSam, inicie o serviço snortsam-debug que se encontra na mesma pasta do pacote "snortsam-src-2.70.tar.gz" descompactado e compilado anteriormente. 
Agora peça para alguém de fora de sua rede pingar para seu servidor e acompanhe via BASE os alertas gerados pelo Snort. Também é possível acompanhar os logs pra analisar os bloqueios ou possíveis erros de configuração: 
# tail -f /var/log/snort/snortsam.log 
Com Snort e SnortSam também é possível trabalhar de forma distribuída, você pode instalar Snort em outro local estratégico de sua rede e configurá-lo para que envie os alertas para o Daemon SnortSam em seu firewall, fazendo com que ele aplique a regra de bloqueio. 
* Mas lembre-se, é possível que o Snort gere falsos positivos, então seja cauteloso ao acrescentar o parâmetro fwsam nas regras. 

Referências

Snort e BASE no Debian:

Documentação do SnorSam:
Creditos:viniciusraupp(VOL)​
Subscribe to RSS Feed Follow me on Twitter!