iptables: блокировка входящего TOR-трафика

Задача: необходимо заблокировать все входящие соединения из сети TOR.

По адресу ```` https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=${EXTERNAL_IP}


размещен список узлов сети TOR, которые подключались на 80 порт сервера с IP-адресом `${EXTERNAL_IP}`. При необходимости, можно добавить параметр `&port=xxx` для получения данных по другому порту.

Для блокировки всех входящих соединений из TOR-сети можно воспользоваться следующим скриптом:

#!/bin/bash

Block Tor Exit nodes

IPTABLES_TARGET=“DROP” IPTABLES_CHAINNAME=“TOR” EXTERNAL_IP=“xx.xx.xx.xx”

if ! iptables -L TOR -n >/dev/null 2>&1 ; then /sbin/iptables -N TOR >/dev/null 2>&1 /sbin/iptables -A INPUT -p tcp -j TOR 2>&1 fi /sbin/iptables -F TOR /usr/bin/curl “https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=${EXTERNAL_IP}" 2> /dev/null | /bin/grep -v ‘#’ | /usr/bin/sort | /usr/bin/uniq | while read IP do let COUNT=COUNT+1 /sbin/iptables -A TOR -s $IP -j DROP done /sbin/iptables -A TOR -j RETURN ```

Скрипт необходимо сохранить в файл и положить в каталог /etc/cron.hourly, указав в переменной ${EXTERNAL_IP} IP своего сервера.