Блокируем TOR на сервере.
Ограничиваем доступ на сервер с IP адресов, которые принадлежат exit-нодам TOR’а. Блокировать будем с помощью CSF, и с помощью iptables непосредственно.
Блокируем TOR в CSF.
Если на сервере установлен CSF, то можно воспользоваться встроенным в него механизмом блокировки. Для этого:
- В /etc/csf/csf.conf для URLGET устанавливаем значение 2 (LWP):
# cat /etc/csf/csf.conf | grep "URLGET ="
URLGET = "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
- Раскомментиурем последнюю строку в этой секции и пропишем в ней IP сервера:
TOR|86400|0|https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=10.11.12.23
- Сохраняем файл, перезапускаем csf и lfd:
# systemctl restart lfd
# csf -r
- Проверяем что в ipset у нас появился список bl_TOR, и что этот список не пуст:
# ipset list bl_TOR
Если всё сделано верно, то bl_TOR будет содержать IP адреса TOR нод, доступ с которых на сервер закрыт.
Блокируем TOR с iptables и ipset.
- Создаём новую таблицу в ipset:
# ipset -N block_TOR iphash
- Получаем список 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’у.
- Блокируем доступ для нашего сета:
# iptables -A INPUT -m set --match-set block_TOR src -j DROP
Опять же, если всё будет сделано верно, доступ через TOR на сервер окажется заблокирован.