Welcome! Log In Create A New Profile

Advanced

Re: secure_link + realip + if

Maxim Dounin
August 21, 2018 09:30PM
Hello!

On Tue, Aug 21, 2018 at 01:25:36AM +0700, Pavel wrote:

> В процессе использования появился вопрос по совместному
> использованию
> модулей ngx_http_secure_link_module и
> ngx_http_realip_module, с использованием
> проверки доступа через if (Да, "if is evil", но есть ли
> другой способ?).
>
> Ранее модуль ngx_http_secure_link_module использовался для
> проверки
> доступа в самостоятельной конфигурации, без realip_module.
> Теперь сервис переезжает за дополнительный прокси в целях
> защиты от DDOS,
> и для получения реального айпи браузера добавился
> ngx_http_realip_module.
>
> Проблема в следущем: если в одном локейшне используются
> два вышеуказанных
> модуля + директива if, то переопределение remote_addr не
> происходит.
> Если if не использовать - переопределение работает.

[...]

> server {
> listen 127.0.0.1:80;
> server_name vhost;
>
> root /tmp;
>
> location / {
> set_real_ip_from 127.0.0.1/32;
> real_ip_header X-Forwarded-For;
>
> secure_link $arg_st;
> secure_link_md5 "${remote_addr}_$uri";
> if ($secure_link = "") {
> return 403;
> }

В случае, если модуль realip включён на уровне location, он
работает после окончательного выбора конфигурации, частью какового
выбора являются директивы модуля rewrite. В результате в такой
конфигурации $remote_addr будет использоваться до переопределения
модулем realip.

Кроме того, ещё не изменённое значение переменной $remote_addr
закэшируется при первом обращении
(https://trac.nginx.org/nginx/ticket/603#comment:1),
и в результате будет казаться, что адрес клиента не переопределён
(на самом деле - переопределён, и скажем allow/deny сработают
правильно).

[...]

> Какие будут рекомендации?

Наиболее простое и правильное решение - указать set_real_ip_from на
уровне server. Тогда адрес клиента будет переопределяться сразу
после чтения заголовков запроса, и проблемы не будет.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

secure_link + realip + if

Pavel August 20, 2018 02:28PM

Re: secure_link + realip + if

Maxim Dounin August 21, 2018 09:30PM

Re: secure_link + realip + if

Pavel August 22, 2018 01:08AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 64
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready