User-Agent Whitelist with DNS Reverse Resolve

Содержание

Обзор

Модуль Whitelist проверяет поле User Agent запроса и использует обратный поиск DNS (reverse DNS lookup). Запросы, попадающие под условия белого списка, пропускаются при обработке в соответствующих модулях безопасности:

Обратный поиск DNS заключается в определении доменного имени клиента по IP-адресу. Если доменное имя соответствует заданному шаблону, белый список устанавливает переменную в значение true. Обратный поиск DNS предназначен для распознавания ботов, использующих User Agent известных роботов.
Можно задать несколько белых списков для использования в разных модулях.
Эта функция появилась в версии 1.5.11.

Директивы

whitelist_ua

Синтаксис whitelist_ua $variable { ... }
По умолчанию
Контекст http

Создать белый список на основе User Agent
Пример:

whitelist_ua $ua_wl {
    "baiduspider";
    "googlebot";
}

Включить обратный поиск DNS:

resolver 10.5.1.204 ipv6=off;
resolver_timeout 5s;
whitelist_ua $ua_wl_dns {
    "baiduspider" ".*\.baidu\.com";
    "googlebot" ".*\.google\.com";
}

Игнорировать регистр:

resolver 10.5.1.204 ipv6=off;
resolver_timeout 5s;
whitelist_ua $ua_wl_dns {
    caseless;
    "baiduspider" ".*\.baidu\.com";
    "googlebot" ".*\.google\.com";
}

Переменные, определенные в модуле белого списка, могут быть использованы в других модулях безопасности, а также в операторах 'if' в блоках location (но не в операторах 'if' в блоках server)
Пример:

# В модуле Cookie Poisoning:
cookie_poisoning_whitelist ua_var_name=ua_wl_dns;
# В операторе if:
if ($ua_wl_dns) {
    # сделать что-то доброе
}
# Иначе
# Сделать дополнительные проверки безопасности

Смотрите документацию других модулeй безопасности по использованию белого списка на основе User Agent.