LINUX.ORG.RU
решено ФорумAdmin

блокировка подсети nginx

 


0

1

Добрый день!

пожалуйста, помогите разобраться. сейчас сайт блокирует 1 ип адрес, но должен блокировать всю подсеть 192.168.100.0/24

set $alowed yes; if ($http_x_forwarded_for = 192.168.100.25) { set $alowed no; } if ($alowed = no) { return 403; }

просто дописать /24 в конце адреса ни к чему не привело(

Лучше делайте не через if, а через модуль geo (задается в контексте http, если что). Будет где-то так:

geo $allowed {
    192.168.100.0/24 1;
    default 0;
}

И потом в нужном локейшене

if ($allowed) {return 403};

только переменную переименуйте, а то получается, если (разрешено) {вернуть 403} :D

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

а по другому никак? модуль геоИП уже задействован в конфиге, не хотелосьбы его трогать

вот прям ту конструкцию ни как нельзя фиксануть?

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

Так а в чем проблема его тронуть? Просто пропишите отдельную директиву, их можно делать сколько угодно и присваивать в разные переменные. Уже существующий конфиг вы не затронете.

Вы, конечно, можете сделать аналогичное с помощью map вот так:

map $http_x_forwarded_for $allowed {
    192.168.100.* 1;
    default 0;
}

Скорее всего это даже заработает (но это неточно), но зачем, если geo красивее?

l0stparadise ★★★★★
()

Если вам очень хочется if, то попробуйте

if ($http_x_forwarded_for ~ "^192.168.100.")

По идее должно работать.

Но if - зло, об этом пишут сами разработчики например вот тут и я бы советовал минимизировать число if'ов у вас в конфиге.

l0stparadise ★★★★★
()

Почему-бы не устанавливать IP из заголовка x-forwarded-for штатным модулем ngx_http_realip_module (https://nginx.org/ru/docs/http/ngx_http_realip_module.html) а дальше просто deny-ить?

Кто устанавливает заголовок x-forwarded-for? Ты ведь в курсе что по умолчанию если в запросе уже есть x-forwarded-for то IP с которого пришёл запрос добавляется к нему (кажется чрез запятую). Я даже не уверен что nginx валидирует хоть как-то содержимое этого заголовка. Так-что если хитрый хакир из сети 192.168.100.0/24 добавит в своё запрос заголовок X-Forwarded-For: admin-loh то проверка основанная на стравени срок или регэкспах может и провелиться

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

не, там это исключается, в смысле хакерская подмена.

а моглибы вы расписать, если не трудно, как ип адрес из $http_f_forwarded_for переделать в $realip ?

и не повлияет ли это на обратную отсылку пакетов?

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

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

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