você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Snort IDS

Colaboração: Alexandro Silva

Data de Publicação: 16 de Julho de 2007

O SNORT é uma ferramenta NIDS desenvolvida por Martin Roesch, bastante popular por sua flexibilidade nas configurações de regras e constante atualização. O Guardian funciona em conjunto com o Snort, ele atualiza automaticamente as regras de vários firewalls ( ipfw, iptables, etc ) com base nos alertas gerados pelo Snort. O trabalho conjunto do Snort e do Guardian torna possível ações reativas em caso de intrusão e prevenção de ataques futuros. Instalação

Pacotes básicos

sudo apt-get install apache2 mysql-server php5 php5-mysql libmysqlclient12-dev php5-gd php-pear php-image-canvas php-image-graph libpcap0.8 libpcap0.8-dev libpcre3 libpcre3-dev

Crie um diretório para temp

mkdir ~/temp

Baixe o ADODB

cd ~/temp

wget http://ufpr.dl.sourceforge.net/sourceforge/adodb/adodb493a.tgz

Baixe o Base

wget http://ufpr.dl.sourceforge.net/sourceforge/secureideas/base-1.2.7.tar.gz

Baixe o Snort

wget http://www.snort.org/dl/current/snort-2.6.1.2.tar.gz

Baixe o PCRE

wget http://ufpr.dl.sourceforge.net/sourceforge/pcre/pcre-7.0.tar.gz

Crie um arquivo index.php

sudo vi /var/www/index.php

<?php
phpinfo();
?>

Teste funcionamento do Apache acesso o servidor digitando http://localhost na barra de endereços do navegador. Compilar e Instalar o PCRE

sudo tar zxf pcre-7.0.tar.gz
cd pcre-7.0
sudo ./configure
sudo make
sudo make install

Compilar e Instalar o Snort

Crie um link simbólico para o arquivo cc1plus, necessário para compilar o snort

sudo ln -s /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 /usr/bin/cc1plus

Compile o Snort

sudo tar zxf snort-2.6.1.2.tar.gz
cd snort-2.6.1.2
sudo ./configure --with-mysql=/usr
sudo make
sudo make install

Crie diretório /etc/snort/

sudo mkdir /etc/snort

Copie o arquivo snort.conf para o diretório /etc/snort

sudo cp ~/temp/snort-2.6.1.2/etc/snort.conf /etc/snort/

Baixe as regras

OBS: Existem 3 tipos de download de regras do snort

  1. Subscrição - Pago
  2. Registrado - Gratuito
  3. Comunidade - Gratuito

Aconselho você baixar o registrado, porque são regras atualizadas. Para isso clique no link download do pacote nortrules-snapshot-CURRENT.tar.gz e faça seu registro.

Salve o arquivo no diretório /etc/snort e descompacte-o.

Configurando o Snort

Edite o arquivo /etc/snort/snort.conf alterando as entradas abaixo

sudo vi /etc/snort/snort.conf

var HOME_NET any #Para capturar todos as redes
var EXTERNAL_NET !$HOME_NET #Tudo o que não for HOME_NET é externo
var RULE_PATH /etc/snort/rules #Caminho para as regras

output database: log, mysql, user=snort password=<senha_usuario_snort> dbname=snort host=localhost

}}

Confiurando o Mysql

Configure a base de dados do Snort no MySQL:

{{{

sudo mysql

mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
    Query OK, 0 rows affected (0.25 sec)

mysql> create database snort;
    Query OK, 1 row affected (0.01 sec)

mysql> grant INSERT,SELECT on root.* to snort@localhost;
    Query OK, 0 rows affected (0.02 sec)

mysql> SET PASSWORD FOR snort@localhost=PASSWORD('password_do_snort.conf');
    Query OK, 0 rows affected (0.25 sec)

mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
    Query OK, 0 rows affected (0.02 sec)

mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;
    Query OK, 0 rows affected (0.02 sec)
mysql> exit
Bye

Crie as tabelas

sudo mysql -u root -p < ~/temp/snort-2.6.1.2/schemas/create_mysql snort

Verifique se a base de dados do Snort foi criada corretamente

sudo mysql -p

mysql> SHOW DATABASES;
—------------------
| Database           |
—------------------
| information_schema |
| mysql              |
| snort              |
—------------------
3 rows in set (0.01 sec)

mysql> use snort
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SHOW TABLES;
—----------------
| Tables_in_snort  |
—----------------
| acid_ag          |
| acid_ag_alert    |
| acid_event       |
| acid_ip_cache    |
| base_roles       |
| base_users       |
| data             |
| detail           |
| encoding         |
| event            |
| icmphdr          |
| iphdr            |
| opt              |
| reference        |
| reference_system |
| schema           |
| sensor           |
| sig_class        |
| sig_reference    |
| signature        |
| tcphdr           |
| udphdr           |
+------------------+
22 rows in set (0.01 sec)

Instale o ADODB

{{{

sudo cp ~/temp/adodb493a.tgz /var/www/
cd /var/www/
sudo tar zxf adodb493a.tgz
sudo rm adodb493a.tgz

Instale e configure o BASE

sudo mkdir -p /var/www/html
sudo cp ~/temp/base-1.2.7.tar.gz /var/www/html
cd /var/www/html
sudo tar zxf base-1.2.7.tar.gz
sudo rm base-1.2.7.tar.gz
sudo mv base-1.2.7 base
cd /var/www/html/base
sudo cp base_conf.php.dist base_conf.php

Edite o ficheiro /var/www/html/base/base_conf.php e altere os parâmetros

$BASE_urlpath = '/html/base';
$DBlib_path = '/var/www/adodb/';
$DBtype = 'mysql';
$alert_dbname = 'snort';
$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = 'senha_usuario_snort';
/* Archive DB connection parameters */
$archive_exists = 0; # Set this to 1 if you have an archive DB

Crie no diretório /etc/snort/rules os seguintes arquivos. Faça isso usando o comando touch <nome_arquivo>

local.rules
exploit.rules
bad-traffic.rules
scan.rules
finger.rules
ftp.rules
telnet.rules
rpc.rules
rservices.rules
dos.rules
ddos.rules
dns.rules
tftp.rules
web-cgi.rules
web-coldfusion.rules
web-iis.rules
web-frontpage.rules
web-misc.rules
web-client.rules
web-php.rules
sql.rules
x11.rules
icmp.rules
netbios.rules
misc.rules
attack-responses.rules
oracle.rules
mysql.rules
snmp.rules
smtp.rules
imap.rules
pop2.rules
pop3.rules
nntp.rules
other-ids.rules
experimental.rules

Inicie o snort

sudo snort -c /etc/snort/snort.conf &

Consulte o BASE, executando no navegador

http://<endereço.ip>/html/base

Na página inicial de setup do BASE clicar no link SETUP PAGE e de seguida no botão CREATE AG. Agora você poderá verificar o log do snort via web. Instalando o Guardian

Baixe o fonte do Guardian

cd ~/temp

wget http://www.chaotic.org/guardian/guardian-1.7.tar.gz

Copie para o diretório /usr/src e descompacte

sudo cp guardian-1.7.tar.gz /usr/src
tar xzf guardian-1.7.tar.gz
cd guardian-1.7
cd scripts

Liste o conteúdo do diretório scripts e verifique se ele contem os arquivos abaixo

freebsd_block.sh    guardian_unblock.sh  ipfwadm_block.sh    iptables_unblock.sh
freebsd_unblock.sh  ipchain_block.sh     ipfwadm_unblock.sh  nullroute_block.sh
guardian_block.sh   ipchain_unblock.sh   iptables_block.sh   nullroute_unblock.sh

O programa Guardian utiliza sempre os scripts denominados guardian_block.sh e guardian_unblock.sh . Assim, deverão ser copiados para os arquivos com esses nomes correspondentes ao firewall que pretendemos utilizar. No nosso caso usaremos o iptables

sudo cp iptables_block.sh /usr/bin/guardian_block.sh
sudo cp iptables_unblock.sh /usr/bin/guardian_unblock.sh
sudo chmod 755 /usr/bin/guardian_block.sh /usr/bin/guardian_unblock.sh

Copie o script e o arquivo de configuração do Guardian para os locais correspondentes

cd ..
sudo cp guardian.pl /usr/bin
sudo chmod 755 /usr/bin/guardian.pl
sudo cp guardian.conf /etc/

Configure os seguintes parâmetros no arquivo /etc/guardian.conf

Interface eth0 # Interface eth0, a que vai ter os terminais bloqueados

AlertFile /var/adm/secure # Mude para /var/log/snort/alert

TimeLimit 86400 #Mude para um valor em segundos que pretendemos que o endereço IP fique bloqueado pela firewall. O valor  99999999  remove esta opção.

Crie o arquivo de log do Guardian

touch /var/log/guardian.log

Crie o arquivo guardian.ignore com os endereços IP que se pretende ignorar

touch /etc/guardian.ignore

Inicie o Guardian

guardian.pl -c /etc/guardian.conf

LINKS


H2HC - Hackers 2 Hackers Conference

Esse ano acontecerá em Brasília nos dias 08 e 09 de novembro de 2007 a 4º edição do H2HC - Hackers 2 Hackers Conference (http://www.h2hc.org.br) que é a maior conferência do seguimento na América Latina.

O H2HC no passado teve importantes palestrantes internacionais como Joachim de Zutter - ByteRage (Bélgica), Federico Kirschbaum (Argentina), Itzik Kotler (Israel), Francisco Amato (Argentina), Wence Vandermeersch - Cronek (Bélgica), etc.

Um dos palestrantes confirmados para esse ano é Alexander Kornbrust que é CEO (Chief Executive Officer) da Red Database Security GmbH, empresa especializada em segurança de banco de dados Oracle. A Red Database Security é uma das líderes no seguimento de segurança em banco de dados Oracle. Alexander Kornbrust é responsável pelas auditorias e treinamentos com foco em segurança e ataques a banco de dados Oracle, ele já se apresentou em diversos eventos mundialmente importantes como Black Hat, Microsoft Bluehat, IT Underground, Syscan, etc. Alexander Kornbrust trabalha como desenvolvedor e DBA Oracle desde 1992. Durante os últimos 6 anos, ele encontrou mais de 330 falhas de segurança em diversos produtos da Oracle.

Para os interessados o CFP (Call For Papers) está aberto.

Mais informações sobre o evento em: http://www.h2hc.org.br/

Esperamos contar com vocês.

Coordenação do H2HC."

Obrigado.

Atenciosamente,

Wendel Guglielmetti Henrique - a.k.a dum_dum



Veja a relação completa dos artigos de Alexandro Silva