На этой странице мы представляем несколько способов смягчения DoS-атак, доступных в настоящее время. Однако на данный момент не существует единого универсального решения этой проблемы. Защита сайта, подвергающегося атаке, требует творчества и индивидуального подхода. Вот несколько советов:

Параметры конфигурации

С момента реализации Предложения 305 в файл torrc было добавлено несколько опций, чтобы помочь смягчить DoS-атаки на точках входа:

  • HiddenServiceEnableIntroDoSDefense: Включите защиту от DoS на уровне точек входа. При включении опции значения параметров rate (скорость) и burst (пакет) будут отправлены на входную точку, которая затем будет использовать их для ограничения скорости запросов на подключение к ресурсу.

  • HiddenServiceEnableIntroDoSBurstPerSec: допустимое количество пакетов клиента в секунду в точке входа. Если этот параметр равен 0, он считается бесконечным, и, если HiddenServiceEnableIntroDoSDefense установлен таким образом, он эффективно отключает защиту.

  • HiddenServiceEnableIntroDoSRatePerSec: Допустимая скорость входа клиентов в секунду в точке входа. Если этот параметр равен 0, он считается бесконечным, и, если HiddenServiceEnableIntroDoSDefense установлен таким образом, он эффективно отключает защиту.

Дополнительную информацию о том, как они работают, смотрите на основной странице tor (1) и в разделе [EST_INTIN_DOS_EXT] спецификации на Onion-ресурсы v3.

The following configuration options can be used to limit connections in the rendezvous circuits:

  • HiddenServiceMaxStreams: The maximum number of simultaneous streams (connections) per rendezvous circuit. Максимально допустимое значение — 65535. (Установка значения 0 позволит использовать неограниченное количество одновременных потоков.)

  • HiddenServiceMaxStreamsCloseCircuit: If set to 1, then exceeding HiddenServiceMaxStreams will cause the offending rendezvous circuit to be torn down, as opposed to stream creation requests that exceed the limit being silently ignored.

Onionbalance

Onionbalance позволяет операторам обеспечить высокую доступность Onion-ресурсов, позволяя нескольким машинам обрабатывать поступающие запросы. Вы можете использовать Onionbalance для горизонтального масштабирования. Чем больше вы масштабируете, тем сложнее злоумышленникам сокрушить вас. Onionbalance доступен для Onion-ресурсов v3.

Авторизация клиента или множество onion-адресов для разделения пользователей

Для обеспечения постоянного доступа пользователям, которым вы доверяете, вы можете предоставить им выделенные учетные данные Onion-ресурса и авторизацию клиента. Для пользователей, которым вы не доверяете, разделите их на несколько адресов. Тем не менее, наличие большого количества onion-адресов снижает уровень вашей безопасности (из-за использования большего количества сторожевых (guard) узлов), поэтому по возможности используйте авторизацию клиента.

Captchas и cookies

Если вам нужно дополнительно ограничить скорость пользователей, разделите свою инфраструктуру на слои и установите Captchas. Таким образом, злоумышленники должны будут ввести Captchas, прежде чем атаковать глубже вашу инфраструктуру.

Captchas — это способ смягчения DDoS-атак. При поступлении запроса от клиента выполняется проверка, содержит ли клиент правильный безопасный файл cookie, в противном случае идет перенаправление на страницу recaptcha. Клиент вводит символы captcha. Nginx отправляет введенные символы на сервер recaptcha для проверки.

Правильный ответ от сервера recaptcha содержит начало "true...", в противном случае – "false...". Добавьте безопасный файл cookie для проверенного клиента и перенаправьте его на запрашиваемую им страницу.

Можно реализовать Captchas непосредственно на вашем веб-сервере с Nginx и OpenResty, используя Lua для генерации и проверки изображений captcha. Однако настройка Captchas непростая.

Альтернативой может быть просто реализация вызова тестового cookie. Веб-сервер проверяет возможность установки допустимых файлов cookie клиентами, вредоносные клиенты часто не имеют этой опции. В Nginx Cloudflare предоставляет библиотеку для взаимодействия с файлами cookie.

Другие методы включают проверку клиентов, подключающихся к вашему .onion, на предмет того, что заголовок User-Agent имеет допустимое значение и значение заголовка Referer не может быть ассоциировано с атакой.

Ограничение скорости веб-сервера

Если злоумышленники перегружают вас агрессивными цепочками, которые выполняют слишком много запросов, попробуйте обнаружить это чрезмерное использование и исключить их, используя опцию torrc HiddenServiceExportCircuitID. Вы можете использовать свою собственную эвристику или модуль ограничения скорости вашего веб-сервера.

Приведенные выше советы должны помочь вам удержаться на плаву в неспокойные времена. В то же время мы работаем над более продвинутыми средствами защиты для снижения нагрузки на операторов onion-ресурсов в части ручной настройки.