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 своего сервера.