bloquear_ips_de_tor_con_iptables

This is an old revision of the document!


Bloquear IPs procedentes de la red Tor con reglas iptables

Este sencillo script descarga una lista actualizada con las IPs de los nodos Tor de salida conocidos y posteriormente bloquea las IPs (V4 y v6) de dicha lista mediante iptables.

Historial con todos los nodos salida de la red Tor: https://collector.torproject.org/ (IPv4).

Tor actualmente no registra en sus listas de nodos salida las direcciones IPv6, pero pueden ser obtenidas desde este enlace “https://metrics.torproject.org/rs.html#search/flag:exit%20”. La URL que usa el script “https://www.dan.me.uk/torlist/” sí mantiene en el listado las IPv6, aunque no se sabe a ciencia cierta de donde son obtenidas.

#!/bin/bash
 
########################
IPTABLES_TARGET="DROP"
IPTABLES_CHAINNAME="TOR"
########################
 
# Comprueba que no existe el chain "TOR" en IPv4 y lo crea (-N).
if ! iptables -L $IPTABLES_CHAINNAME -n >/dev/null 2>&1 ; then 
  iptables -N $IPTABLES_CHAINNAME >/dev/null 2>&1
# Los paquetes entrantes TCP usarán las reglas del chain TOR, la cual según se definió en la cabecera será denegada.
  iptables -A INPUT -p tcp -j $IPTABLES_CHAINNAME 2>&1
fi
 
# Comprueba que no existe el chain "TOR" en IPv6  y lo crea (-N).
if ! ip6tables -L $IPTABLES_CHAINNAME -n >/dev/null 2>&1 ; then 
  ip6tables -N $IPTABLES_CHAINNAME >/dev/null 2>&1
  ip6tables -A INPUT -p tcp -j $IPTABLES_CHAINNAME 2>&1
fi
 
# Descarga la lista de IPs a bloquear, la ordena y en el caso de haber lineas comentadas las elimina.
echo -e "\nGetting TOR node list from dan.me.uk\n"
CMD=$(wget -q -O - "https://www.dan.me.uk/torlist/" | sort -u | sed 's|^#.*$||g')
 
# Elimina las reglas actuales del chain "TOR" y genera las nuevas reglas.
iptables -F $IPTABLES_CHAINNAME
ip6tables -F $IPTABLES_CHAINNAME 
 
for IP in $CMD; do
  if [[ $IP =~ .*:.* ]]          # IPv6
  then
    ip6tables -A $IPTABLES_CHAINNAME -s $IP -j $IPTABLES_TARGET
    let COUNT_IPv4=COUNT_IPv4+1
  else
    let COUNT_IPv6=COUNT_IPv6+1  # IPv4
    iptables -A $IPTABLES_CHAINNAME -s $IP -j $IPTABLES_TARGET 
  fi
done
echo -e "\n\t $COUNT_IPv4 IPv4 blocked.\n\t $COUNT_IPv6 IPv6 blocked."
bloquear_ips_de_tor_con_iptables.1666733867.txt.gz · Last modified: 2022/10/25 23:37 by busindre