Detector de Bruteforce no SSH e Bloqueio de IP Atacante

Publicado por Jan Seidl 26/10/2004

[ Hits: 12.137 ]

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 calcular a media área de cobertura de impressão (toner ou tinta)

Papel de parede - Mudança automática no Ubuntu/Debian

Convertendo rmvb para avi

Padronização de usuários em vários micros

cofigurar a rede passando por roteador


  

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