Muitos howto's que existem por ai não abordam uma ferramenta muito útil para ser aliada ao snort, o GUARDIAN.
Não adianta apenas instalar e deixar eles rodando para se sentir um pouco mais seguro, se eles não forem corretamente configurados certamente irão trazer mais dor de cabeça do que auxiliar a administração do servidor. Uma das principais dores de cabeça que o guardian gera são os alertas "falso positivos", ou seja, ele pode acabar bloqueando o que não deve!! :( Imagine você em sua casa arrumando um problema em um servidor a 200km de distância num sábado as 23:00 da noite, você abre uma conexão ssh com seu servidor, acerta os detalhes em seguida abre o ftp e começa a fazer alguns backups, de repente sua conexão cai e você não consegue se conectar denovo!!! Então pega seu carro vai até o local e descobre que você foi bloqueado pelo seu próprio guardian!!!! Afim de erradicar esse problema escrevi esse artigo, mas agora chega de conversa mole e vamos ao que interessa!
Ajustes no SNORT
Antes de ajustarmos o guardian precisamos configurar o SNORT corretamente, pois sem ele, o GUARDIAN não é nada.
# Por padrão o SNORT cria 2 arquivos de log, são eles: /var/log/snort/alert
# /var/log/snort/scan
Esses logs não são suficientes para informar ao GUARDIAN quem deve ser bloqueado, então iremos adicionar um terceiro log, edite o /etc/snort/snort.conf e procure pela linha:
#preprocessor portscan: $HOME_NET 4 3 portscan.log
agora descomente a linha retirando o "#", altere a variável $HOME_NET para $EXTERNAL_NET, a linha deve ficar assim:
preprocessor portscan: $EXTERNAL_NET 4 3 portscan.log
O número 4 quer dizer a quantidade de portas, o 3 quer dizer quanto tempo, ou seja, se alguem acessar 4 portas seguidas em menos de 3 segundos isso será encarado como um portscan!!!(Altere como achar melhor)
Agora para diminuir um pouco mais a quantidade de alertas falsos procure pela linha:
#preprocessor portscan-ignorehosts: 0.0.0.0
Novamente descomente a linha de altere o 0.0.0.0 pelo endereço IP do seu servidor
Terminados os ajustes deve-se reinicar o snort.
Ajustes no GUARDIAN
Edite o arquivo /etc/guardian.conf e procure pela linha:
AlertFile /var/log/snort/alert
e altere para
AlertFile /var/log/snort/portscan.log
Com isso o risco de guardian bloquear endereços por engano praticamente se anula, mas só para ter certeza que não haverão mais problemas edite o arquivo /etc/guardian.ignore e coloque TODOS os ips que nunca devem ser bloqueados independentemente do que aconteça.
Agora vamos começar a incrementar o GUARDIAN, um ponto fraco dele é que quando um IP é bloqueado, você somente irá saber disso de 2 maneiras:
# Ou um cliente vai reclamar
# Ou se você ficar analisando os logs 24 horas por dia
Afim de acabar com esse problema eu resolvi alterar o script do guardian que é responsável pelo bloqueio, no meu caso ele fica em: /usr/local/bin/guardian_block.sh, inicialmente ele é assim:
source=$1
interface=$2
/usr/sbin/iptables -I INPUT -s $source -i $interface -j DROP
Eu deixei o meu assim:
source=$1
interface=$2
[email protected]
log=/tmp/tmp_$1
mail_cmd=/bin/mail
/usr/sbin/iptables -I INPUT -s $source -i $interface -j DROP
echo "O IP: $1 foi bloqueado" > $log
$mail_cmd -s "ALERTA" $admin < $log
rm -f $log
Com isso cada vez que algum IP for bloqueado,o script também irá me enviar um email avisando.
Assim fica mais fácil administrar os logs e não se corre o risco de ser bloqueado a toa.! :)