Filtrando intentos de acceso por ssh

Uno de los problemas mas grandes cuando uno utiliza ssh es la enorme cantidad de intentos de acceso, los cuales si bien no provienen de cantidades descomunales de direcciones IP, si son muchisimos intentos desde la misma PC, por lo que me decidi a bloquearlos usando un script de bash y cron

Code:
#!/bin/bash

#Este script monitorea los intentos fallidos de ingreso al sistema con ssh, al 2do agrega la ip al archivo /etc/hosts.deny

LOGFILE="/var/log/messages"
HOSTSDENY="/etc/hosts.deny"
BADCOUNT="2"

# busco los intentos fallidos en el log
grep sshd $LOGFILE |grep "Invalid user"| awk '{print $NF}'|sort|uniq -c|sort -n|sed "s/[[:space:]]*//" | while read i
do        
   # los cuento
   count=`echo $i | cut -d" " -f1`  
   # leo la IP        
   ip=`echo $i | cut -d" " -f2`        
   # verifico que no exista en hosts.deny        
   already=`grep $ip $HOSTSDENY | grep sshd`                
   # si la IP no existe la agrego        
   if [ -z "$already"  ]
      then     
         if [ "$count" -ge "$BADCOUNT" ] 
            then     
               echo "sshd: "$ip >> $HOSTSDENY 
         fi        
   fi
done

este script lo guardamos en /root/bin y como root lo agendamos en cron ejecutando el comando crontab -e y agregando la siguiente informacion:

 

5 * * * * /root/bin/sshlock && /usr/bin/touch /root/run.cron

 

luego de 2 dias con la PC encendida unas pocas horas nada mas se genero el siguiente archivo con las IP que intentaron ingresar:

 

Code:
[vampird@shinobu]:~$ cat /etc/hosts.deny
# /etc/hosts.deny
# See 'man tcpd' and 'man 5 hosts_access' as well as /etc/hosts.allow
# for a detailed description.

http-rman : ALL EXCEPT LOCAL

sshd: 118.142.91.168
sshd: 119.188.7.137
sshd: 140.113.151.65
sshd: 219.143.125.205
sshd: 192.168.1.6
sshd: 121.28.179.10
sshd: 190.21.109.153
sshd: 61.150.72.170
sshd: 203.130.216.49
sshd: 201.236.96.108
sshd: 96.44.189.182
sshd: 194.80.193.219
sshd: 218.241.161.186
sshd: 58.211.1.163
sshd: 151.22.71.2
sshd: 222.141.118.117
sshd: 67.202.108.140
sshd: 76.109.98.23
sshd: 218.63.241.157
sshd: 189.14.114.212
sshd: 218.240.12.194
sshd: 202.51.79.99
sshd: 114.207.245.86
sshd: 219.255.132.105
sshd: 190.129.67.20
sshd: 200.62.170.206
sshd: 184.106.231.121
sshd: 203.171.30.41
sshd: 202.29.18.53
sshd: 87.250.33.180
sshd: 202.107.233.163
sshd: 210.78.144.23
sshd: 212.102.225.32
sshd: 203.66.151.27
sshd: 190.208.31.117
sshd: 89.208.40.152
sshd: 201.6.148.10
[vampird@shinobu]:~$

tambien agrego que podemos usar el comando whois para ver algunos datos de esas direcciones IP, varias son registradas en China

=-=-=-=-=
Powered by Blogilo

Anuncios

Etiquetas: ,

3 comentarios to “Filtrando intentos de acceso por ssh”

  1. Sparda Says:

    Muy buen post. Estuve buscando algún script para no tener que partir de 0.
    Tengo un mini servidor ssh en mi casa y me interesaba.
    Muy bueno, el post y el blog. Saludos.

  2. mk Says:

    Excelente post. Con unos pequenos cambios funciono en ubuntu. Puedo referenciar tu codigo dentro de un articulo tecnico?

    • vampird Says:

      Me alegro que te funcionara, la verdad lo escribi como algo solo para mi PC, asi que no me preocupe por otras distros 😉 y claro que si puedes referenciarlo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: