User Tools

Site Tools


bloquear_ips_de_tor_con_iptables

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.

#!/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."

Historial con todos los nodos salida de la red Tor (Desde 2012): 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. Un método de conseguir dicha información, además de esa tabla online sería mediante la resolución inversa de nombres. Hay que tener en cuenta que aunque se resuelva una IPv6, eso no asegura que la IPv6 obtenida sea usada como nodo de salida.

# Desde una dirección IPv4 (Tor exit node).
dig +short -x 185.56.83.83
onion.xor.sc
 
dig +short  AAAA onion.xor.sc.
2a06:e80:3000:1:bad:babe:ca11:911
 
# Desde una IPv6 (No siempre las IPv6 tienen configurados registros PTR).
dig +short -x 2a06:e80:3000:1:bad:babe:ca11:911
bloquear_ips_de_tor_con_iptables.txt · Last modified: 2022/10/26 00:09 by busindre