Automatizando Firewall Com IDS Snort e SnortSam
Automatizando Firewall Com IDS Snort e SnortSam
Automatizando Firewall Com IDS Snort e SnortSam
Page 1 of 6
Introduo Snort um sistema de deteco de intrusos (IDS), o qual usa seus sensores e um conjunto de regras para monitorar todo o trfego da rede e gerar alertas de possveis ameaas segurana de seus sistemas. Com a ajuda do plugin SnortSam, ser possvel automatizar bloqueios de endereos IP em seu firewall. Neste tutorial ser mostrado como instalar e configurar o Snort. Como este pacote s gera alertas de ameaas, ser necessria a ajuda do plugin SnortSam para receb-los e executar uma regra de firewall para bloquear o endereo IP do computador mal-intencionado. Para visualizar os alertas do Snort utilizaremos uma interface amigvel de um sistema Web chamado BASE (Basic Analysis and Security Engine), conectada a uma base de dados em MySQL. Abaixo, o sistema operacional e verses dos pacotes utilizados:
z z z z z z
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 instalao 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 atravs da outra placa. Endereos IPs do firewall:
z z
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 necessrio: 1. 2. 3. 4. 5. Baixar o cdigo fonte do Snort; Aplicar patch SnortSam sobre o fonte do Snort; Compilar e instalar Snort; Baixar cdigo fonte do SnortSam; Compilar e instalar SnortSam.
Instalao do Snort Inicie pelos procedimentos de compilao e instalao do Snort, para isto preciso instalar algumas dependncias via apt-get: # apt-get install -y libfont-afm-perl libgcrypt11 libgnutls26 libgpg- error0 libhtml-formatperl libhtml-parser-perl autoconf automake # apt-get install -y libhtml-tagset-perl libhtmltree-perl libltdl7 libmailtools-perl libmysqlclient16 libmysql++-dev libpcap0.8 libpcre3 # apt-get install -y libprelude2 libtasn1-3 liburi-perl libwww-perl oinkmaster libpcap-dev
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013
Page 2 of 6
Outras dependncias
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 no 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 aplicao do patch SnortSam: Baixe o patch compatvel com a verso do Snort, no caso 2.9.2.2: # wget http://www.snortsam.net/files/snort-plugin/snortsam-2.9.2.2.diff.gz Descompacte na mesma pasta do cdigo 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, faa os procedimentos abaixo:
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013
Page 3 of 6
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 parmetro: "-- force", na linha onde consta o comando libtoolize 3. Por ltimo, torne o arquivo "autojunk" executvel e execute: # chmod +x autojunk.sh # ./autojunk.sh Repita o processo de compilao e instalao. Crie a pasta para os arquivos de configurao do Snort e copie os arquivos de configurao fornecidos na pasta do cdigo 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 necessrias 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 necessria para enviar os alertas especficos ao daemon SnortSam. output alert_fwsam: 127.0.0.1:898/password Em "Customize your rule site", comente todas regras com a exceo da "icmp-info.rules", pois ser a nica regra usada em nossos teste. Salve e feche o arquivo de configurao. Crie o usurio "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 Faa o download do pacote de regras do Snort no site oficial (necessrio criar uma conta no site):
z
http://www.snort.org/snort-downloads
E descompacte em /etc/snort/.
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013
Page 4 of 6
Faa 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 promscuo: # ifconfig eth0 promisc # /usr/local/snort/bin/snort -v -i eth0
Instalao do MySQL e BASE Instalao 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 administrao do MySQL e coloque a senha criada na hora da instalao: # mysql -u root -p Use os comandos abaixo para criar a base de dados e usurio 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 cdigo 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 servio apache2:
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013
Page 5 of 6
# invoke-rc.d apache2 restart Acesse a pgina do acidbase via rede local: http://192.168.1.1/acidbase Para completar a instalao, surgir uma pgina com um erro, mas normal. Clique em Setup Page e depois em Create_ACID_AG. Aps feita a instalao com sucesso, acesse novamente o endereo da pgina do acidbase.
Instalao do servio 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 configurao: 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 configuraes, escolha um arquivo de regras dentro da pasta /etc/snort/rules/ e acrescente no final da regra o parmetro "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 descrio "ICMP-Info Echo Reply". Acrescente nesta regra o parmetro "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 servios:
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013
Page 6 of 6
# /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 servio sem o parmetro "-Dq". # /usr/local/bin/snortsam Para depurar erros do SnortSam, inicie o servio snortsam-debug que se encontra na mesma pasta do pacote "snortsam-src-2.70.tar.gz" descompactado e compilado anteriormente. Agora pea para algum de fora de sua rede pingar para seu servidor e acompanhe via BASE os alertas gerados pelo Snort. Tambm possvel acompanhar os logs pra analisar os bloqueios ou possveis erros de configurao: # tail -f /var/log/snort/snortsam.log Com Snort e SnortSam tambm possvel trabalhar de forma distribuda, voc pode instalar Snort em outro local estratgico 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, possvel que o Snort gere falsos positivos, ento seja cauteloso ao acrescentar o parmetro fwsam nas regras.
Referncias
Snort e BASE no Debian:
z z
http://www.aboutdebian.com/snort.htm HowTo: Tutorial Snort no Debian Squeeze com BASE Blog Cuidado Digital
Documentao do SnorSam:
z
SnortSamDocumentation doc.emergingthreats.net
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13710
03/02/2013