RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:nginx:tor

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

linux:nginx:tor [2017/03/05 23:48] – внешнее изменение 127.0.0.1linux:nginx:tor [2021/11/05 18:23] (текущий) dx
Строка 1: Строка 1:
 +====== Блокировка Tor в nginx ======
  
 +Источник: https://gongled.ru/2017/01/03/how-to-block-tor-network-in-nginx.html
 +
 +Недобросовестные предприниматели часто заказывают DDoS-атаки на проекты конкурентов. Последствиями таких нападений становятся репутационные потери и издержки, вызванные недоступностью ресурса для партнеров и клиентов.
 +
 +Сайты часто атакуют на уровне приложения из сети Tor: это страницы со сложными фильтрами и поиском, обработка которых замедляет работу сервиса. Такой любительский DDoS несложно отразить. 
 +
 +Идея защитной стратегии — блокировка HTTP-запросов из подсетей Tor network. Проект Tor Project регулярно обновляет [[https://check.torproject.org/exit-addresses|списки выходных узлов]] сети в формате TorDNSEL:
 +
 +<code>
 +[...]
 +ExitNode FF0D1841086637CA0920E21AFA4C6A43905EA2BD
 +Published 2017-01-02 11:00:24
 +LastStatus 2017-01-02 12:03:41
 +ExitAddress 45.76.159.203 2017-01-02 12:12:29
 +ExitNode FFB8575D7C8E40AC6E48C1B7AA32AC7701E04AB9
 +Published 2017-01-01 16:10:32
 +LastStatus 2017-01-01 20:03:40
 +ExitAddress 80.15.98.127 2017-01-01 18:10:35
 +ExitNode FFB94702D023B6F824D8B3BC68F33EA02AFA70D8
 +Published 2017-01-02 08:37:56
 +LastStatus 2017-01-02 09:02:40
 +ExitAddress 51.15.39.2 2017-01-02 09:07:51
 +</code>
 +
 +Загрузка
 +
 +<code bash>
 +curl -Ls https://check.torproject.org/exit-addresses | grep ExitAddress | awk '{print $2}' | sort | uniq > tor.list
 +</code>
 +
 +Полученный список приводим к формату файла в ''ngx_http_geo_module'' и используем вместе с опцией ''include'' для объявления переменной:
 +
 +<code bash>
 +geo $is_tor {
 +  default 0;
 +  include /etc/nginx/conf.d/tor.list;
 +}
 +</code>
 +
 +В секции ''server'' виртуального хоста указываем условие или объявляем формат для логирования запросов:
 +
 +<code bash>
 +if ($is_tor) {
 +  return 403;
 +}
 +</code>
 +
 +Рекомендую также поэкспериментировать со ответами веб-сервера: иногда атакующий прекращает DDoS при получении статус-кодов 5XX. Ещё один верный способ — закрывать соединение с помощью внутреннего кода 444. Я подготовил [[https://github.com/gongled/nginx-tor-sync|скрипт]], где всё уже работает.