Detecta e bloqueia tentativa de acesso ao SSH

Publicado por Fábio Flores 18/09/2006

[ Hits: 10.586 ]

Download detecta_bloqueia_ssh.sh




Este script detecta tentativas de acesso por força bruta no SSH e gera regras de IPTables bloqueando o IP do host que está efetuando a tentativa de ataque, verificando antes se o IP do host atacante já foi bloqueado. Esse script foi criado pelo Mastah e aprimorado e adapatado por mim para uso em no meu firewall.

  



Esconder código-fonte

Antes de utilizar o script, verifique se o seu sistema possui o pacote gawk, caso não possua podera baixar o pacote em: ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.5.tar.gz

Define o arquivo do script como executável:

<b>:~$ su</b>
Como super usuário, utilize o comando:
<b>:~# chmod +x detecta_bloqueia_ssh.sh</b>
 
Caso queira deixar o script em modo automático, mova-o para
o diretório /etc/cron.hourly/,com o comando:

<b>:~# mv detecta_bloqueia_ssh.sh /etc/cron.hourly</b>

Lembre de deixar o arquivo como executável

Para alterar o tempo do crontab, edite o arquivo root que fica dentro de:
<b>:~# vi /var/spool/cron/crontabs/root </b>
e altere o tempo de acordo com o que achar mais conveniente

OBS: este script é utilizado na distribuição slackware, caso queira utilizar em outra distro, faça as alterações necessárias.

---------------------------------------------------------------------------------------------------------------
# Script para bloquear os corriqueiros bruteforce probes
# feitos para a porta do ssh. Pega as ultimas 60 tentativas ilegais na porta do ssh.
# Verifica se você ja bloqueou o "invasor" se voce quer adicionar na regra do iptables.
# Caso queira usar no crontab, e so mudar o valor da var $MODE pra "AUTO". 

MODE="AUTO"
#MODE="MANUAL"

if [ -f /var/log/messages ] ; then
   ips=$(cat -n /var/log/messages | tail -n 60 | grep -i Failed | grep -i sshd | awk -F" " {'print $14'})

   attempts=1

   for ip in $ips ; do
      
      lastip=$ip

      if [ "$lastip" == "$ip" ] ; then
         attempts=$(expr $attempts + 1)
         if [ $attempts -ge 5 ] ; then
            echo "Ataque de Força Bruta SSHD detectada de $ip"
            attempts=1
            lastip=""
            blocked=$(iptables -L INPUT | grep -i $ip | grep -i DROP)
                   if [ "$blocked" ] ; then
               echo "> IP Ja Bloqueado. Continuando com scan"
               echo " "
            else
               if [ $MODE == "MANUAL" ] ; then
                  echo "> Você quer adicionar este IP para INPUT DROP em IPTABLES regras? (s/n)"
                  read resp
                  if [ "$resp" == "s" ] ; then
                     iptables -A INPUT -s $ip -j DROP
                     echo "> IP $ip ADICIONADO PARA IPTABLES INPUT DROP ruleset"
                     echo " "
                  fi
               else
                  iptables -A INPUT -s $ip -j DROP
                  echo "> IP $ip ADICIONADAO TO IPTABLES INPUT DROP ruleset"
                  echo " "
               fi
            fi
         fi
      fi

   done

fi

#Fim do script
---------------------------------------------------------------------------------------------------------------
Bom uso
Abraços, colaboração de:
Fábio "Cyberwolf" Flores

Scripts recomendados

WallpaperID - papel de parede com IP e kernel do usuário

Substituir strings em arquivos ascII

Script de Inventário

pptd - Simples daemon para controle de conexões pptp.

Make Knoppix


  

Comentários
[1] Comentário enviado por cyberwolf em 20/07/2006 - 14:53h

Caros, na visualização do script ignore as tags html <b> e </b>..
Valeu


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts