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

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

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

Configurando o Asterisk com autenticação LDAP

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

Leitura recomendada

Configuração "automágica" de servidor Linux PDC Samba

Fazendo sua conexão remota por SSH mais segura

Bloqueio de repetidas tentativas de login ao seu Linux

Introdução ao ModSecurity

Proxy reverso com ModSecurity no Debian Etch

  
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