Блок refferer в Nginx

M
На сайте с 30.08.2010
Offline
92
2286

В общем появилась необходимость блока реферрера на уровне конфига Nginx (в логах он слишком часто встречается в виде refferer http://example.com/page.html и очень похоже на http-флуд). Как правильно его заблокировать, чтобы запросы от него сразу отсекались?

zexis
На сайте с 09.08.2005
Offline
388
#1

if ($http_referer ~* "example\.com") {

return 403;

}

Ручной бан через конфиг NGINX не эффективен, так как нужно каждый раз его настраивать вручную.

Реферреры у флудящих ботов могут меняться.

HTTP флуд лучше блокировать с помощью автоматического анализатора логов.

Который будет автоматом обнаруживать и банить те IP, которые флудят.

Могу вам установить отлаженное решение для автоматического бана HTTP флуда интенсивностью примерно до 50 Мбит. И количество флудящих IP одновременно примерно до 3000 IP.

Цена за установку 100$

Аська 169938шесть79

Отзывы

/ru/forum/494324

M
На сайте с 30.08.2010
Offline
92
#2

Это не совсем то, что нужно. Я так понял Ваш конфиг запретит только скачивание указанных типов файлов. Мне нужно полностью запретить любой доступ для реферера.

Пробовал нечто подобное:

location тут мой сайт {

бла бла бла, стандартный конфиг

valid_referers none blocked тут_реферер_которого_нужно_забанить;

if ($invalid_referer) {

return 403;

}

}

но так на все внутренние страницы сайта тоже получаю 403

megadimon добавил 12.11.2010 в 13:57

да стоит apf и анализатор логов. не спасает.

megadimon добавил 12.11.2010 в 13:58

реферер постоянно один, страница вида http://example.com/page.html, зачем постоянно подстраивать конфиг?

zexis
На сайте с 09.08.2005
Offline
388
#3

в дериктиве valid_referers задаются имена сайтов, которым доступ разрешен,

а не тех котого нужно банить.

Вот так нужно банить сайт по реферреру.

if ($http_referer ~* "example\.com") {

return 403;

}

попробуйте еще раз.

M
На сайте с 30.08.2010
Offline
92
#4

а если реферер это ip/страница? Просто блок ипа не спасает.

zexis
На сайте с 09.08.2005
Offline
388
#5
megadimon:
а если реферер это ip/страница? Просто блок ипа не спасает.

Плохо понял ваш вопрос. Может так?

if ($http_referer ~* "11.22.33.44") {

return 403;

}

M
На сайте с 30.08.2010
Offline
92
#6

Благодарствую, Вы мне очень помогли. В принципе разобрался что к чему

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий