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
"