LINUX.ORG.RU

Нужна помощь в написании простенького Bash скрипта за небольшое вознаграждение

 , ,


1

3

Всем привет!

Столкнулся с проблемой, ддосят сайт уже вторые сутки. Сайт у хостера, грозится отключить ip, услуги анти-DDoS компаний для меня слишком дорого, никакого ПО на хостинг устанавливать нельзя, нет прав для управления Brandmauer'ом и Cron'ом, но - можно выполнять скрипты и можно править конфиги nginx! Сижу вот и вторые сутки вручную баню IP из access_log через конфиг nginx'а. В логе каждая строка ddos запроса содержит слово «mirroragent», по этой строке можно отлавливать вредоносные ip.

Отправлю 500 руб. на телефон первому, кто предложит готовый рабочий скрипт, автоматизирующий эту работу по забаниванию ip (сам я в bash почти ноль). Номер телефона кидайте на почту viiipopugaev@gmail.com. Нужно именно законченно решение, которое можно сразу применить, сам я допилить не смогу, да и времени разбираться нет.

Небольшой нюанс: файл access_log раздувается до сотен мегабайт за считанные минуты, поэтому, разумеется, список забаненых ip должен содержать только уникальные адреса.

Очень надеюсь на вашу помощь. Заранее спасибо всем откликнувшимся.

ддосят сайт уже вторые сутки. Сайт у хостера, грозится отключить ip

Как access deny на уровне веб-сервера поможет атакам извне? Пакеты перестанут забивать канал хостера? Или ему не нравится высокая загрузка CPU?

anonymous
()

Здесь тебе вряд ли помогут, обратись лучше на какую-нибудь биржу фриланса. А вообще, в соседней ветке проплывало недавно что-то подобное.

ufayan
()

предлагаю более простой вариант, убежать к другому хостеру. сделай бэкап своего проекта, разверни у другого хостера, смени A-запись на домене на новый IP. всё.

у атакующего не хватит ресурсов на несколько серверов.

скрипт, который ты хочешь, очень простой.

cat /var/log/nginx/access.log | cut -d " " -f 1 | uniq -c

получишь список уникальных адресов и количество их штук, самые повторяющиеся бань.

денег не надо.

Spoofing ★★★★★
()
Ответ на: комментарий от anonymous

Как access deny на уровне веб-сервера поможет атакам извне? Пакеты перестанут забивать канал хостера? Или ему не нравится высокая загрузка CPU?

access deny существенно снизит нагрузку на сервер, сам хостер и подсказал такое решение, и, собственно, это реально помогает

vosempopugaev
() автор топика
Ответ на: комментарий от ufayan

Здесь тебе вряд ли помогут, обратись лучше на какую-нибудь биржу фриланса. А вообще, в соседней ветке проплывало недавно что-то подобное.

в соседней ветке не пойдет, т.к. мне нужно законченно решение, я не разбирают в bash-программировании

vosempopugaev
() автор топика
Ответ на: комментарий от Spoofing

у атакующего не хватит ресурсов на несколько серверов.

У тебя неверное представление, а скорее наивное.

Если это и правда ddos, то это проблема хостинга, хостер предоставляет услугу размещения ресурса и это он из-за атаки не может предоставить ее в полном объеме. Угрозы отключения, говорят лишь о том, что хостер говно и надо бы действительно сменить, на того, кто в состоянии контролировать свои сервера и каналы, не вешая лапшу на уши своим клиентам и не заставляя их решать свои проблемы.

anonymous
()
Ответ на: комментарий от vosempopugaev

ну прально, офигенное решение, вместо оптимизации сайта, дропать соединения, если проблема в нагрузке. Офигенный хостинг.

anonymous
()
Ответ на: комментарий от Spoofing

скрипт, который ты хочешь, очень простой.
cat /var/log/nginx/access.log | cut -d " " -f 1 | uniq -c
получишь список уникальных адресов и количество их штук, самые повторяющиеся бань.

после попадания ip адреса в бан, через несколько секунд появляется новый атакующий ip, поэтому это все равно придется непрерывно в терминале сидеть и вручную банить, а сайт будет все также периодически лежать. Поэтому мне и нужно автоматизировать процесс именно по поиску ключевого слова в запросе (mirroragent) и чтоб этот ip банился сразу же, не роняя сайт.

vosempopugaev
() автор топика
Ответ на: комментарий от vosempopugaev

grep mirroragent /var/log/nginx/access.log | cut -d " " -f 1 | uniq -c

Spoofing ★★★★★
()

а можно вопрос? что такого привлекательного в вашем сайте, что кому-то до него есть дело? как мне раскрутить свой ЖЖ, чтобы его тоже хотели ддосить?

Spoofing ★★★★★
()

Давай пример лога и пример конфига nginx, если скрипт на 5-10 мин — помогу

anonymous
()
Ответ на: комментарий от Spoofing

порн не иначе, раз его кто-то синкнуть решил (:

anonymous
()
Ответ на: комментарий от anonymous

Давай пример лога и пример конфига nginx, если скрипт на 5-10 мин — помогу

пример лога /var/log/sitename.org.access_log:

...
71.128.14.13 - - [29/Mar/2016:17:23:30 +0300] "POST / HTTP/1.0" 200 149864 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:30 +0300] "POST / HTTP/1.0" 200 149864 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:30 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:30 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:30 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:31 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:32 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
71.128.14.13 - - [29/Mar/2016:17:23:33 +0300] "POST / HTTP/1.0" 200 150295 "-" "MirrorAgent/2.2"
...
ну и таких строк сотни тысяч, как только ip банится, вместо него через несколько секунд новый начинает долбиться.

конфиг самого ngnix мне не доступен, только конфиг самого сайта ngnix /home/8popugaev/etc/nginx/sitename.org.press.site.conf:

server {
    include /home/8popugaev/etc/nginx/blockips.conf;
...
}
файл blockips.conf должен содержать список уникальных забаненных ip
deny IP;
deny IP;
deny IP;
deny IP;
deny IP;
deny IP;
и т.д.
...
сейчас я тупо в консоли делаю tail -f /var/log//var/log/sitename.org.access_log, слежу за происходящим и в ручную баню ip. А нужно чтобы это делал скрипт вместо меня :))

vosempopugaev
() автор топика
Ответ на: комментарий от vosempopugaev

Пардон, но вы какую-то ерунду, по-моему, делаете. Вы думаете, nginx умеет только в журнал юзерагент писать, а блокировать по нему — нет?

    if ($http_user_agent ~ "MirrorAgent") {
        return 403;
    }

— ну или как-то так, я навскидку могу накосячить в синтаксисе.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от vosempopugaev

Там как раз для тебя решение, надо только совсем немного поправить

grep "MirrorAgent\/2.2" /var/log/var/log/sitename.org.access_log | awk '{print "deny "$1}' | sort -u > /home/8popugaev/etc/nginx/blockips.conf && /etc/init.d/nginx reload

/etc/init.d/nginx reload замени на команду, которая у тебя там заставляет nginx перечитать конфиги.

Запускай по крону раз в N минут (хоть раз в секунду, все зависит от размера лога). Еще вариант - добавить в grep выборку по времени если лог слишком большой и плясать от этого.

Для того чтоб сделать реальный реалтайм потребуется больше плясок с бубном и, желательно, специализированные решения. Не думаю что тебе это нужно.

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от Spoofing

а можно вопрос? что такого привлекательного в вашем сайте, что кому-то до него есть дело? как мне раскрутить свой ЖЖ, чтобы его тоже хотели ддосить?

почту свою указывал там выше, если действительно интересно, пишите на почту, ответу. Но сразу скажу - сайт не adult тематики, никакой раскрутки для сайта не делал вообще никогда, ддосить начинают рано или поздно любой сайт по мере накопления уников до нескольких тысяч в день, плюс как правило имеются другие причины для этого.

vosempopugaev
() автор топика
Ответ на: комментарий от Zmicier

Пардон, но вы какую-то ерунду, по-моему, делаете. Вы думаете, nginx умеет только в журнал юзерагент писать, а блокировать по нему — нет?

    if ($http_user_agent ~ "MirrorAgent") {
        return 403;
    }
— ну или как-то так, я навскидку могу накосячить в синтаксисе.

return 403 создает нагрузку на сервер гораздо больше чем простое deny, поэтому это подходит только как промежуточное решение

vosempopugaev
() автор топика
Ответ на: комментарий от alozovskoy

Такой скрипт раз в секунду, возможно будет эффективнее, чем DDoS.

dexitry
()
Ответ на: комментарий от alozovskoy
grep "MirrorAgent\/2.2" /var/log/var/log/sitename.org.access_log | awk '{print "deny "$1}' | uniq > /home/8popugaev/etc/nginx/blockips.conf && /etc/init.d/nginx reload

/etc/init.d/nginx reload замени на команду, которая у тебя там заставляет nginx перечитать конфиги.

Запускай по крону раз в N минут (хоть раз в секунду, все зависит от размера лога). Еще вариант - добавить в grep выборку по времени если лог слишком большой и плясать от этого.

Для того чтоб сделать реальный реалтайм потребуется больше плясок с бубном и, желательно, специализированные решения. Не думаю что тебе это нужно.

доступа к крону нет, со всем должен справляться скрипт, и да, нужен реальный реалтайм, пусть даже он будет примитивным (просто в виде запущенного скрипта в консоли), плюс, логи за считанные минуты достигают размеров в сотни мегабайт (за пол дня больше гига), возможно в скрипте стоит заюзать tail?

Там как раз для тебя решение, надо только совсем немного поправить

проблема как раз в том, что в bash я почти ночь, подправить не смогу

vosempopugaev
() автор топика

Неправильно ты, Дядя Фёдор, бутерброд ешь.
Такой «дидос» думаю можно отбить банальной фильтрацией по user agent, что-то типа

if ($http_user_agent ~* MirrorAgent) {
            return 403;
}

и/или сделать limit_conn/limit_req, если nginx собран с этим модулем: http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

Reinar
()
Ответ на: комментарий от vosempopugaev

Ох, тут выше уже написали.

return 403 создает нагрузку на сервер гораздо больше чем простое deny, поэтому это подходит только как промежуточное решение

А ты попробуй.
Думаю если бы речь шла о какой-то нагрузке, то ты б вряд ли смог сидеть и смотреть в access.log

Reinar
()
Ответ на: комментарий от Reinar

Ох, тут выше уже написали.

return 403 создает нагрузку на сервер гораздо больше чем простое deny, поэтому это подходит только как промежуточное решение

А ты попробуй. Думаю если бы речь шла о какой-то нагрузке, то ты б вряд ли смог сидеть и смотреть в access.log

уже пробовали стопиццот раз, return 403 помогает лишь отчасти, а deny спасает полностью.

vosempopugaev
() автор топика
Ответ на: комментарий от vosempopugaev

return 403 создает нагрузку на сервер гораздо больше чем простое deny

Если бы это было верным, то и написали бы:

    if ($http_user_agent ~ "MirrorAgent") {
        deny all;
    }

Но вы, конечно, хотели сказать, что проверка юзерагента создает гораздо большую нагрузку на nginx, чем проверка адреса? А в числах это как выражается, если не секрет?

Zmicier ★★★★★
()
Ответ на: комментарий от vosempopugaev
tail -F /var/log/sitename.org.access_log | awk '/MirrorAgent/ && h[$1]==0 {h[$1]=1; print "deny $1;" >> "/home/8popugaev/etc/nginx/blockips.conf"; fflush(); system("nginx reload")}'

### system("nginx reload") если нужно передергивать
  #              nginx при добавлении новых записей
### hash -- h[$1] для слежения за уникальностью IP

Не проверял, писал прямо тут

anonymous
()
Ответ на: комментарий от vosempopugaev

Доступа к крону нет, bash не умеете, досят какие-то школьники и при всем этом несколько тысяч уников в день? Что-то не так делаете.

Можно сделать реалтайм, но представьте какую нагрузку это даст при нормальном потоке логов.

tail -f /var/log/var/log/sitename.org.access_log | grep "MirrorAgent\/2.2" | awk '{print "deny "$1}' | while read line; do grep $line /home/8popugaev/etc/nginx/blockips.conf || (echo $line >> /home/8popugaev/etc/nginx/blockips.conf; /etc/init.d/nginx reload); done
alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Но вы, конечно, хотели сказать, что проверка юзерагента создает гораздо большую нагрузку на nginx, чем проверка адреса? А в числах это как выражается, если не секрет?

