Zugriff auf das Tor-Netzwerk mittels OpenWrt-Router blockieren
Webfilter auf Basis von DNS-Sperrlisten (z.B. über OpenDNS) funktionieren für die Regulierung von Zugriffen auf Inhalte im Internet perfekt. Greift ein Nutzer jedoch aus dem eigenen Netzwerk über Tor bzw. den einfach zu installierenden Tor Browser zu, greifen diese Sperrlisten nicht mehr. Das Tor-Netzwerk nutzt eigene DNS-Dienste bzw. leitet den gesamten Netzwerkverkehr verschleiert nach außen.
Um den Zugriff auf das Internet via Tor im eigenen Netzwerk zu sperren, bedarf es daher dem Blockieren des Zugriffs auf die Tor-Zugriffspunkte anhand von IP-Adressen. Für den regulären Zugriff auf das Tor-Netzwerk funktioniert das über öffentlich zugängliche Listen der Entry- und Exit-Nodes sehr gut. Für den Zugriff über die Tor-Bridges habe ich eine rudimentäre Liste an bereits im Browser-Bundle hinterlegten IP-Adressen zusammengefasst. Hier ist manuelle Nacharbeit und vor allem eine regelmäßige Aktualisierung notwendig, um den Zugriff dauerhaft und konsequent zu unterbinden.
IP-Blocklist für Entry- und Exit-Nodes
Für OpenWrt habe ich das unten stehende Skript erstellt, das unter /etc/firewall_blacklist_tor.user abgelegt wird.
# ############################ # block connections from lan to tor network # ############################ # create ipset list ipset flush blacklist_tor ipset destroy blacklist_tor ipset create blacklist_tor hash:ip # add ipset list to firewall rules iptables -I zone_lan_forward 2 -m set --match-set blacklist_tor dst -p TCP -j zone_wan_dest_REJECT # fetch entry nodes blacklist tmp="/etc/firewall_blacklist_tor.iplist" /bin/wget -O "$tmp" -T 10 https://www.dan.me.uk/torlist/ # add ips of blacklist to ipset list lines=$(wc -l "$tmp"|cut -f1 -d" ") currentline=0 exec <"$tmp" read line while [ $currentline -lt $lines ]; do read line ipset -! add blacklist_tor "$line" currentline=$(expr $currentline + 1) done # add bridge ips from static list tmp="/etc/firewall_blacklist_tor.bridgelist" lines=$(wc -l "$tmp"|cut -f1 -d" ") currentline=0 exec <"$tmp" read line while [ $currentline -lt $lines ]; do read line ipset -! add blacklist_tor "$line" currentline=$(expr $currentline + 1) done
Das Ausführen erfolgt aufgrund der langen Laufzeit nicht über das Skript firewall.user (Start der Firewall scheitert ansonsten beim Neustart) sondern regelmäßig per Cronjob.
0 5 * * * /etc/firewall_blacklist_tor.user
IP-Blacklist für Tor-Bridges
Die folgende Blacklist basiert auf den im Browser-Bundle fix hinterlegten IP-Adressen, die über bridges.torproject.org ermittelt werden können. Die Liste ist mit Sicherheit bei Weitem nicht vollständig und muss für einen ausreichenden Schutz regelmäßig per Hand geprüft und aktualisiert werden. Als Basisschutz gegen die Nutzung von Tor durch technisch weniger versierte Nutzer sollte diese allerdings ausreichen.
Legen Sie die unten stehende Liste als Textdatei unter /etc/firewall_blacklist_tor.bridgelist ab. Das oben stehende Skript übernimmt die IP-Adressen daraufhin automatisch.
192.36.31.254
192.36.31.70
69.163.37.128
192.36.31.254
45.33.50.196
69.163.37.128
84.118.223.160
54.84.72.155
76.121.137.209
192.36.31.254
45.33.50.196
192.36.31.254
45.33.50.196
190.201.142.82
37.218.246.165
194.132.208.90
192.36.31.254
45.33.50.196
190.201.142.82
154.35.22.10
109.105.109.165
154.35.22.11
83.212.101.3
154.35.22.12
154.35.22.10
154.35.22.11
154.35.22.13
198.245.60.50
154.35.22.11
109.105.109.147
154.35.22.10
192.99.11.54
104.131.108.182