Detector de Bruteforce no SSH e Bloqueio de IP Atacante

Publicado por Jan Seidl 26/10/2004

[ Hits: 12.167 ]

Download dtct




Bom, estava recebendo muitas tentativas de conexao no meu ssh com diversos users diferentes... Vi logo... ataque bruteforce....

Olhando algumas listas que frequento como a da SecurityFocus (bugtraq) e umas outras, vi que está rolando por ai um script que faz isso com um range de ips, usando wordlist e dictionary... enfim... Resolvi fazer algo para parar com as mensagens na minha tela... é bem simples, claro q se eu estivesse de snort seria melhor.. mas vamos la.

  



Esconder código-fonte

#!/bin/bash

# --------+ CRIADO POR MASTAH +---------
# Para toda comunidade linux do brasil e
# do mundo todo... grande abraco para a
# galera da MCury, VivaOLinux e para o
# Grande kopke que agora é papai.

# ------------>>>>> PARABENS KOPKE!!!!!!

# Shellscript criado para bloquear os corriqueiros bruteforce probes
# feitos para a porta do ssh. Pega as ultimas 20 tentativas ilegais na porta do ssh.

# Verifica se voce já bloqueou o mané se voce quer adicionar na regra do iptables.
# Caso queira usar no crontab, é so mudar o valor da var $MODE pra "AUTO"... 

# Abracos, Mastah

MODE="AUTO"
#MODE="MANUAL"

if [ -f /var/log/messages ] ; then
   ips=$(cat -n /var/log/messages | tail -n 20 | grep -i Illegal | 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

Script para rotacionar logs dos sites no Apache

Criando pdf para impressão de livros

Instalar emuladores no Fedora 22

Album de fotografias v1.1

Teste compatativo entre discos e/ou partições


  

Comentários
[1] Comentário enviado por neriberto em 26/10/2004 - 17:21h

só uma pergunta! se ao invés de colocarmos um regras do iptables nós utilizassemos o hosts.deny não seria melhor ? por exemplo se for preciso reiniciar a máquina não perderiamos os ip's dos possíveis atacantes, pelo iptables da forma como está perderiamos isto.

Enfim tá legal isto, eu gostei da idéia.

[2] Comentário enviado por ace rush em 26/10/2004 - 17:36h

É uma boa ideia neri...

Realmente não havia pensado nisso, ora que meu pc mesmo sendo um desktop fica ligado direto baixando mp3 ehhehehe....

Outra seria adicionar a linha para algum script de firewall existente na maquina do usuario... Este script foi mais um quebra galho aqui pra mim que resolvi compartilhar com a comunidade. Quem sabe se fizer uma nova versao.....

Enfim, cada um agora adapte as suas necessidades ;)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts