bloqfor

Publicado por Eduardo Vieira Mendes 08/05/2008

[ Hits: 4.847 ]

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

LeTRA - cálculo de valores do arquivo de venda do PDV

httpd-rsync

Backup completo e automatizado da base de dados do ZODB

Administração de Usuários

Firewall do mikrotik, limitando icmp (ping)


  

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