Pular para o conteúdo

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.
Fabrício Rodrigo fabriciorodrigo
Hits: 56.119 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

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 |
+--------------+
   1. Instalação do Snort e dependências
   2. Instalação do BASE e PulledPork
   3. Executando o Snort em modo IPS

Configurando o Asterisk com autenticação LDAP

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

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

Dark Web e Malwares na internet, quanto custa?

5 comandos que ninguém nunca deve executar no Linux

Protegendo o ESB: Conceitos e técnicas de segurança para empresas de serviços web críticos

Implementação de um sistema de arquivos criptografado transparente ao usuário

Protegendo seu servidor de e-mail Postfix

#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

Entre na sua conta para comentar.