Безопасность ·

Блокируем TOR на сервере.

Ограничиваем доступ на сервер с IP адресов, которые принадлежат exit-нодам TOR’а. Блокировать будем с помощью CSF, и с помощью iptables непосредственно.

Блокируем TOR в CSF.

Если на сервере установлен CSF, то можно воспользоваться встроенным в него механизмом блокировки. Для этого:

  1. В /etc/csf/csf.conf для URLGET устанавливаем значение 2 (LWP):
# cat /etc/csf/csf.conf | grep "URLGET ="
URLGET = "2"
  1. Открываем файл /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
  1. Раскомментиурем последнюю строку в этой секции и пропишем в ней IP сервера:
TOR|86400|0|https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=10.11.12.23
  1. Сохраняем файл, перезапускаем csf и lfd:
# systemctl restart lfd
# csf -r
  1. Проверяем что в ipset у нас появился список bl_TOR, и что этот список не пуст:
# ipset list bl_TOR

Если всё сделано верно, то bl_TOR будет содержать IP адреса TOR нод, доступ с которых на сервер закрыт.

Блокируем TOR с iptables и ipset.

  1. Создаём новую таблицу в ipset:
# ipset -N block_TOR iphash
  1. Получаем список 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’у.

  1. Блокируем доступ для нашего сета:
# iptables -A INPUT -m set --match-set block_TOR src -j DROP

Опять же, если всё будет сделано верно, доступ через TOR на сервер окажется заблокирован.