да, именно проверка юзерагента создает гораздо большую нагрузку на nginx, чем проверка адреса. Установлено это было опытным путем - с проверкой юзерагента сайт лежит, с deny работает. в первом случае access_log содержит тысячи записей с кодом возврата 403, с deny эти же запросы ложатся уже в error_log. Но это я ни к тому, что дело в return 403, а к тому что проверка юзерагента действительно работает, но работает намного хуже, чем простое deny.

vosempopugaev
() автор топика
Ответ на: комментарий от alozovskoy

Точку с запятой потерял, поправил:

tail -f /var/log/var/log/sitename.org.access_log | grep "MirrorAgent\/2.2" | awk '{print "deny "$1";"}' | while read line; do grep $line /home/8popugaev/etc/nginx/blockips.conf || (echo $line >> /home/8popugaev/etc/nginx/blockips.conf; /etc/init.d/nginx reload); done
alozovskoy ★★★★★
()
Ответ на: комментарий от anonymous
tail -F /var/log/sitename.org.access_log | awk '/MirrorAgent/ && h[$1]==0 {h[$1]=1; print "deny $1;" >> "/home/8popugaev/etc/nginx/blockips.conf"; fflush(); system("nginx reload")}'

### system(«nginx reload») если нужно передергивать # nginx при добавлении новых записей ### hash — h[$1] для слежения за уникальностью IP Не проверял, писал прямо тут

отправьте мне номер свой, в течении часа проверю скрипт и отправлю деньги. спасибо за помощь!!!!!

vosempopugaev
() автор топика
Ответ на: комментарий от alozovskoy

Доступа к крону нет, bash не умеете, досят какие-то школьники и при всем этом несколько тысяч уников в день? Что-то не так делаете.

временно вывели сервер из обоймы ДЦ, сайты перевели к хостеру, раньше обслуживанием подобных вопросов специалисты ДЦ занимались, а тут врасплох застали ))

Точку с запятой потерял, поправил:

tail -f /var/log/var/log/sitename.org.access_log | grep "MirrorAgent\/2.2" | awk '{print "deny "$1";"}' | while read line; do grep $line /home/8popugaev/etc/nginx/blockips.conf || (echo $line >> /home/8popugaev/etc/nginx/blockips.conf; /etc/init.d/nginx reload); done

за работоспособный скрипт (проверю в течении часа) отправлю вам деньги тоже, отправьте мне свой номер плиз. И огромное спасибо!

vosempopugaev
() автор топика
Ответ на: комментарий от anonymous

Не надо оплаты, я достаточно хорошо обеспечен (зарплата > 4k$)

Большое вам человеческое спасибо!!!! Если как-то еще могу вас отблагодарить, стукните в личку (почта выше).

vosempopugaev
() автор топика
Ответ на: комментарий от Spoofing

как мне раскрутить свой ЖЖ, чтобы его тоже хотели ддосить?

Для начала, сделай дизайн нормальный. :P Чтобы глаза не вытекали от меню, хотя бы.
Кстати, почему RSS у тебя нету?

Jarvis
()

а зачем вы вообще отрубаете nginx`ом ? блек лист по IP делается всё-же на уровне файервола, да и то скорее это проблема хостинг-провайдера.

а на уровне httpd спамеров/ddos`еров лучше отправлять в black-hole - просто тупо не закрывать соединение, пока сами не сдохнут.

MKuznetsov ★★★★★
()
Ответ на: комментарий от vosempopugaev

уже пробовали стопиццот раз, return 403 помогает лишь отчасти, а deny спасает полностью.

Все правильно, ибо стандартные коды передают заголовки. У nginx-а для таких случаев есть нестандартный код — 444, который просто закрывает соединения молча.
В вашем случае это было бы практически тоже самое как и ваш скрипт, даже чуть быстрее, ибо вы больше потратите время на перезагрузку конфиги, особенно если кол-во IP адресов будет стремиться к бесконечности.
Ну и выше уже сказали — строго говоря это не совсем ваши проблемы. Если хостинг-компания не в состоянии решить этого — не стоит платить N деревянных за скрипт, стоит просто взять и приобрести адекватный хостинг.

