Você está na página 1de 32
Instrutor Márcio Oliveira NIDS Snort - Sistemas operacionais Linux Oys -2013 www.oys.com.br

Instrutor Márcio Oliveira NIDS Snort - Sistemas operacionais Linux Oys -2013 www.oys.com.br

Network-IDS (NIDS) Snort

Network-IDS (NIDS) Snort

1. Objetivos:

Entender a importância de uma ferramenta NIDS.

Configurar um Apache dentro do chroot.

Onde posicionar na rede um NIDS.

Aprender o Snort com suporte a MySQL.

Conhecer e configurar a ferramenta AcidBase.

Conhecer ambientes de chroot (instlar e configurar - bônus)

Configurar servidor apache com certificados SSL e entender a sua importância.

Colocar o Snort para trabalhar em Bridge.

Ver a correlação da Norma com ferramentas NIDS.

Integrar o Snort com um IPS (Guardian)

2. Conformidade com a norma.

De acordo com o item 10.6.1, da norma ABNT NBR ISO/IEC 27002:2005, convém que as redes sejam adequadamente gerenciadas e controladas, de forma a protegê-las contra ameaças e manter a segurança de sistemas e aplicações que utilizam estas redes, incluindo a informação em trânsito.

3. Como funciona a solução SNORT.

O Snort realizando sozinho a tarefa de registros de possíveis tentativas de ataque em potencial é uma ótima solução e se torna melhor combinado com uma ferramenta para tratar os logs, tornando a informação ainda mais útil para um administrador.

O Snort é basicamente formado por 4 componentes:

libpcap – Biblioteca utilizada por todas as ferramentas de sniffers. Ela é responsável por colocar a placa de rede em modo promiscuo, ou seja, o modo que captura todos os pacotes que passam pela rede.

Pré-processadores - São recursos do Snort que são responsáveis por fazer um pré filtro nos pacotes que estão passando por ele, sendo assim, ele diminui bastante o processamento da máquina e do Snort e também ajuda a evitar os falsos positivos. Se o pré-processador detecta algum tipo de tentativa de ataque, ele já gera um log não passando o pacote para as regras do Snort.

Regras do Snort - Depois que os pacotes passam pelos pré-processadores sem gerar uma tentativa de ataque, eles vão para as regras do Snort, onde é feito uma checagem mais completa conforme as regras que o Snort possuí. Caso as regras detectem algo, é gerado um log.

Logs – Os logs podem ser gerados tanto na detecção dos pré-processadores quanto nas regras do Snort. Esses logs por padrão são gerados no formato texto, e para facilitar a visualização deles, vamos configurar para serem gravados em uma base MySQL.

4. Onde o Snort deve ficar?

O mais complexo em uma implementação do serviço Snort, não é a instalação do próprio servidor e sim saber onde posicionar o NIDS.

Na figura abaixo, podemos ver um exemplo de onde podemos posicionar o nosso NIDS(Snort).

um exemplo de onde podemos posicionar o nosso NIDS(Snort). Para o caso do Snort que pode
um exemplo de onde podemos posicionar o nosso NIDS(Snort). Para o caso do Snort que pode

Para o caso do Snort que pode ficar entre o Firewall e o Switch, ele está trabalhando como uma bridge que será visto no final desse capítulo.

5. Instalação e configuração do Snort em modo NIDS, com suporte do MySQL.

“Obs.: O Snort foi instalado em um sistema Linux, na distribuição Debian.

Os procedimentos aqui apresentados, pode ser utilizados em qualquer distribuição, respeitando o processo independente de cada distribuição.

Neste manual também apresentamos formas de instalação baseados em sistemas Red Hat (CentOS).”

5.1 Instalando o MySQL

1 – Instale o mysql-server:

# aptitude install mysql-server

– Instale o mysql-server: # aptitude install mysql-server # yum install mysql-server 2 – Verifique se

# yum install mysql-server

2 – Verifique se o MySQL está rodando e se os sockets estão ativos:

# ps aux | grep mysql

# netstat -nlpt

3 – Se na instalação não for definido uma senha do usuário root do MySQL, pode-se fazer com o seguinte comando:

