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.