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.