# mysqladmin -u root password nova_senha

o seguinte comando: # mysqladmin -u root password nova_senha Para manter a segurança no acesso da

Para manter a segurança no acesso da base de dados que será criada, é necessário criar um usuário comum para ser o dono dessa base, não comprometendo a segurança de todo o banco de dados.

4

– Crie um usuário chamado snort no banco de dados:

# mysql -u root -p

mysql> grant all privileges on snort.* to snort@192.168.200.X identified by "123456";

mysql> grant all privileges on snort.* to snort@localhost identified by "123456";

mysql> quit

Dessa maneira, o usuário snort será criado e terá acesso à base snort através do IP da máquina e do hostname.

5 – Agora, conecte no MySQL com o usário snort e crie a base de dados snort:

# mysql -u snort -p

mysql> show databases;

mysql> create database snort;

mysql> quit

5.2 Instalação e Configuração do Snort com suporte a MySQL.

1 – Instale o Snort com suporte a MySQL:

# aptitude install snort-mysql

o Snort com suporte a MySQL: # aptitude install snort-mysql # yum install snort-mysql 2 –

# yum install snort-mysql

2 – Detalhes de configuração:

Faixa de endereço na qual o Snort deve ouvir: 192.168.200.0/24

Deseja configurar uma base de dados para snort-mysql gravar os logs: Sim

- É necessário criar as tabelas dentro da base de dados snort. O Snort traz um exemplo das tabelas na sua documentação. Entre no seguinte diretório:

3

#

cd /usr/share/doc/snort-mysql

4 - Utilize o arquivo create_mysql.gz para criar as tabelas dentro da base de dados snort:

# zcat create_mysql.gz | mysql -u snort -h localhost -p snort -D snort

5 – Acesse o servidor MySQL e verifique as tabelas na base de dados snort:

# mysql -u snort -p

mysql> show databases;

mysql> use snort;

mysql> show tables;

mysql> status;

mysql> quit;

6

– Verifique os arquivos de configuração do snort:

#

cd /etc/snort

#

ls -l

7

– Faça um cópia do snort.conf original e mantenha um novo arquivo sem os comentários:

#

mv snort.conf snort.conf.original

#

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

8

– Edite o snort.conf e modifique-o da seguinte maneira:

#

vim snort.conf

var HOME_NET 192.168.200.0/24 var EXTERNAL_NET any

var DNS_SERVERS $HOME_NET var SMTP_SERVERS $HOME_NET var HTTP_SERVERS $HOME_NET

var SQL_SERVERS $HOME_NET … (suprimido) output database: log, mysql, user=snort password=123456 dbname=snort host=localhost # Comentar a linha include dabases.conf (suprimido)

# Comentar a linha include dabases.conf include classification.config include reference.config include $RULE_PATH/local.rules include $RULE_PATH/bad-traffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/community-exploit.rules include $RULE_PATH/scan.rules include $RULE_PATH/finger.rules include $RULE_PATH/ftp.rules

(suprimido)

9 – Verifique também o arquivo de configuração snort.debian.conf:

# vim snort.debian.conf

DEBIAN_SNORT_STARTUP="boot"

DEBIAN_SNORT_HOME_NET="192.168.254.0/24"

DEBIAN_SNORT_OPTIONS=""

DEBIAN_SNORT_INTERFACE="eth0"

DEBIAN_SNORT_SEND_STATS="true"

DEBIAN_SNORT_STATS_RCPT="root"

10 – Visualize as regras (assinaturas) do Snort dentro do diretório rules:

# cd rules

# ls

11

– Antes de reiniciar o snort, apague o arquivo de pendência da configuração do banco de dados

que ele criou dentro de /etc/snort:

# cd /etc/snort

# rm db-pending-config

12 – Inicie o snort:

# /etc/init.d/snort start

6. Instalação e Configuração do Apache2 com chroot.

6.1 Conformidade com a norma.

No que diz respeito ao isolamento de sistemas sensíveis, a norma ABNT NBR ISO/IEC 27002:2005 diz no item 11.6.2, que sistemas sensíveis devem ter um ambiente computacional dedicado (isolado).

6.1.1 O que é chroot?

O chroot é do que um ambiente isolado (enjaulado) dentro da sua máquina real.

Também pode ser definido como um sistema dentro de outro que compartilham processos.

É um ambiente recomendável para sistemas de acesso público.

6.2 Execução do procedimento: Criando o Sistema Chroot

Pode-se utilizar o comando debootstrap para criar um sistema Debian em chroot.

1

– Instale o debootstrap:

#

aptitude install debootstrap

2

– Utilize o debootstrap para montar um Debian em chroot:

#

mkdir /var/debchroot

#

debootstrap lenny /var/debchroot

/var/debchroot # debootstrap lenny /var/debchroot Como estamos usando um repositório interno, podemos fazer

Como estamos usando um repositório interno, podemos fazer da seguinte maneira:

# debootstrap lenny /var/debchroot http://192.168.1.1/debian

3 – Monte o diretório virtual do kernel do sistema original dentro do sistema chroot, e o diretório de dispositivos:

# mount --bind /proc/ /var/debchroot/proc

# mount --bind /dev/pts /var/debchroot/dev/pts

4

– Depois, acesse o sistema chroot criado:

#

chroot /var/debchroot

5 – Modifique a variável de prompt para diferenciá-lo do sistema original:

# vim /root/.bashrc

export PS1='debchrootXX:\w\$ '

6

– Entre novamente no sistema chroot e atualize a lista de pacotes do apt:

#

chroot /var/debchroot

#

aptitude update

7

– Para um teste, pare o ssh no sistema original:

#

exit

#

/etc/init.d/ssh stop

8

– Agora dentro do sistema chroot, instale o ssh:

#

chroot /var/debchroot

#

aptitude install ssh

9

– Defina uma senha para o usuário root do sistema chroot:

#

passwd root

10 – No /etc/fstab do chroot, crie a montagem dos dispositivos dos terminais virtuais:

# vim /etc/fstab

none

/dev/pts

# mount -a

# mount

devpts defaults

0

0

11 – Conecte-se via ssh em qualquer máquina e veja em qual sistema entrará:

#

ssh root@192.168.200.X

A instalação e a configuração do Apache2, PHP5 e AcidBase, serão feitas dentro do sistema chroot para uma melhor segurança, mantendo essas aplicações isoladas do sistema original.

1 – Entre no sistema chroot:

#

chroot /var/debchroot

2

– Instale o Apache2:

#

aptitude install apache2

– Instale o Apache2: # aptitude install apache2 # yum install httpd 3 – Edite o

# yum install httpd

3 – Edite o arquivo de configuração do apache2 e defina um FQDN:

# vim /etc/apache2/apache2.conf

ServerName 192.168.200.X

4 – Reinicie o Apache2:

# /etc/init.d/apache2 restart

5 – Retire a opção de Indexes para o diretório padrão do Apache2 (procedimentos básicos de segurança para o Apache2):

# cd /etc/apache2/sites-available

# vim default

<Directory /var/www/> #Options Indexes FollowSymLinks MultiViews Options FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>

6 – Desative o banner de página do Apache2:

# cd /etc/apache2/conf.d

# vim security

ServerSignature Off

7

– Reinicie o Apache2:

#

/etc/init.d/apache2 restart

8

– Faça um teste acessando a página do seu servidor pelo browser:

http://192.168.200.x

9 – Saia do sistema chroot e crie um script no sistema original para iniciar o Apache2 dentro do sistema chroot quando a máquina for ligada:

#

exit

#

vim /etc/init.d/apache2_chroot

1

#!/bin/bash

2

3

mount --bind /proc /var/debchroot/proc

4

mount --bind /dev/pts /var/debchroot/dev/pts

5

chroot /var/debchroot /etc/init.d/apache2 start

10 – Crie os links simbólicos para os níveis de execução:

#

update-rc.d apache2_chroot start 21 2 3 4 5 .

6.3 Instalação e Configuração do PHP5

1

– Entre no sistema chroot:

#

chroot /var/debchroot

2

– Instale o PHP5 e alguns módulos necessários:

#

aptitude install php5

#

aptitude install php5-mysql

#

aptitude install libapache2-mod-php5

3 – Crie um arquivo na raiz das paginas servidas do apache, com o nome index.php, com o seguinte conteúdo:

# vim /var/www/index.php <? php phpinfo() ?>

4

– Salve o arquivo e reinicie o apache2:

#

/etc/init.d/apache2 restart

5

– Em um navegador, acesse o conteúdo que o apache está servindo, com o teste do php:

Seu servidor foi instalado corretamente, com suporte a php / mysql. 6.4 Apache com suporte

Seu servidor foi instalado corretamente, com suporte a php / mysql.

6.4 Apache com suporte a SSL.

1

– Entre no sistema chroot:

#

chroot /var/debchroot

2

– Verifique se o módulo ssl está ativo:

#

apache2ctl -M

 

ou

#

ls -l /etc/apache2/mods-enabled

3

– Se não, ative o módulo ssl:

#

a2enmod ssl

Vai pedir para reiniciar o apache mas antes é necessário fazer mais algumas modificações.

– Confira no arquivo /etc/apache2/ports.conf a porta padrão que o protocolo http sobre TLS/SSL ouve:

4

#

vim /etc/apache2/ports.conf

“Nos próximo passos mostraremos o que é preciso para criação de um certificado padrão X.509, e como nós mesmos podemos assiná-lo. Utilizaremos o programa openssl para isto”.

5

– Verifique se tem o pacote instalado:

#

dpkg -l openssl

6

– Instalando o openssl caso não possua:

#

aptitude install openssl

openssl caso não possua: # aptitude install openssl # yum install openssl 7 – Crie um

# yum install openssl

7

– Crie um diretório para o certificado:

#

mkdir /etc/apache2/ssl

#

cd /etc/apache2/ssl

8

– Agora, criar um certificado com algoritmo padrão que é aceito pela maioria dos browsers:

Primeiro a chave:

#

openssl genrsa -out hostname.key 1024

 

Depois o certificado (serão feitas algumas perguntas):

#

openssl req -new -key hostname.key -out hostname.csr

You are about to be asked to enter information that will be incorporated into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:BR[ENTER] State or Province Name (full name) [Some-State]:Rio de Janeiro[ENTER] Locality Name (eg, city) []:Rio de Janeiro[ENTER] Organization Name (eg, company) [Internet Widgits Pty Ltd]:OYS[ENTER] Organizational Unit Name (eg, section) []:Infra[ENTER] Common Name (eg, YOUR name) []:.[ENTER] Email Address []:academia@oys.com.br[ENTER]

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:[ENTER]

An optional company name []:[ENTER]

9 – Neste ponto você tem duas opções, pode tanto enviar seu certificado (CSR) para uma das várias autoridades certificadoras para que assinem e tornem seu certificado válido ou você mesmo pode assinar:

# openssl x509 -req -days 365 -in hostname.csr -signkey hostname.key -out hostname.crt

365 -in hostname.csr -signkey hostname.key -out hostname.crt O arquivo hostname.crt é o certificado, e o hostname.key

O arquivo hostname.crt é o certificado, e o hostname.key a chave.

10

– Adicionando as diretivas necessárias para ativar o SSL:

# cd /etc/apache2/sites-available

# vim default-ssl

#SSL Engine Switch:

#Enable/Disable SSL for this virtual host. SSLEngine on

#A self-signed (snakeoil) certificate can be created by installing #the ssl-cert package. See #/usr/share/doc/apache2.2-common/README.Debian.gz for more info. #If both key and certificate are stored in the same file, only the #SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/ssl/hostname.crt SSLCertificateKeyFile /etc/apache2/ssl/hostname.key

11 – Ative o site default-ssl:

# a2ensite default-ssl

12 – Reinicie o serviço:

# /etc/init.d/apache2 restart

13 – Verifique os processos do Apache2 que foram inicializados:

# ps aux | grep apache2

14 – Confira as portas que foram abertas para o servidor web com https:

# netstat -nltp | grep apache2

