Implementação de IDS com bloqueio automático de tentativas de invasão utilizando o Snort + Guardian em Debian Lenny com uma interface web para acompanhamento dos alertas gerados pelo IDS.
O Guardian gera automaticamente regras de firewall para bloquear os endereços de origem que estão atacando o nosso servidor. E ele dá suporte a vários tipos de firewall, ex.: iptables, ipchains, ipfwadm, ipfilter.
Mais informações a respeito dele podem ser obtidas em:
Agora vamos copiar os arquivos para o /usr/local/bin. Pode notar que quando estamos copiando os arquivos já estamos mudando o nome deles, isso é preciso pois no arquivo guardian.pl, que é o arquivo que executa as ações do Guardian, ele chama os arquivo de bloqueio e desbloqueio por guardian_block.sh e guardian_unblock.sh.
Vamos copiar o arquivo de gerenciamento do Guardian para o /usr/local/bin:
# cp guardian.pl /usr/local/bin/
Configurar as permissões dos nossos arquivos:
# chown root:root /usr/local/bin/guardian*
Configuração do Guardian:
# vim /etc/snort/guardian.conf
#Definir o endereço IP que será visto pela internet
HostIpAddr 200.200.200.200
#Definir a interface de rede que fica para a internet
Interface eth0
#Informar o ultimo octeto do endereço do Gateway
HostGatewayByte 1
#Arquivo de log#LogFile /var/log/guardian.log
LogFile /var/log/snort/guardian.log
#Arquivo aonde estão sendo gerados os alertas do Snort#AlertFile /var/adm/secure
AlertFile /var/log/snort/alert
#Lista de endereços de ip que serão ignorados pelo guardian
IgnoreFile /etc/guardian.ignore
#Lista de endereços de ip que serão monitorados pelo guardian#TargetFile /etc/guardian.target
TargetFile /etc/snort/guardian.target
#tempo em segundos para deixar um endereço ip bloqueado
TimeLimit 86400
Agora vamos criar os arquivos adicionais, necessários para o Guardian funcionar corretamente.
Neste arquivo devem ser definidos os endereços IPs das máquinas que devem ser ignoradas.
# touch /etc/snort/guardian.ignore
Criar e cadastrar os endereços IPs que devem ser monitorados.
# vim /etc/snort/guardian.target
200.200.200.200
Também precisamos criar o arquivo de log do Guardian.
# touch /var/log/snort/guardian.log
Agora só precisamos de um arquivo de inicialização para gerenciar o Guardian.
stop()
{
ps aux | grep 'guardian.pl *-c' 2>&1 > /dev/null
if [ $? -eq 0 ];
then
kill `ps aux | grep 'guardian.pl *-c' | awk '{print $2}'`
else
echo "Guardian is not running ....."
fi
}
status()
{
ps aux | grep 'guardian.pl *-c' 2>&1 > /dev/null
if [ $? -eq 0 ];
then
echo "Guardian is Running ....."
else
echo "Guardian is not Running ...."
fi
}
# /etc/init.d/guardian.sh stop
# /etc/init.d/guardian.sh start
OS shows Linux
My ip address and interface are: 200.200.200.200 eth0
Loaded 0 addresses from /etc/snort/guardian.ignore
Loaded 1 addresses from /etc/snort/guardian.target
Becoming a daemon..
[2] Comentário enviado por leandrojpg em 16/03/2010 - 11:24h
Eu sou suspeito para falar, pois tenho seguido os tutoriais do douglas a algum tempo e asseguro que são bons demais.
Esse ai do Snort eu implementei, e funcioba bem legal, mas tem que quer fazer linha a linha,importante ler o material para entender bem o snort.
[4] Comentário enviado por macvitor em 10/08/2010 - 11:44h
Como podemos saber se o Snort está rodando e funcionando perfeitamente? Em http://localhost/snort está tudo zerado(TCP, UDP, etc.) e ao usar o comando ps auwx |grep snort não retorna nada.
[8] Comentário enviado por bvcoelho em 10/11/2010 - 10:31h
Estou com o mesmo problema do m1n3ro, quando eu entro no site "http://ip_servidor/snort " em vez de entrar na página de configuração ele manda salvar a pasta do snort.
Todos os outros passos foram seguidos sem nenhum erro. Sera que alguem pode da uma luz?
[11] Comentário enviado por fabriciorodrigo em 25/02/2011 - 16:51h
Estou querendo implementar um ips .. porém, gostaria de saber se existem outros além do snort/guardian ...
achei o guardian descontinuado ... (pode ter sido impressão)
Pesquisando encontrei o HLBR ... pórem não consegui definir qual a melhor solução ...
[12] Comentário enviado por douglas_dksh em 25/02/2011 - 17:06h
OpenVas, Fail2ban dai vc tem que ver qual vai se adptar melhor ao seu ambiente.
O guardian so faz os bloqueios.
o que vc pode fazer é ler os arquivos de log do snort com algum script e ir bloqueando ou desbloqueando ips e por ai vai.
[15] Comentário enviado por douglas_dksh em 26/05/2011 - 17:25h
Cara quando acontece a primeira situação é quando o apache ainda não encontrou o módulo do php, como a página do base é em php ele te da a opção de abrir ou salvar o arquivo por que o apache ainda não consegue enterpretar o php.
Então para resolver isso só reinicie o seu apache, e se continuar tente abrir em outro navegador.
O segundo erro a resposta esta na saída dele o per/mail já esta instalado, por isso que apareceu a mensagem.
To colocando os materiais agora atualizados no meu site www.gmsecurity.com.br dai la vou conseguir atualizar quando precisar algo.
[17] Comentário enviado por renatotec em 01/07/2011 - 10:55h
Bom dia Douglas...parabéns pelo TUTO!
Estou com uma dificuldade, tá tudo funcionando, só que o snort não está mais gravando informações no /var/log/snort/alert, grava apenas na base de dados, sendo assim o guardin não funciona.
[21] Comentário enviado por berneira em 17/10/2012 - 13:37h
Estou com esse problema ao Abrir o Base
Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for 'BRT/-3.0/no DST' instead in /var/www/snort/base_main.php on line 271
Queried on : Wed October 17, 2012 13:36:09
Database: snort@localhost (Schema Version: 107)
Time Window: no alerts detected
[23] Comentário enviado por jmsb em 19/06/2015 - 18:58h
ola , vc poderia ajudar com o guardian , ele não esta executando da essa mensagem, com isso não gera as logs
OS shows Linux
Warning! Logfile is not writeable! Engaging debug mode, output to STDOUT
eth3 address and interface are: 192.168.2.201
Loaded 1 addresses from /etc/guardian.ignore
Running in debug mode..