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: 50.699 ]

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


Executando o Snort em modo IPS



Tornando o Snort um IPS

Como IPS o snort atua de forma transparente na rede trabalhando como uma ponte(bridge). Todo o tráfego de rede passará por ele, que verificará o conteúdo dos pacotes, e no caso encontrar alguma ameaça à rede o pacote poderá ser descartado.

A topologia adequada para implantação do IPS é a que podemos observar na figura abaixo, onde o Snort fica posicionado anteposto ao firewall, verificando e filtrando todo o tráfego direcionado a rede a ser protegida.
Linux: Instalação e configuração do Snort Inline (modo IPS), Baynard2, Mysql e PulledPork no Debian Squeeze
   Para que o snort opere em modo IPS, o mesmo deve ser inicializado com os seguintes parâmetros:

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

Sendo que as interfaces eth0 e eth1 formarão a ponte. Para ter acesso ao computador via ssh (terminal) e http (acesso ao BASE) a máquina deverá possuir uma terceira interface para gerenciamento, pois não é atribuído IP à bridge, não permitindo acessar a mesma remotamente.

Não é aconselhado que a interface de gerenciamento seja ligada a rede interna, mas a uma rede secundária sem acesso a rede interna (ex:VLAN). Dessa forma, evita-se que em uma eventual invasão da máquina hospedeira do IPS, o invasor tenha acesso a rede interna através da interface de gerenciamento.

Script de inicialização para o Snort com Banyard

# vi /etc/init.d/snort-barn

Cole o conteúdo abaixo no arquivo.
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: snortbarn
# Required-Start: $remote_fs $syslog mysql
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start Snort and Barnyard
### END INIT INFO


. /lib/init/vars.sh
. /lib/lsb/init-functions

mysqld_get_param() {
/usr/sbin/mysqld --print-defaults \
| tr " " "\n" \
| grep -- "--$1" \
| tail -n 1 \
| cut -d= -f2
}

do_start()
{
        log_daemon_msg "Starting Snort and Barnyard" ""
        # Make sure mysql has finished starting
        ps_alive=0
        if [ $ps_alive -lt 1 ];
        then
                pidfile=`mysqld_get_param pid-file`
                if [ -f "$pidfile" ] && ps `cat $pidfile` >/dev/null 2>&1; then ps_alive=1; fi
                        sleep 1
        fi
        ifconfig eth0 0.0.0.0 promisc up
        ifconfig eth1 0.0.0.0 promisc up
        /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 &
        log_end_msg 0
        return 0
}

do_stop()
{
        log_daemon_msg "Stopping Snort and Barnyard" ""
        kill $(pidof snort) 2>> /dev/null 1>> /dev/null
        kill $(pidof barnyard2) 2>> /dev/null 1>> /dev/null
        log_end_msg 0
        return 0
}

case "$1" in
start)
        do_start
        ;;
stop)
        do_stop
        ;;
restart)
        do_stop
        do_start
        ;;
*)
        echo "Usage: snort-barn {start|stop|restart}" >&2
        exit 3
        ;;
esac
exit 0

Marque o arquivo como executável e adicione na inicialização através dos seguintes comandos:

# chmod +x /etc/init.d/snortbarn
# insserv -f -v snortbarn

Snort e barnyard serão inicializados automaticamente.

Considerações finais

As configurações apresentadas são básicas, para um melhor aproveitamento das ferramentas apresentadas, principalmente do Snort, recomendo a leitura do manual, que apesar de extenso é muito importante para o entendimento das configurações das ferramentas.

Bibliografia

Manual de usuários: https://www.snort.org/assets/166/snort_manual.pdf;
Snort 2.9.0.5 on Debian 6.0: https://www.snort.org/assets/167/deb_snort_howto.pdf;
Snort 2.9.0.5 on Ubuntu 10.04 LTS: https://www.snort.org/assets/158/011-snortinstallguide2905.pdf ;
Instalando e configurando Oinkmaster: https://lswiki.byu.edu/index.php/File:Installing_and_configuring_OinkMaster.pdf ;
Melhorando a segurança do Firewall com Bridges usando Snort_Inline no Debian Etch: http://www.vivaolinux.com.br/artigo/Melhorando-a-seguranca-do-Firewall-com-Bridges-usando-Snort_Inline-no-Debian-Etch;
Ferramentas de Respostas a Incidentes de Segurança: http://www.pop-pi.rnp.br/artigos/ferramentas_respostas_incidentes%20-%20eric.pdf.
Página anterior    

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

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

Configurando o Asterisk com autenticação LDAP

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

Leitura recomendada

Forense em Máquinas Virtuais

Introdução ao Anonimato na Web - Web Anonimity

VPN em Linux com OpenVPN

Segurança Física (Parte 2)

Bloqueio de repetidas tentativas de login ao seu Linux

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts