Baneando IP no Españolas en Linux

Hola amigos en esta ocasión quería enseñaros un script que hice hace tiempo para banear intentos de login en mi servidor de mail en plesk.

Por un lado uso una api externa para preguntar el pais de una determinada ip con https://ipapi.co/

Por otro lado tenemos que leer los logs del sistema donde buscaremos la cadena «authentication failure» los podemos encontrar en /var/log/messages o en /var/log/auth según lo que busquemos bloquear, ssh, mail, etc…

Con este comando filtraremos todas las ip con intentos fallidos:

cat /var/log/maillog |grep "authentication failure" | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |sort -u > /root/ataques.log

Con el comando anterior tendremos un archivo llamado ataques.log donde estaran todas las ip que han fallado login.

Ahora no queremos bloquear a nuestros clientes, como todos son de España filtraremos por país con el siguiente ejemplo:

input="ataques.log"
while IFS= read -r line
do
  echo "$line"
  country=$(curl -s https://ipapi.co/$line/country/)
  if [ "$country" = "ES" ]; then
   echo "es España $country"
  else
    echo "NO España $country"
    echo $line >> ips.txt
    country=0
    echo "Bloqueando ips"
  fi

done < "$input"

El resultado de este while nos genera un archivo llamado ips.txt con direcciones ip de fuera de España, jjj ahora si que podemos bloquear a saco, pero antes formatearemos el archivo con el comando sed, despues pasaremos un listado de ip separadas por puntos a plesk para que se encargue de bloquear, aplicaremos y recargaremos firewall.

cat ips.txt | tr '\n' ' ' | sed 's/ /,/g' > drop.txt
ips=$(cat drop.txt)
/usr/local/psa/bin/modules/firewall/settings -s -name 'ataques_mail' -direction input -action deny  -remote-addresses  "$ips"
/usr/local/psa/bin/modules/firewall/settings -a
/usr/local/psa/bin/modules/firewall/settings -c

cat /dev/null > /root/ips.txt
cat /dev/null > /root/drop.txt
cat /dev/null > /root/ataques.log

Os dejo un link al repositorio

Saludos!!

Sin respuestas

Deja una respuesta

Recibirás mis últimas publicaciones

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Jesús Amorós & JS Sistemas will use the information you provide on this form to be in touch with you and to provide updates and marketing.