Instalação e configuração do Snort Inline (modo IPS), Baynard2, Mysql e PulledPork no Debian Squeeze

Snort é um sistema de prevenção e detecção de intrusões de rede (IDS / IPS). Amplamente conhecido como uma ferramenta de IDS, atualmente já vem com o módulo (inline) de IPS integrado. Esse tutorial abrangerá a instalação do mesmo, juntamente com o Barnyard2, Mysql e o PulledPork.

[ Hits: 54.539 ]

Por: Fabrício Rodrigo em 07/08/2011


Instalação do Snort e dependências



Instalação das dependências

Instalando Apache e Mysql:

# apt-get install apache2 libapache2-mod-php5 libwww-perl mysql-server mysql-common mysql-client php5-mysql libnet1 libnet1-dev libpcre3 libpcre3-dev libcrypt-ssleay-perl libmysqlclient-dev php5-gd php-pear autoconf libphp-adodb php5-cli libtool libssl-dev gcc-4.4 g++ automake gcc make flex bison apache2-doc ca-certificates

Durante a instalação via apt será solicitado que seja inserida a senha do usuário "root" do banco de dados mysql.

Instalação libpcap:

# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
# tar -zxf libpcap-1.1.1.tar.gz && cd libpcap-1.1.1
# ./configure --prefix=/usr --enable-shared
# make && make install

Instalação libdnet:

# wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
# tar -zxf libdnet-1.12.tgz && cd libdnet-1.12
# ./configure --prefix=/usr --enable-shared
# make && make install

Instalação DAQ:

# wget http://www.snort.org/dl/snort-current/daq-0.5.tar.gz
# tar -zxf daq-0.5.tar.gz && cd daq-0.5

Antes da compilação é necessário que seja alterada a variável "buffer_size" com os seguintes valores:

# vi /usr/src/daq-0.5/os-daq-modules/daq_pcap.c

Alterar linha 219:

context->buffer_size = strtol(entry->key, NULL, 10);

Para:

context->buffer_size = strtol(entry->value, NULL, 10);

Depois, execute os comandos:

# ./configure
# make && make install

Atualizar o path das bibliotecas compartilhadas através do seguinte comando:

# echo >> /etc/ld.so.conf /usr/lib && ldconfig

Instalar e configurar Snort

# wget http://www.snort.org/dl/snort-current/snort-2.9.0.5.tar.gz -O snort-2.9.0.5.tar.gz
# tar -zxf snort-2.9.0.5.tar.gz && cd snort-2.9.0.5
# ./configure --enable-normalizer --enable-inline-init-failopen --enable-gre --enable-mpls --enable-targetbased --enable-decoder-preprocessor-rules --enable-ppm --enable-perfprofiling --enable-zlib --enable-active-response --enable-reload --enable-react --enable-flexresp3 --with-mysql --enable-dynamicplugin
# make && make install
# mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules
# groupadd snort && useradd -g snort snort
# chown snort:snort /var/log/snort /var/log/barnyard2
# cp /usr/src/snort-2.9.0.4/etc/*.conf* /etc/snort
# cp /usr/src/snort-2.9.0.4/etc/*.map /etc/snort

Após a instalação do Snort, deverá ser realizada a configuração básica para o funcionamento do mesmo.

# vi /etc/snort/snort.conf

Deve ser alteradas as seguintes variáveis básicas:

ipvar HOME_NET 192.168.1.0/24 # Insira os ip's ou CIDR da sua rede
ipvar EXTERNAL_NET !$HOME_NET
var RULE_PATH ./rules # indica que as regras estão no diretório /etc/snort/rules

Adicione a seguinte linha:

output unified2: filename snort.log, limit 128

Delete ou comente todas as linhas que contenham "include $RULE_PATH" exceto "include $RULE_PATH/local.rules".

Insira a seguinte linha:

include $RULE_PATH/snort.rules

Edite o arquivo /etc/snort/rules/local.rules com a seguinte regra para testar o funcionamento do snort:

alert icmp any any -> $HOME_NET any (msg:"Teste ICMP"; sid:10000001;)

Testando

Inicie o snort através do seguinte comando:

# /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Obs.: Inserir a interface de rede (eth) correspondente.

Para testar o funcionamento parcial, ping de outro computador, no computador ao qual está instalado o snort, deverá ser exibido os alertas no console, como no exemplo abaixo:
Linux: Instalação e configuração do Snort Inline (modo IPS), Baynard2, Mysql e PulledPork no Debian Squeeze
Se os alertas acimas foram exibidos, a configuração inicial está OK. Caso não exiba as mensagens revise os passos anteriores.

Configurar o MySQL server

# mysql -u root -p

Será solicitada a senha do usuário "root" do mysql inserida no início da instalação.

mysql> create database snort;
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;

Altere a linha abaixo, para criar a senha de acesso do usuário snort a base de dados (padrão = 'mypassword'):

mysql> SET PASSWORD FOR snort@localhost=PASSWORD('mypassword');
mysql> exit;

Em seguida deve ser importado o schema do banco de dados:

# mysql -u root -p < /usr/src/snort-2.9.0.4/schemas/create_mysql snorti

Será solicitada a senha do usuário "root" do mysql novamente.

Instale e configure o barnyard2

O Barnyard aumenta a eficiência, funcionando como um buffer entre o snort e o mysql, reduzindo a carga do sistema e a perda de pacotes. O snort grava os dados em arquivos unificados binários (unified) para posterior interpretação do Barnyard que fará a inserção dos alertas no banco de dados.

# wget http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz
# tar -zxf barnyard2-1.9.tar.gz && cd barnyard2-1.9
# ./configure --with-mysql
# make && make install
# mv /usr/local/etc/barnyard2.conf /etc/snort
# vi /etc/snort/barnyard2.conf

Na linha 215 altere para "output alert_fast".

No final do arquivo adicione a seguinte linha:

output database: log, mysql, user=snort password=mypassword dbname=snort host=localhost

Obs.: Altere a senha mypassword para a que foi inserida na configuração do mysql.

Inicie o snort e barnyard2 com os seguintes comandos:

#/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 &
#/usr/local/bin/barnyard2 -q -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo \
-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config &

Onde eth0 será a interface a ser escutada. Se tudo estiver correto, os eventos serão inseridos na base de dados. Para verificar execute o seguinte comando:

# mysql -u root -p -D snort -e "select count(*) from event"

Obs.: Será solicitada a senha de root do mysql novamente.

Deverá ser retornado o número de alertas inseridos no banco de dados, como exibido abaixo. Caso retorne "0" revise a configuração do mysql e do barnyard.

+--------------+
| count(*) |
+--------------+
|             25 |
+--------------+
    Próxima página

Páginas do artigo
   1. Instalação do Snort e dependências
   2. Instalação do BASE e PulledPork
   3. Executando o Snort em modo IPS
Outros artigos deste autor

Instalação e configuração do Bacula com interface web (Bweb/Brestore)

Webacula - Instalação e Configuração no Ubuntu 10.04

Configurando o Asterisk com autenticação LDAP

Leitura recomendada

Elevação de privilégios locais

Bypass de firewall com tunelamento por DNS

Instalando Snort e Guardian no Slackware

(IN)segurança Digital

TinyOS

  
Comentários
[1] Comentário enviado por danniel-lara em 08/08/2011 - 11:11h

Parabens , pela matéria .
Assim que eu tiver tempo vou testar .

[2] Comentário enviado por removido em 09/08/2011 - 01:18h

Muito bom cara !

Abraço

[3] Comentário enviado por magalyc em 17/11/2011 - 18:13h

encontrei alguns erros durante a configuração de alguns arquivos, consegui resolver todos exceto o pulledpork.pl em que diz que " Error 500 when fetching https://www.snort.org/reg-rules/snortrules-snapshop-2905.tar.gz.md5"

acredito que a url não estaja mais disponível, pois tentei acessar manualmente e não consegui.
existe outra forma de solucionar este problema?

grata, Magaly Caregnato.

[4] Comentário enviado por fabriciorodrigo em 21/11/2011 - 10:17h

Magaly,

O nome do arquivo de regras está errado, é snapshot, e não snapshop!

Creio que seja esse o erro!

Fabrício.

[5] Comentário enviado por magalyc em 30/11/2011 - 12:03h

eu verifiquei aqui e não é esse o erro :(
também tentei acessar o site manualmente para ter acesso ao arquivo e mesmo assim no site do snort aparece um erro dizendo que a pagina não existe.

estou tentando executar o snort inline mas aparece um erro quando executo o comando
/usr/local/bin/snort -q --daq afpacket -u snort -g snort -c /etc/snort/snort.conf -i eth0:eth1 -Q &
/usr/local/bin/barnyard2 -q -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo \
-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config 2> /dev/nul &

já tentamei "nul" com um l e com dois, mas o comando da erro "ERROR: can't start DAQ (-1) - bind_interface: getsockopt: No such file or directory!
Fatal error, quitting.."


[3]- fim da execução com status 1 /usr/local/bin/snort -q --daq afpacket -u snort -c /etc/snort/snort.conf -i eth0:eth1 -Q"


pode parecer chato mas estou tentando implementar o snort na minha rede e precisava realmente da sua ajuda :)


grata, Magaly Caregnato.

[6] Comentário enviado por xvktr em 09/02/2012 - 14:21h

estou com o mesmo erro da Magaly, alguem sabe qual é o problema?

[7] Comentário enviado por jtdest em 02/12/2014 - 21:47h

Ola tenho uma duvida se pode me ajudar ,
Esse comando pra inicia snort IPS ele precisar que a brigde já esteja criada no sistema.
Agradeço muito ajuda cara ,estou implantando snort IPS na tede mais estou apanhando bastante .

[8] Comentário enviado por fabriciorodrigo em 05/12/2014 - 10:46h

Marxbrito,

Não é preciso criar a bridge, ao executar o comando ele cria automaticamente.
Esse tutorial é um pouco antigo, talvez exista algumas modificações de comandos.

[]'s

[9] Comentário enviado por fabriciorodrigo em 05/12/2014 - 10:48h


[7] Comentário enviado por marxbrito em 02/12/2014 - 21:47h:

Ola tenho uma duvida se pode me ajudar ,
Esse comando pra inicia snort IPS ele precisar que a brigde já esteja criada no sistema.
Agradeço muito ajuda cara ,estou implantando snort IPS na tede mais estou apanhando bastante .



Marxbrito,

Não é preciso criar a bridge, ao executar o comando ele cria automaticamente.
Esse tutorial é um pouco antigo, talvez exista algumas modificações de comandos.

[]'s

[10] Comentário enviado por MuriloAgottani em 13/06/2020 - 17:46h

Excelente artigo, mas não consegui passar do primeiro passo infelizmente, tenho uma atividade da faculdade para fazer onde necessito utilizar o Snort como IPS em conjunto com um firewall qualquer e um banco de dados qualquer, mas para mim que sou leigo em Linux, desta forma ta dificil rsrs.. tentarei utilizando o PFsense


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts