Ограничиваем доступ на сервер с IP адресов, которые принадлежат exit-нодам TOR’а. Блокировать будем с помощью CSF, и с помощью iptables непосредственно.
Все манипуляции выполняем под root пользователем.
Блокируем TOR в CSF.
Если на сервере установлен CSF, то можно воспользоваться встроенным в него механизмом блокировки. Для этого:
1. В /etc/csf/csf.conf для URLGET устанавливаем значение 2 (LWP):
cat /etc/csf/csf.conf | grep "URLGET =" URLGET = "2"
2. Открываем файл /etc/csf/csf.blocklists, находим там строки вида:
# TOR Exit Nodes List
# Set URLGET in csf.conf to use LWP as this list uses an SSL connection
# Details: https://trac.torproject.org/projects/tor/wiki/doc/TorDNSExitList
# TOR|86400|0|https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1
3. Раскомментиурем последнюю строку в этой секции и пропишем в ней IP сервера:
TOR|86400|0|https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=10.11.12.23
4. Сохраняем файл, перезапускаем csf и lfd:
systemctl restart lfd
csf -r
5. Проверяем что в ipset у нас появился список bl_TOR, и что этот список не пуст:
ipset list bl_TOR
Если всё сделано верно, то bl_TOR будет содержать IP адреса TOR нод, доступ с которых на сервер закрыт.
Блокируем TOR с iptables и ipset.
1. Создаём новую таблицу в ipset:
ipset -N block_TOR iphash
2. Получаем список IP адресов и отправляем его в ipset:
wget -q https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1 -O - | sed '/^#/d' | while read ipAddr; do \ ipset -q -A block_TOR $ipAddr \ done
Такую выгрузку можно поместить в отдельный скрипт и запускать её по cron’у.
3. Блокируем доступ для нашего сета:
iptables -A INPUT -m set --match-set block_TOR src -j DROP
Опять же, если всё будет сделано верно, доступ через TOR на сервер окажется заблокирован.
[endtxt]