bloqfor

Publicado por Eduardo Vieira Mendes 08/05/2008

[ Hits: 4.846 ]

Download bloqfor.sh




Script para bloqueio automático de IP por tentativa de ataque Brute Force (força bruta).

** Identifica o IP atacante.

** Bloqueia automaticamente o mesmo.

**Envia relatório sobre o IP atacante.

  



Esconder código-fonte

#!/bin/sh
#################################################################
# Script para localizar IP da tentativa de acesso por brute force
# ao servidor SSH
# Criado por:
# Eduardo Vieira Mendes
# eduardovmendes@gmail.com
# LUS: 298813
# 27/03/2008
#################################################################

# Variáveis
log="/var/log/secure"
bloq="/var/log/blocfor.log"
linhas=`cat $bloq | wc -l`
d=`date +%e`
tmp="/tmp"
#Mude para o e-mail que deseja receber os relatórios
email="suporte@localhost.com.br"

# Mude aqui o comando para reiniciar seu firewall
firewall="/etc/init.d/iptables restart"

#Pega os acessos ilegais e joga no arquivo temporário
exec 3<&0
exec 0<$log
while read i; do
    campos=`echo $i | wc -w`
    echo $i | grep Illegal | grep $d | cut -d" " -f $campos >> /tmp/blocfor.tmp 2> /dev/null
done
exec 0<&3

#Pega apenas o IP que mais tentou
quant=`cat /tmp/blocfor.tmp | sort | uniq -c | sort -nr | head -1 | cut -f 1`

#Sistema
#Se o Ip tentou conectar mais de 8 vezes significa que realmente e um ataque por brute force
#Você pode mudar este número pois depende se você tem aquele funcionário "esperto" que consegue errar
#o nome de usuário dele mais de 8 vezes! :D
if [[ -n $quant ]] && [[ $quant -ge 8 ]]
then
    ip=`cat /tmp/blocfor.tmp | sort | uniq | sort -nr | head -1`
    tip=1$ip
    rm -rf /tmp/blocfor.tmp
    rm -rf $tmp/blocfor.sh.*
    if [ $tip <> 1 ]
    then
      echo $ip >> $bloq
      sort $bloq | uniq > $tmp/blocfor.sh.$$
      rm -rf $bloq
      mv $tmp/blocfor.sh.$$ $bloq
      linhas2=`cat $bloq | wc -l`
      if [ $linhas -ne $linhas2 ] # Se o valor de ips aumentou, entao o firewall deve ser restartado
      then
        $firewall
        echo "Acesso indevido ao SSH pelo ip: $ip - $quant tentativas - Automaticamente bloqueado" | mail -s "Acesso indevido" $email
      fi
    fi

# Descomente as linhas abaixo para deixar um echo toda vez que o script rodar e não encontrar
# nenhuma ataque por brute force. Não recomendo pois vamos colocar o script para rodar
# de hora em hora através do agendador CRON.
# Se descomentar estas linhas você vai receber 24 e-mails por dia informando se houve ou não
# tentativa de invasão.

#else
#    echo "Nenhum acesso por force brute ao sistema hoje!"
fi

exit 0

# FIM DO SCRIPT

#=======================================================================
# IPTABLES
# Adicione as seguintes linhas ao final do seu firewall
# Este exemplo é para o Iptables - Modifique conforme suas necessidades!

#for i in `cat /var/log/blocfor.log`
#do
#        echo "Bloqueando IP por tentativa de brute force $i"
#        $IPTABLES -A INPUT -s $i -j DROP
#done

#=======================================================================
# CRON
# Adicione a seguinte linha ao seu /etc/crontab

#00 * * * * root /usr/local/bin/locfor.sh

Scripts recomendados

Renomeia diretorio,subdiretorio e arquivos de maiuscula > minuscula

E-mails através de um servidor remoto

Bloqueando o acesso à internet

Shell Script / Perl para sincronizar base de usuários do AD com o Zimbra

Tagtools - Slackware


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts