Bloquear IP’s via SSH

    Previo a tener un sistema de bloqueo automático basado en Fail2Ban con IPset, se puede complementar con un proceso (también) automático para detectar intentos de acceso y en consecuencia, bloquear:

    Apr 17 15:32:09 node01 sshd[316028]: Failed password for invalid user zabbix from 138.68.150.255 port 40918 ssh2
    Apr 17 15:32:53 node01 sshd[316035]: Failed password for invalid user git from 138.68.150.255 port 33000 ssh2
    Apr 17 15:33:34 node01 sshd[316042]: Failed password for invalid user apache from 138.68.150.255 port 38994 ssh2
    Apr 17 15:34:15 node01 sshd[316050]: Failed password for invalid user git from 138.68.150.255 port 39646 ssh2
    Apr 17 15:34:54 node01 sshd[316057]: Failed password for invalid user git from 138.68.150.255 port 57886 ssh2
    Apr 17 15:35:36 node01 sshd[316067]: Failed password for invalid user test from 138.68.150.255 port 50442 ssh2
    

    Vamos a crear un script con el siguiente contenido:

    #!/bin/bash
    
    for IP in `grep "Failed password for " /var/log/secure | tail -50 | grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}" | sort | uniq`;do
    if grep -q ${IP} /etc/hosts.deny;then
    	echo "FILTER ${IP}"
    else
    	echo "# `date "+%d/%m/%Y %H:%M:%S"`" >> /etc/hosts.deny
    	echo "sshd: ${IP}" >> /etc/hosts.deny
    	echo "BLOCK ${IP}"
    	/sbin/service sshd reload > /dev/null 
    fi
    done
    

    y por ejemplo, cada 15 minutos lo ejecutaremos:

    */15 * * * * /scripts/SSHD_BLOCK.sh
    

    No es esta la mejor opción, porque de forma recurrente aparecerán mas IP’s y será de difícil gestión, pero para minimizar intentos de acceso si que nos puede servir.

    Leave a Reply

    Your email address will not be published. Required fields are marked *