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:
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 |
+--------------+