HTTP Robot Mitigation
Обзор
Модуль Robot Mitigation представляет собой портированный на язык C модуль Roboo.
Модуль обеспечивает защиту от роботов, сканеров и ddos-атак. Robot Mitigation использует метод верификации "challenge", отправляя клиенту специальный ответ, который может быть обработан браузером. Если клиент это браузер, то оригинальный запрос будет повторен браузером с включением специальных cookie. Robot Mitigation разрешит обработку запроса в зависимости от значения cookie в запросе.
Robot Mitigation имеет следующие улучшения относительно оригинального модуля Roboo:
- Более эффективен за счет использования языка C. Обнаруживает роботов до того, как запрос достигнет основного «обработчика контента».
- Простое конфигурирование и использование.
- Последовательность действий обрабатывается NetEye security layer аналогично другим модулям безопасности.
- Для проверки клиентов используется случайный код javascript из набора, а не один и тот же код.
- Поддерживает добавление клиентов в черный список с помощью модуля IP Blacklist.
- Поддерживает возврат уведомлений клиентам в виде html, если HTTP-запросы блокируются или добавляются в черный список.
Директивы
robot_mitigation
Синтаксис | robot_mitigation on | off; |
По умолчанию | off |
Контекст | Location |
Включает или выключает модуль Robot Mitigation.
robot_mitigation_cookie_name
Синтаксис | robot_mitigation_cookie_name cookie_name; |
По умолчанию | SENGINX-ROBOT-MITIGATION |
Контекст | Location |
Имя cookie
Пример:
robot_mitigation_cookie_name robot_cookie;
robot_mitigation_mode
Синтаксис | robot_mitigation_mode js | swf; |
По умолчанию | js |
Контекст | Location |
Указывает тип проверки:
- Если выбран js, модуль Robot Mitigation вернет клиенту код javascript. Если в браузере клиента разрешен javascript, то браузер выполнит новый запрос.
- Если выбран swf, модуль Robot Mitigation вернет клиенту файл с flash. Если Flash плагин установлен в браузере клиента, то браузер выполнит новый запрос.
Смотрите также robot_mitigation_mode (Pro).
robot_mitigation_blacklist
Синтаксис | robot_mitigation_blacklist failed_count; |
По умолчанию | |
Контекст | Location |
Устанавливает порог неуспешных проверок клиента. Если клиент превышает этот порог, то он будет добавлен в черный список.
Пример:
robot_mitigation_blacklist 3;
Это значит, что если клиент 4 раза не прошел проверку, он будет добавлен в черный список.
robot_mitigation_timeout
Синтаксис | robot_mitigation_timeout timeout; |
По умолчанию | 60 |
Контекст | Location |
Устанавливает интервал времени в секундах, через которое будет проведена следующая проверка клиента.
robot_mitigation_challenge_ajax
Синтаксис | robot_mitigation_challenge_ajax on | off; |
По умолчанию | off |
Контекст | Location |
С версии | 1.5.5 |
Применять или не применять проверку для ajax запросов, основанных на заголовке XMLRequest.
robot_mitigation_global_whitelist
Синтаксис | robot_mitigation_global_whitelist ua_var_name=UA whitlist ip_var_name=IP whitelist ip_var_value=value; |
По умолчанию | |
Контекст | Location |
С версии | 1.5.11 |
Эта директива указывает глобальный белый список IP адресов (на основе модуля geo nginx) и белый список на основе User Agent.
Пример:
# Определить белый список IP адресов geo $ip_wl { ranges; default 0; 127.0.0.1-127.0.0.1 1; 3.0.0.1-3.2.1.254 1; } # Определить белый список на основе User Agent whitelist_ua $ua_wl { "autotest" ".*\.test\.com"; } server { location { robot_mitigation_global_whitelist ua_var_name=ua_wl ip_var_name=ip_wl ip_var_value=1; } }
robot_mitigation_force_update_blacklist (Pro)
Синтаксис | robot_mitigation_force_update_blacklist on | off; |
По умолчанию | off |
Контекст | Location |
С версии | SEnginx Pro 1.10.0 |
Директива увеличивает счетчик в черном списке без проведения стандартной проверки клиента на основе js/swf/captcha.
С помощью этой директивы можно проверять роботов на основе собственных правил и условий.
Также это может быть эффективно против продвинутых ботов, которые способны пройти стандартную проверку SEnginx.
Пример защиты от ddos, основанный на переменных модуля IP Behavior:
error_page 555 =403 /555.html; location = /555.html { internal; root /home/site/www/errors; robot_mitigation on; robot_mitigation_blacklist 3; robot_mitigation_force_update_blacklist on; } ... location /sens { ip_behavior_sensitive; ifall ($insensitive_percent >= 0) ($insensitive_percent <= 5) { return 555; } ... }
robot_mitigation_mode (Pro)
Синтаксис | robot_mitigation_mode js | swf | captcha; |
По умолчанию | js |
Контекст | Location |
С версии | SEnginx Pro 1.10.4 |
Эта директива такая же, как robot_mitigation_mode, но добавлена проверка "captcha".
Укажите тип проверки:
- Если выбран js, модуль Robot Mitigation вернет клиенту код javascript. Если в браузере клиента разрешен javascript, то браузер выполнит новый запрос.
- Если выбран swf, модуль Robot Mitigation вернет клиенту файл с flash. Если Flash плагин установлен в браузере клиента, то браузер выполнит новый запрос.
- Если выбран captcha, модуль Robot Mitigation вернет клиенту код javascript. Если в браузере клиента разрешен javascript, то браузер отобразит каптчу и выполнит новый запрос после успешного решения каптчи.
Статистика
Используйте модуль Статистика трафика и атак чтобы посмотреть результаты работы модуля Robot Mitigation.