При DDoS-атаках любительского уровня зачастую используется сеть TOR для того, чтобы генерировать трафик с большого количества различных IP-адресов. Сеть TOR, как известно, имеет узлы для выхода в "большой интернет". Эти узлы формируются энтузиастами, поэтому их список постоянно меняется. На момент написания статьи список IP внешних узлов составлял почти 6 тысяч. Мы будем блокировать соединения с этих IP, регулярно обновляя список.
Актуальный список IP сети TOR можно получить здесь. Нужно учитывать, что запрашивать его можно не чаще, чем раз в полчаса.
Теперь настроим файрвол для того, чтобы он пропускал наш трафик через отдельный набор правил. Для столь массового добавления IP мы будем использовать набор для файрвола ipset (необходим модуль ядра ip_set и набор утилит, но их можно найти практически в любом дистрибутиве Linux).
Создадим новый список правил:
ipset -N tor_ips iphash
Пусть он будет называться tor_ips. Тип хэширования мы поставим самый распространённый - iphash. А в iptables мы пропишем блокировку IP, находящимся в нашем списке:
iptables -A INPUT -m set --set tor_ips src -j DROP
Теперь нам нужно загрузить IP сети TOR. Получим их:
wget -O /root/tor_ips.txt https://www.dan.me.uk/torlist/
Вот что там оказалось:
Загрузка прошла успешно, нам ничего не мешает, автоматизировать работу, создав скрипт автоматической загрузки правил:
#!/bin/bash
wget -O /root/tor_ips.txt https://www.dan.me.uk/torlist/
ipset -F tor_ips
xfile=$(cat /root/tor_ips.txt)
for ipaddr in $xfile
do
ipset -A tor_ips $ipaddr
done
Теперь мы вольны установить этот сценарий в cron. Например, в /etc/cron.daily в RedHat-подобных системах или в crontab.
Комментарии и вопросы
Статью никто не комментировал.
Задать вопрос или оставить комментарий