18 agosto 2008

Brute-Force - SCRIPT para bloquear ataques de brute-force

Caros Leitores,

É comum hoje em dia, acharmos em nossos logs, várias tentativas de ataques de em um servidor SSH. As ferramentas e dicionários utilizados estão cada vez mais aprimorados. A idéia deste tutorial á fornecer um passo de como implementar um script que verifica uma tentativa de ataque brute force de SSH e imediatamente bloquei o host de origem que estava tentando fazer o ataque.

Neste script estou me baseado na distribuição SlackWare 11.0. Mas poderar ser usado em qualquer distribuição, mas será necessário a alteração do endereço do arquivo onde esta gravado o LOG com os referidos ataques.

O ideal para companhamento um pouco mais eficaz, você implementar o LOGCHECK - http://logcheck.org/. Esta ferramenta tem a função de enviar via e-mail as ultimas alterações feitas no LOG, de acordo com as datas e horários estipuladas pelo usuário.

Vou postar o script e detalharei os seus passo.

#!/bin/sh
# Desenvolvido por José Carlos Oliveira
# Testado no slackware 9, 10, 11.
#
####

##Variáveis para gravação de arquivos

tempip="/usr/local/scripts/bruteips/bloqueia-ips-`date +%d%m%Y`.tmp";
blockip="/usr/local/scripts/bruteips/bloqueia-ips-`date +%d%m%Y`";
script="/usr/local/scripts/bruteips/boqueia-`date +%d%m%Y`";

# separa todos os ips que tentaram bruteforce utilizando os usuarios guest/test/admin/user
#echo -n "Digite o nome do LOG (exemplo: messages): "
#read

cat -n /var/log/messages | grep -P "(guest|test|admin|user)" | grep -i sshd | awk -F" " '{ print $11}' > $tempip;

# faz backup da lista de ips bloqueados
if [ -f $blockip ]; then
cat $blockip >> $tempip;
fi

# remove ips duplicados
sort -u $tempip | grep -v ^$ | grep -v user > $blockip;

# gera um script que bloqueia o ip através do iptables
ips=$(cat $blockip);

#echo "iptables -F INPUT" > $script;
for ip in $ips ; do
blocked=("iptables -A INPUT -s $ip -j DROP")
echo $blocked >> $script
done


#Torna o script executável

chmod +x $script

#Executa Script
$script

#Apaga os arquivos temporários
rm $tempip

Simples, não.... Basta apenas coloca-lo no CRON <Clique aqui para ver sobre o comando CRON> para ser executado no momento em que desejar. Eu particularmente, executo ele de 4 em 4 horas. A invasão não tem hora marcada para acontecer. rs*

Além do script acima, é fundamental um sistema bem configurado. Uma configuração com números máximo de tentativas, por exemplo. Ou seja, configure seu servidor para bloquear contas depois do terceiro login sem sucesso.

Este script pode sofrer melhorias. Coloque a ideia em pratica e compartilhe, para que possamos aperfeiçoa-lo. Conto com vocês...

Em um próximo post estarei falando sobre um programinha de brute force. Caso você tenha interesse em saber um pouco mais, acesse www.cygwin.com ou www.thc.org/thc-hydra.

Até o próximo post....Abraços

Postar um comentário