7. Instalação e Configuração do AcidBase

O AcidBase é a ferramenta que será utilizada para visualizar os eventos de alerta que serão gerados pelo Snort e gravados dentro do MySQL. Para funcionar, o AcidBase depende do Apache com PHP pois é uma ferramenta Web. O Apache2 e o PHP5 já estão instalados no sistema chroot, então, o AcidBase deverá ser instalado lá também.

1

– Entre no sistema chroot:

#

chroot /var/debchroot

2

– Instale o Acidbase:

#

aptitude install acidbase

O Red Hat e o Debian Weezy, não possuem pacotes para o Acidbase. Nesse caso é necessário instalar para o Red Hat, diretamente pelo fonte: https://launchpad.net/debian/sid/ https://launchpad.net/debian/sid/

+source/acidbase/1.4.5-3/+files/acidbase_1.4.5.orig.tar.gz Para o Weezy, adicionar o seguinte repositório no
+source/acidbase/1.4.5-3/+files/acidbase_1.4.5.orig.tar.gz
Para
o
Weezy,
adicionar
o
seguinte
repositório
no
debian
chroot:
deb
http://ftp.de.debian.org/debian squeeze main
Obs.: Não tem problema ser de outra versão a distro debian
Obs.: Não tem problema ser de outra versão a distro debian Pelo fato da instalação do

Pelo fato da instalação do AcidBase estar sendo feita dentro do sistema chroot, talvez ele não conseguirá criar as tabelas necessárias na base de dados snort, pois na instalação padrão ele entende que o MySQL está na mesma máquina, por isso, deve-se ignorar a criação das tabelas na base de dados, elas serão feitas posteriormente.chroot: deb http://ftp.de.debian.org/debian squeeze main Obs.: Não tem problema ser de outra versão a distro debian

3 – Edite o arquivo de configuração de base de dados do AcidBase, informando os valores corretos:

# cd /etc/acidbase

# vim database.php

$alert_user='snort';

$alert_password='123456';

$basepath=''; $alert_dbname='snort';

$alert_host='192.168.200.X';

$alert_port='3306';

$DBtype='mysql';

4 – Libere acesso à página do AcidBase nas configurações do Apache2:

# cd /etc/acidbase

# vim apache.conf

<IfModule mod_alias.c> Alias /acidbase "/usr/share/acidbase" </IfModule>

<DirectoryMatch /usr/share/acidbase/> Options +FollowSymLinks AllowOverride None order deny,allow deny from all allow from 192.168.200.0/255.255.255.0 allow from 127.0.0.0/255.0.0.0 <IfModule mod_php4.c> php_flag magic_quotes_gpc Off php_flag track_vars On php_value include_path .:/usr/share/php </IfModule> </DirectoryMatch>

5

– Crie o link simbólico para a pasta do apache2:

#

ln -s /etc/acidbase/apache.conf /etc/apache2/conf.d/acidbase.conf

6

– Reinicie o Apache2:

#

/etc/init.d/apache2 restart

7

– Saia do sistema chroot:

#

exit

8

– Permita que o Mysql trabalhe no IP da máquina e não só em localhost:

#

vim /etc/mysql/my.cnf

bind-address

= 192.168.200.X

#

/etc/init.d/mysql restart

9

– Acesse o AcidBase no browser:

http://192.168.200.X/acidbase/

Acesse o AcidBase no browser: http://192.168.200.X/acidbase/ No primeiro acesso, a interface do AcidBase dará um erro

No primeiro acesso, a interface do AcidBase dará um erro reclamando a falta de algumas das tabelas que o AcidBase utiliza. Para resolver esse erro, clique em Setup Page e depois em Create Base AG.

8. Snort trabalhando como uma ponte (bridge).

Em ambientes onde o Snort precisa ficar transparente na rede, ou em redes onde não tem a disponibilidade de trabalhar com um Switch com port-mirror, podemos fazer que o Snort trabalhe como se fosse uma ponte(bridge), onde todo o tráfego de rede passará por ele de forma transparente.

1 – Primeiro é necessário instalar o pacote para criar a bridge entre as interfaces:

# aptitude install bridge-utils

bridge entre as interfaces: # aptitude install bridge-utils # yum install bridge-utils 2 – Agora, criar

# yum install bridge-utils

2 – Agora, criar a interface de bridge:

# brctl addbr br0

# ifconfig -a

3 – Com a interface de bridge criada, é necessário definir quais interfaces vão pertencer a ela para a ponte ser estabelecida:

#

brctl addif br0 eth0

#

brctl addif br0 eth1

#

brctl show

4

– Para ficar algo transparente, as interfaces não podem ter endereço IP:

#

ifconfig eth0 0.0.0.0

#

ifconfig eth1 0.0.0.0

5

– Para colocar a bridge em funcionamento é necessário levantar a sua interface:

#

ifconfig br0 up

6 – Para deixar essas configurações fixas, edite o /etc/network/interfaces e deixe da seguinte maneira:

# vim /etc/network/interfaces

auto lo iface lo inet loopback

# The primary network interface auto eth0 iface eth0 inet manual address 0.0.0.0 network 0.0.0.0 broadcast 0.0.0.0

auto eth1 iface eth1 inet manual address 0.0.0.0 network 0.0.0.0 broadcast 0.0.0.0

auto br0 iface br0 inet manual bridge_ports eth0 eth1 bridge_maxwait 0

7 – Agora, faça com que o Snort trabalhe na interface da bridge:

# vim /etc/snort/snort.debian.conf

DEBIAN_SNORT_STARTUP="boot"

DEBIAN_SNORT_HOME_NET="192.168.X.0/24"

DEBIAN_SNORT_OPTIONS=""

DEBIAN_SNORT_INTERFACE="br0"

DEBIAN_SNORT_SEND_STATS="true" DEBIAN_SNORT_STATS_RCPT="root"

DEBIAN_SNORT_STATS_THRESHOLD="1"

8 – E feitas as modificações, reiniciar o snort:

9 – Para desfazer a bridge, faça fazer os seguintes passos:

# ifconfig br0 down

# brctl delif br0 eth0

# brctl delif br0 eth1

# brctl delbr br0

# /etc/init.d/networking restart

9. IPS – Intrusion Prevention System

9.1 Definição de IPS

O IPS é o dispositivo que trabalha junto com o NIDS ou HIDS para tomar uma ação relacionado a

determinado evento que o NIDS/HIDS registraram. Em nosso caso o nosso NIDS é Snort, e o IPS que

vamos trabalhar é o Guardian que foi desenvolvido para trabalhar exclusivamente com o Snort.

Sua funcionalidade é simples, o Guardian fica constantemente analisando os logs do Snort, quando

é gerado uma alerta de nível 2, que é o mais alto do Snort, o Guardian criará automaticamente uma regra

com iptables para bloquear o IP que está atacando. Esse IP pode ficar bloqueado constantemente, ou por

um determinado tempo.

9.2 Instalando o Guardian

1 – O Guardian é basicamente um script em Perl, e não está em repositórios Debian. Pode-se obtê- lo pelo seguinte site:

http://www.chaotic.org/guardian/

2

– Após baixar o Guardian, vamos descompacta-lo:

#

cd /opt

#

tar xzvf guardian-1.X.tar.gz

#

cd guardian-1.X

3

– Primeiro, modifique o arquivo de configuração guardian.conf e coloque-o no /etc:

#

vim guardian.conf

Interface ethX

LogFile

/var/log/guardian.log

AlertFile /var/log/snort/alert

IgnoreFile /etc/guardian.ignore

TimeLimit 3600

# cp guardian.conf /etc

4 – Pode-se criar o aquivo guardian.ignore, e colocar os IPS que não precisam ser checados, no caso, podemos colocar o nosso próprio IP:

# vim /etc/guardian.ignore

192.168.200.X

5 – Agora, é necessário preparar os scripts que o guardian utilizará par bloquear e desbloquear os IP's:

# cd scripts

# cp iptables_block.sh /sbin/guardian_block.sh

# cp iptables_unblock.sh /sbin/guardian_unblock.sh

6 – Para colocar o Guardian em funcionamento, coloque o script guardian.pl para um dos diretórios do PATH:

# cd

# cp guardian.pl /sbin

Por uma limitação do Guardian, seu sistema precisa estar com o idioma em inglês, pois

Por uma limitação do Guardian, seu sistema precisa estar com o idioma em inglês, pois o

Guardian se baseia nos parâmetros que estão no ifconfig.

7

– Crie o arquivo de log do Guardian:

#

touch /var/log/guardian.log

8

– Crie o arquivo de Target para incluir os IPs, a serem monitorados:

#

vim /etc/guardian.target

192.168.0.21

192.168.1.1

200.x.x.x

9 – Incluir na configuração do Snort, a opção de armazenamento de alertas, no arquivo alert, independente do que for logado no MySQL:

# vim /etc/snort/snort.conf

output alert_full: /var/log/snort/alert output log_tcpdump: tcpdump.log output database: log, mysql, user=snort password=123456 dbname=snort host=localhost

10 – Inicie o Guardian:

# guardian.pl -c /etc/guardian.conf

# ps ax

11 – Para testar, acompanhe o log do Guardian enquanto outra máquina faz uma varredura com

nmap:

# tail -f /var/log/guardian.log

12 – Pode-se criar um script no nível de execução padrão para o Guardian ser iniciado automaticamente no boot do sistema:

#

vim /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

# chmod 755 /etc/init.d/guardian

# update-rc.d guardian defaults

# /etc/init.d/guardian

# /etc/init.d/guardian stop

# /etc/init.d/guardian start

13 – Para testar, execute um nmap no host onde encontra-se instalado o snort / guardian:

# nmap -sX 192.168.0.21

10. Modos de utilização do Snort

10.1 Modo Sniffer

Em modo de Sniffer o programa lê todos os pacotes de uma rede e faz o dump de cada pacote num modo descodificado e capaz de ser compreendido, para um dispositivo de saída. Para activar o modo de sniffer, temos os seguintes opções:

–v: verbose mode –d: dump packects payloads com os headers –e: display link-layer data

O modo ‘-e’ display o link-layer data que para o Ethernet é o header do pacote, no entanto o Snort suporta também os header do Token Ring e do FDDI. Combinando todos os switches temos uma visão muito detalhada do tráfego da rede. Além desta opção, a opção “-i”, também foi utilizada, especificando a interface “eth0”, com a ser monitorada. Caso esta opção não seja definida, o snort monitora a primeira interface do sistema.

Inicie o snort em modo sniffer, utilizando as opções acima:

# snort -vde -i eth0

sniffer, utilizando as opções acima: # snort -vde -i eth0 Modo de utilização do Snort como

Modo de utilização do Snort como Sniffer

A saída do comando também poderá se concatenada para um arquivo-texto, a fim de registrar o monitoramento.

Para isso, use o comando monitoramento:

tee, segui o nome do arquivo que deseja armazenar

as saídas do

# snort -vde -i eth0 | tee arquivo_monitoramento.txt

Após o monitoramento, use um edito de texto, para visualizar os eventos registrados

10.2 Em modo de Packet Logger

Neste modo o Snort registra todos os pacotes que se encontram relacionados com um arquivo ou

directório.

A opção que permite ativar este modo é ‘–l’, e quando ativado permite registar os pacotes do

monitoramento, bem como os endereços IP dos hosts envolvidos, colocando-os em arquivos por protocolo

e número das portas.

Os pacotes podem ser registados ou logged no formato binário se for especificado a opção ‘-b’, podendo

desta forma preservar os pacotes para que uma aplicação capaz de manusear ficheiros em raw

TCPDump.

Opções no modo Packet Logger:

–l <logdir>: Despeja os pacotes no ficheiro <logdir>

–b: Regista os pacotes no formato binário (tcpdump)

#snort -l /var/log/snort/ #snort -b -l /var/log/snort/

A opção “--i”, também poderá ser utilizada, para especificação da inrterface

10.3 Em modo de NIDS

O modo NIDS foi apresentado nos capítulos anteriores (instalação e configuração, pag.: 7)