Script contra ataques de Brutal Force por SSH.

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

[ Hits: 7.584 ]

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

Adicionar usuario

Shell Script Avançado

Manutenção básica em partições Linux

Calculadora Shell com Yad

Faq Fedora 10


  

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