Bloquear las peticiones de los nodos de salida de Tor en tu servidor Linux

En un servidor Linux que gestiono estoy teniendo ataques continuos desde direcciones IP de los nodos de salida de Tor. Estos ataques hacen que la máquina consuma muchos más recursos de los que debería. Para resolverlo lo que hice fue bloquear todas las direcciones de los nodos de salida de Tor con el cortafuegos iptables.

Lo primero que hice fue instalar ipset, una aplicación que viene con iptables y que permite configurar reglas para bloquear rápida y fácilmente un conjunto de direcciones IP, entre otras cosas.

$ sudo apt-get install ipset

A continuación, en ipset creo un nuevo grupo llamado «filtro-tor»:

$ sudo ipset create filtro-tor hash:ip

Creo un script para añadir las IP de los nodos de salida de Tor a este grupo que acabo de crear. Estas direcciones son de acceso público en la URL https://check.torproject.org/torbulkexitlist:

$ vi ~/scripts/filtrar-ip-tor.sh

El contenido del script es el siguiente:

#!/usr/bin/env bash
# Elimino las IP en el grupo filtro-tor
ipset flush filtro-tor
# Obtengo la lista de IP de los nodos de salida de Tor y los añado al grupo filtro-tor
curl -sSL "https://check.torproject.org/torbulkexitlist" | sed '/^#/d' | while read IP; do
    ipset -q -A filtro-tor $IP
done
# Aplico el grupo filtro-tor a iptables
iptables -A INPUT -m set --match-set filtro-tor src -j DROP

Le doy permiso de ejecución al script:

$ sudo chmod +x filtrar-ip-tor.sh

Lo ejecuto

$ sudo ./filtrar-ip-tor.sh

Lo añado al cron, para que se ejecute diariamente a las 5:00 de la mañana, actualizando el listado de IP y también cuando arranca la máquina. Para ello ejecuto la edición del cron:

$ sudo crontab -e

Y añado las siguientes líneas en el fichero de cron:

# Actualizo las IP filtradas de nodos de salida Tor
00 5 * * * /home/amieiro/scripts/filtrar-ip-tor.sh > /dev/null 2>&1
@reboot /home/amieiro/scripts/filtrar-ip-tor.sh > /dev/null 2>&1

Más información:

4 comments

  1. Que buen dato! No lo tenia para nada, no solo se lo puede implementar en Linux, si no también, con un poco de ingenio en un router Mikrotik.

  2. Perfecto, todo bien explicado.

    Algun problema si pongo esto en mi blog/documentacion personal? siempre pondria referencia a el articulo original claro.

  3. Sin problema, pero Google lo va a detectar como contenido duplicado y te va a penalizar el tema de SEO. Quitando eso, si enlazas el artículo, sin problema.

Leave a comment

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.