Script contra ataques de Brutal Force por SSH.

Publicado por Silvio Soares da Silva Junior 01/10/2005

[ Hits: 7.564 ]

Download block_ssh




Este script bloqueia os ips que tentaram invadir seu servidor por SSH

  



Esconder código-fonte

#!/bin/bash
#Script Criado por Mastah
#Alterado por Silvio Junior




 
  MODE="AUTO"
  #MODE="MANUAL"
  
  if [ -f /var/log/messages ] ; then
    ips=$(cat -n /var/log/messages | grep -P "(Invalid)" | grep -i sshd | awk -F" " '{ print $11}')
    attempts=1
    for ip in $ips ; do
       lastip=$ip
       if [ "$lastip" == "$ip" ] ; then
          attempts=$(expr $attempts + 1)
          if [ $attempts -ge 5 ] ; then
             echo "Brute force SSHD attack detected from $ip"
             attempts=1
             lastip=""
             blocked=$(iptables -L INPUT | grep -i $ip | grep -i DROP)
                    if [ "$blocked" ] ; then
                echo "> Ip Already Blocked. Continuing with scan"
                echo " "
             else
                if [ $MODE == "MANUAL" ] ; then
                   echo "> Do You Want to add this IP to INPUT DROP in IPTABLES rules? (y/n)"
                   read resp
                   if [ "$resp" == "y" ] ; then
                      iptables -A INPUT -s $ip -j DROP
                      echo "> IP $ip ADDED TO IPTABLES INPUT DROP ruleset"
                      echo " "
                   fi
                else
                   iptables -A INPUT -s $ip -j DROP
                   echo "> IP $ip ADDED TO IPTABLES INPUT DROP ruleset"
                   echo " "
                fi
             fi
          fi
       fi
    done
  fi

Scripts recomendados

Limpando cache do Squid (Baseado em Debian)

Linkswitch (The POG)

Copia arquivos distribuidos em pastas diferentes para uma única pasta.

Conversor de logs do svn para rss

Firewall simples, com opções de redirecionamento


  

Comentários
[1] Comentário enviado por Nick em 15/10/2007 - 08:43h

grep: The -P option is not supported

[2] Comentário enviado por letifer em 06/10/2008 - 11:38h

Muito legal seu script Sílvio. Obrigado.

Nick, você precisa compilar seu grep com perl-regexp para usar a opção -P, mas neste código não faz muita diferença.

[3] Comentário enviado por andremedeiross em 07/12/2009 - 10:23h

muito bom seu script

mas existe um software opensource que já faz isso e determina o tempo que fica bloqueado, além disso ele funciona não somente para ssh mas para outros tipos de login tbm como por exemplo ftp, http, e outros pode ser instalado por apt-get install fail2ban, e se configura ele em
/etc/fail2ban.conf
/etc/jail.conf
o jail.conf determina os numeros maximos de tentativas de login, quais as portas dos determinados serviços e o tempo que o ip fica rejeitado, isso é útil pois vai que seu teclado que estava ruim e o servidor bloqueou seu acesso vc simplesmente esperaria o tempo acabar, claro que dependendo do tempo seria melhor ir até o servidor e resolver pois se colocar para aguardar dias aff rssss eu sempre uso e funciona


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts