Spawnzao

Instalando o Snort (NIDS) no CentOS 7

Por em 09/08/2014 - 5,844 views

Hoje nenhum administrador de redes pode abrir mão da segurança da rede que administra, pensando nisso fiz esse tutorial explicando passo a passo a instalação e configuração do Snort um NIDS (network intrusion detection system) e em NIPS (network intrusion prevention system).

No nosso tutorial vamos supor o seguinte cenário:

snort_mirror

Na imagem acima, vemos que é feito um mirror (espelho) de 3 portas importantes, 1 do firewall (interface interna) e 2 do cluster do XenServer (interface interna), no qual reside todos os servidores virtuais, consequentemente todo tráfego é direcionado para a segunda interface de rede do nosso servidor, no qual eth0 é a interface conectada a rede local e a eth1 é a interface que vai receber o tráfego a ser analisado. A interface eth1, que vai receber o tráfego a ser analisado, não terá configuração ip, a fim de evitar a mistura de tráfegos.

Agora vamos partir para a Instalação do CentOS 7.

Na instalação do CentOS 7 escolher modo BASIC SERVER, pois a versão básica vem sem muitos aplicativos, como por exemplo: vim, ifconfig, dentre outros, dificultando o nosso trabalho.

Agora vamos colocar a mão na massa e instalar as dependências para o snort:


yum install -y rpm-build wget gcc flex bison zlib zlib-devel libdnet libdnet-devel libpcap libpcap-devel pcre pcre-devel tcpdump mysql mysql-server mysql-devel git libtool curl

Vamos baixar os pacotes do daq e o snort, entretanto estamos baixando o rpm com o source e não com o snort compilado, por causa de incompatibilidade com dependências.


wget https://www.snort.org/downloads/snort/daq-2.0.2-1.centos6.x86_64.rpm
wget https://www.snort.org/downloads/snort/snort-2.9.6.2-1.src.rpm

Instalar os pacotes


rpm -ivh daq-2.0.2-1.centos6.x86_64.rpm
rpm -ivh snort-2.9.6.2-1.src.rpm

Agora vamos compilar o nosso snort.


cd rpmbuild/SPECS/
rpmbuild -bb snort.spec

Agora vamos instalar o snort que acabamos de compilar.


cd ../RPMS/x86_64/
rpm -Uvh snort-2.9.6.2-1.x86_64.rpm
cd /root

Agora vamos adicionar as rules que possuem as regras do Snort, entretanto podemos utilizar somente as regras da comunidade ou utilizar as regras de usuários registrados do Snort (os snapshots), lembrando que essas regras da comunidade dão conflito com as regras do snort-snapshot.

Caso queiram baixar as regras da comunidade segue os comandos.


wget https://s3.amazonaws.com/snort-org/www/rules/community/community-rules.tar.gz
tar xvf community-rules.tar.gz -C /etc/snort/rules

Logar no site do Snort.org com o seu usuário e pegar o seu oinkcode.


wget https://www.snort.org/rules/snortrules-snapshot-2962.tar.gz?oinkcode=xxxxxxxxxxxx
mv snortrules-snapshot-2962.tar.gz?oinkcode=xxxxxxxxxxxx snortrules-snapshot-2962.tar.gz
tar xvf snortrules-snapshot-2962.tar.gz -C /etc/snort

Vamos configurar mais algumas dependências do Snort.


mkdir /usr/local/lib/snort_dynamicrules/
cp /etc/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9.6.2/*.so /usr/local/lib/snort_dynamicrules/
cp /etc/snort/etc/sid-msg.map /etc/snort/

Fazer as seguintes alterações no arquivo /etc/snort/snort.conf

# Path to your rules files (this can be a relative path)
# Note for Windows users: You are advised to make this an absolute path,
# such as: c:\snort\rules
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

# If you are using reputation preprocessor set these
var WHITE_LIST_PATH rules
var BLACK_LIST_PATH rules

# unified2
# Recommended for most installs
# output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types
output unified2: filename alert.log, limit 128

# decoder and preprocessor event rules
include $PREPROC_RULE_PATH/preprocessor.rules
include $PREPROC_RULE_PATH/decoder.rules
include $PREPROC_RULE_PATH/sensitive-data.rules

# dynamic library rules
include $SO_RULE_PATH/bad-traffic.rules
include $SO_RULE_PATH/browser-ie.rules
include $SO_RULE_PATH/chat.rules
include $SO_RULE_PATH/dos.rules
include $SO_RULE_PATH/exploit.rules
include $SO_RULE_PATH/file-flash.rules
include $SO_RULE_PATH/icmp.rules
include $SO_RULE_PATH/imap.rules
include $SO_RULE_PATH/misc.rules
include $SO_RULE_PATH/multimedia.rules
include $SO_RULE_PATH/netbios.rules
include $SO_RULE_PATH/nntp.rules
include $SO_RULE_PATH/p2p.rules
include $SO_RULE_PATH/smtp.rules
include $SO_RULE_PATH/snmp.rules
include $SO_RULE_PATH/specific-threats.rules
include $SO_RULE_PATH/web-activex.rules
include $SO_RULE_PATH/web-client.rules
include $SO_RULE_PATH/web-iis.rules
include $SO_RULE_PATH/web-misc.rules

Configurar a interface que vai receber o tráfego e ficar no modo promiscuo, no arquivo /etc/sysconfig/snort:

INTERFACE=eth1

Agora iniciar o snort:


/etc/init.d/snort start

Para verificar se o snort já capturou alguma regra, executar o comando:


tail -f /var/log/snort/alert

Até o próximo.

:, , , , , , , , , , ,
4 comments for this entry:
  1. Instalando o Barnyard2 (Snort) no CentOS 7 – Continuação - Spawnzao

    […] continuidade ao artigo anterior (Instalando o Snort (NIDS) no CentOS 7), vamos agora instalar o Barnyard2, responsável por vigiar a inclusão de novos registros no […]

  2. juju

    Hi, can you help me? i have install snort and running well on centos 7, but the output file is not unified, i have check with u2spewfoo,

    i have read https://github.com/firnsy/barnyard2/issues/118
    the issue is same with me, i have follow the instructions too, but the file still not unified

    even the output filename always snort.log although changed to merged.log

  3. Spawnzao

    Follows some light for you to solve your problem:
    1 – Does your network interface (eth0) is receiving data to be analyzed?
    2 – The timestamp (1408654225) in waldo file is correct? That makes all the difference.
    3 – You’ve seen the file (snort.log or merge.log) contains some event? Check with tail -f.

  4. juju

    Hi,
    1. Yes, i have test with console option (-A console), works well
    2. Yes
    3. i found snort.log but with tcpdump format, not unified, i check with file snort.logxxxxx and using u2spewfoo

    I’ve been stuck one month just for unified2

Leave a Reply

Licença

Creative Commons License

Techs

 Blog Tool, Publishing Platform, and CMS
Powered by PHP
Powered by MySQL
Mozilla Foundation
hacker emblem
Mozilla Foundation
Open Source Initiative
Creative Commons