Bloqueando ataque de força bruta em ssh através de script bash

Publicado por Ricardo Lino Olonca 25/07/2007

[ Hits: 10.325 ]

Homepage: ricardoolonca.blogspot.com.br

Download ids.sh




Como cuido de vários servidores em vários lugares, uso ssh para me conectar remotamente.

O problema é que, através de um ataque de força bruta, alguém pode invadir meus servidores. Uma forma de evitar isso é com um ids, mas também pode ser feito de uma forma simples através um script bash rodando via cron.

Esse script monitora os arquivos de log e bloqueia o ip de origem em um ataque de força bruta na porta ssh.

  



Esconder código-fonte

#!/bin/bash
# IDS feito por Ricardo Lino Olonca em 22/05/2007
# Versao 0

# Variaveis
log="/var/log/auth.log"
bloqueados="/var/log/ids.log"
linhas=`cat $bloqueados | wc -l` # Quantos ips ja foram bloqueados
h=`date +%H` # Hora`
d=`date +%e` # Dia`

# Aqui eu listo todos os ips que tentaram se conectar ao meu servidor. 
# O "head -1" pega apenas o que mais tentou. Mude esse valor conforme necessário
ip=`cat $log|grep "$d $h"|grep Illegal|cut -d: -f7|sort |uniq -c|sort -nr|awk '{print $2}' |head -1`

tip=1$ip
tmp="/tmp"
syslog="/var/log/syslog"
firewall="/etc/init.d/firewall" 

# Sistema 
rm -rf $tmp/ids.sh.*
if [ $tip <> 1 ] # Só entra no "if" se alguém tentou conectar meu servidor na última hora
then
   echo $ip >> $bloqueados
   sort $bloqueados | uniq > $tmp/ids.sh.$$
   rm -rf $bloqueados
   mv $tmp/ids.sh.$$ $bloqueados
   linhas2=`cat $bloqueados | wc -l`
   if [ $linhas -ne $linhas2 ] # Se o valor de ips aumentou, então o firewall deve ser restartado
   then
      $firewall
      echo "`date` - Firewall restartado pelo ids - ip $ip" >> $syslog
   fi
fi

# No script do firewall deve ter a seguinte linha (sem as "#", lógico)

# for i in `cat /var/log/ids.log`
# do
#    iptables -A INPUT -s $i -j DROP
# done

Scripts recomendados

montagem da pen drive

Instalação de impressora via ssh

rc.hdparm

firewall

SImples calculadora em Shell


  

Comentários
[1] Comentário enviado por chmod000 em 27/07/2007 - 07:33h

interessante a sua idéia, e o script está bem escrito também.

Mas acho que é mais simples utilizar o módulo recent do iptables.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts