
		kalimbor
		
		(usa Ubuntu)
		
		Enviado em 27/05/2010 - 16:36h 
		Olá caros amigos, espero que o titulo esteja correto e demonstrando minha necessidade.
Para aqueles que acharem útil, fique avontade para utilizar.
Abaixo segue o script que criei para bloquear um determinado IP, verificando no arquivo de log tentativas de acesso ao SSH.
---------------------------------------------------------------
#!/bin/bash
# Autor - Bruno Rigolon
# Administrador de Redes
# email - br.rigolon@gmail.com
# Pode ser utilizado e replicado para quaisquer meios
# desde que a fonte e autor sejam citados.
# Opções de Cores
vermelhoClaro="{TEXTO}33[1;31m"
corPadrao="{TEXTO}33[0m"
preto="{TEXTO}33[0;30m"
vermelho="{TEXTO}33[0;31m"
verde="{TEXTO}33[0;32m"
marrom="{TEXTO}33[0;33m"
azul="{TEXTO}33[0;34m"
purple="{TEXTO}33[0;35m"
cyan="{TEXTO}33[0;36m"
cinzaClaro="{TEXTO}33[0;37m"
pretoCinza="{TEXTO}33[1;30m"
verdeClaro="{TEXTO}33[1;32m"
amarelo="{TEXTO}33[1;33m"
azulClaro="{TEXTO}33[1;34m"
purpleClaro="{TEXTO}33[1;35m"
cyanClaro="{TEXTO}33[1;36m"
branco="{TEXTO}33[1;37m"
fim="{TEXTO}33[0m"
# Defini a cor que sera utilizada
COR_PADRAO=$vermelhoClaro
# Ler o arquivo de LOG atras das tentativas de Conexao SSH
# e armazena numa Variavel os IPS que tentaram LOGAr
LOG="/var/log/messages"
IPS=`cat /var/log/messages | grep Invalid | awk '{print $10}' | sort -u`
# Define o maximo de tentavias permitidas
MAX=10
# Arquivo onde vai armazenar os logs dos ipbloqueados via script
LOG_ARQ="Log_Bloqueados"
# Verifica se o arquivo de Log existe, se não existir ele vai ser criado;
if [ -e $LOG_ARQ ]
then
	echo "Arquivo existe"
	# Arquivo existe
else
	touch $LOG_ARQ
	chmod 777 $LOG_ARQ
fi
# Imprime na tela o Cabeçalho  para apresentação dos resultado
clear
echo "
IP          	N°/Conexoes	Ação
------------------------------------
"
for i in $IPS
do
	# Conta a tentivas de acesso de um determinado IP
	CONTADOR=`cat $LOG | grep "Invalid" | grep "$i" | wc -l`
		
	# Soma as tentativas de acesso para apresentar um total
	TOTAL=`expr $TOTAL + $CONTADOR`
	# Faz o comparativo de tentivas de conexão com o número
	# máximo permitido de tentativas, se execer o valor do
	# máximo, o IP sera bloqueado via IPTABLES.
	if [ $CONTADOR -ge $MAX ]
		then
			#Cor                 Acao              Fim da Cor
			ACAO=$COR_PADRAO; ACAO+="BLOQUEADO";ACAO+=$fim
					
			# Verificar se ja esta bloqueado, se encontrar 1 linha no log
			# quer dizer que ja esta bloqueado e não precisa logar e bloquear
			# no iptables de novo.
			VERIFICA=`cat $LOG_ARQ | grep $i | wc -l`
			if [ $VERIFICA -lt 1 ]
				then
				# Cria uma padrao no log apresentando:
				# O ip - Data que foi bloqueado e tentativas de conexão, exemplo:
				# 10.30.2.4 - 25/03/2010 - 298
				echo "$i	- `date +%d/%m/%Y` - $CONTADOR" >> Log_Bloqueados
				# Bloqueia no Iptables o Ip que esta fazendo o ataque
				iptables -I INPUT -s $i"/32" -j DROP
			fi
	else
		ACAO="PERMITIDO"
	fi
	# Imprime na tela o IP, tentativas de Acesso e a ação tomada
	echo -e "$i	 | $CONTADOR	 | $ACAO"
done
# Lista o rodape do Relatorio apresentando o total de tentivas
# de conexao via SSH
echo "
------------------------------------
TOTAL        	 | $TOTAL
"