Fortificando las puertas

Bloquenado TOR

Si queremos bloquear los nodos TOR para evitar que se conecten desde dicha red que en muchos casos se suele usar para atacar dado el grado de anonimato que proporciona, podemos usar el siguiente script:

#!/bin/bash
# Block Tor Exit nodes
IPTABLES_TARGET="DROP"
IPTABLES_CHAINNAME="TOR"
if ! iptables -L TOR -n >/dev/null 2>&1 ; then
  iptables -N TOR >/dev/null 2>&1
  iptables -I INPUT 1 -p tcp -j TOR
fi
cd /tmp/
echo -e "\n\tGetting TOR node list from dan.me.uk\n"
wget -q -O - "https://www.dan.me.uk/torlist/" -U SXTorBlocker/1.0 > /tmp/full.tor
wget -q -O - "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1" -U SXTorBlocker/1.0 --no-check-certificate >> /tmp/full.tor
sed -i 's|^#.*$||g' /tmp/full.tor
CMD=$(cat /tmp/full.tor | sort | uniq | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')
iptables -F TOR
for IP in $CMD; do
  let COUNT=COUNT+1
  iptables -A TOR -s $IP -j DROP
done
  iptables -A TOR -j RETURN

luego solo tenemos que poner un crontab para que se actualice periódicamente:

PortSentry

Una cosa que queremos es bloquear los posibles escaneos de red y de paso dar información no veraz para confundir a nuestros atacantes, para ello disponemos del paquete PortSentry.

Lo primero que tenemos que hacer es configurar nuestra ip o rango de trabajo en el fichero que sirve para ignorar los escaneos no sea que nos quedemos fuera.

Al arrancar el servicio, el contenido del archivo se añadirá al archivo /etc/portsentry/portsentry.ignore.

Utilizamos portsentry en modo avanzado para los protocolos TCP y UDP. Para ello, debe modificar

Por defecto PortSentry esta en modo detección solo pero a nosotros nos interesa que detecte y bloque los escaneos

Optamos por un bloqueo de personas maliciosas a través de iptables. Por lo tanto comentaremos en todas las líneas del archivo de configuración que comienzan con KILL_ROUTE excepto la de iptables

Por defecto PortSentry mete también los escaneos dentro del /etc/hosts.deny, gracias a la siguiente linea si no queremos que esto pase podemos comentarla.

Fail2ban

Otra cosa que no queremos es que la gente se ponga a dar martillazos contra nuestras puertas para intentar entrar para ello disponemos de la herramienta Fail2Ban.

La instalación predeterminada de Fail2ban viene con dos archivos de configuración, /etc/fail2ban/jail.conf y /etc/fail2ban/jail.d/defaults-debian.conf. No se recomienda modificar estos archivos, ya que pueden sobrescribirse cuando se actualiza el paquete.

Fail2ban lee los archivos de configuración en el siguiente orden. Cada archivo .local anula la configuración del archivo .conf:

  • /etc/fail2ban/jail.conf

  • /etc/fail2ban/jail.d/*.conf

  • /etc/fail2ban/jail.local

  • /etc/fail2ban/jail.d/*.local

Copiamos la configuración por defecto que luego modificaremos, podríamos hacernos nosotros la configuración totalmente a mano.

Podemos cambiar la cantidad de intentos, el tiempo de baneo o el tiempo que hay entre los máximos intentos.

Si queremos estar atentos a las ips bloqueadas en todo momento podemos configurar un email para que nos notifique el sistema

Por defecto fail2ban tiene un montón de jaulas que podemos activar, por defecto en debian viene activada la del ssh por lo que no es necesario volver a activar, pero si queremos activar cualquier otra solo tenemos que añadir en su bloque de configuración enable=true

ahora solo nos queda arrancar el servicio

Última actualización