- Install
ipset
:
apt-get install ipset
- Create new ipset:
ipset create tor iphash
- Read Tor Exit Node List and add to ipset:
curl -sSL "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=$(curl icanhazip.com)" | sed '/^#/d' | while read IP; do
ipset -q -A tor $IP
done
Note: This should run as daily cronjob.
- Block ipset with
iptables
:
iptables -A INPUT -m set --match-set tor src -j DROP
The list from dan.me.uk contains IPv4 and IPv6 addresses. To filter out v6 addresses you can use something like:
ipset create tor-nodes iphash
curl -sSL "https://www.dan.me.uk/torlist/?ip=$(curl icanhazip.com)" | sed -e '/^#/d' -e '/:/d' | while read IP; do
ipset -q -A tor-nodes $IP
done