blog.bartlweb - a technologist's external brain

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

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste! - Ich freue mich über deine Anmerkung, Kritik oder Frage.

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "9039" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.