znenyegvkby
()
Ответ на: комментарий от MKuznetsov

а зачем вы вообще отрубаете nginx`ом ? блек лист по IP делается всё-же на уровне файервола, да и то скорее это проблема хостинг-провайдера.

во-первых, на виртуальном хостинге я не могу управлять файрволом, т.к. я использую сервер не монопольно, а делю его с другими пользователями. а во-вторых, ничтожно малое количество хостинг-провайдеров предоставляют хостинг с бесплатной анти-ддос защитой, и то, качество этой защиты там весьма сомнительное, а там, где имеется платная нормальная защита, там ценник сразу взлетает раз в 10.

а на уровне httpd спамеров/ddos`еров лучше отправлять в black-hole - просто тупо не закрывать соединение, пока сами не сдохнут.

можно подробнее об этом

vosempopugaev
() автор топика
Ответ на: комментарий от vosempopugaev

Наверное нельзя, покрутить тебе все равно не дадут. Ну собственно в очередной раз, так как прозвучали волшебные слова «виртуальный хостинг» - ЭТО НЕ ТВОЯ ПРОБЛЕМА. Меняй хостинг, твой сказочные жлобы

anonymous
()
Ответ на: комментарий от znenyegvkby

Все правильно, ибо стандартные коды передают заголовки. У nginx-а для таких случаев есть нестандартный код — 444, который просто закрывает соединения молча.

хмм, а вот это уже интересно... то есть, следующее правило:

if ($http_user_agent ~ "MirrorAgent") {
        return 444;
    }
будет быстрее, чем:
if ($http_user_agent ~ "MirrorAgent") {
        return 403;
    }
?
а почему бы тогда просто не написать:
 if ($http_user_agent ~ "MirrorAgent") {
        deny all;
    }
?
в return 444 есть какая-то особая фишка?
я, честно говоря, вообще не принимал во внимание, что стандартные коды, передавая заголовки, создают нагрузку на nginx. я думал, что такую нагрузку создает только проверка юзерагента.

vosempopugaev
() автор топика
Ответ на: комментарий от anonymous

да там никакой не ддос, там на вебсайтик ТС-а пришёл конкурент конкурировать честную конкурентную конкуренцию, как это принято у уважаемых конкурентов. У ТС-а виртуалочка за триста рублей в месяц, которая теперь жрёт ресурсы сервера как не в себя (в смысле аж 20 коннектов в секунду!). Другой хостинг за те же деньги даст ТС-у ту же самую виртуалочку и так же будет жаловаться на то что ТС съел все ресурсы. Поэтому выход действительно добавлять ip-шники в баню да и всё (ага, прямо все три с половиной штуки: домашний ip конкурента, рабочий ip конкурента и ещё те которые mts/beeline/megafon конкуренту динамически выделяют).

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

угу ток ip с лога принадлежит at&t, там все в поряде с атакой, стоит отнестись с уважением. Спамеры к сожалению уже не те и действительно юзают пулы страны где живут, так сказать срут там где едят, но это не тот случай.

А вот подумать над целевой аудиторией и провести анализ атаки может и стоит, выкинуть на время неинтересные регионы вошедшие в атаку.

anonymous
()
Ответ на: комментарий от vosempopugaev

в return 444 есть какая-то особая фишка?

Особая.
http://nginx.org/en/docs/http/request_processing.html

Here, the server name is set to an empty string that will match requests without the “Host” header field, and a special nginx’s non-standard code 444 is returned that closes the connection.

Нестандартный код 444 создан специально для того чтобы дать nginx команду закрыть соединение без каких-либо левых накладных расходов. При любых других кодах вы получаете накладной расход как правило 116 или 106 байт, не скажу точно ибо не помню. В интернете полно инфы по 444, посмотрите сами.

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Только в location.

Извиняюсь за дезинформацию, перегнул палку. Конечно же, deny наряду с allow разрешены в server, location, http и limit_except. Область видимости для директивы return — location, if и server.

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

И deny запрещен в конструкции if.

не знал этого, спасибо.

vosempopugaev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.