Добавление исключения к базовой проверке подлинности nginx HTTP в зависимости от нахождения в локальной сети

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

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

После того, как изначально пытался использовать allow а также deny директивы, я вместо этого был убежден пользователем переполнения стека вместо того, чтобы использовать geo, Я добился прогресса, но столкнулся с неприятной проблемой. Кажется, я не могу сделать исключение для диапазона IP-адресов 192.168.1.1-192.168.1.255.

Чтобы показать, что я делал, я добавлю нижеприведенный фрагмент с диапазонами адресов, а затем объясню дальше.

geo $authentication {
   default "Authentication required";
   127.0.0.1 "off";
   192.168.1.0/24 "off";
   10.8.0.0/24 "off";
   78.432.xx.xx/0 "off";
   0.0.0.0/0 "off"
}

server {
    location / {
        auth_basic $authentication;
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Я закомментировал все диапазоны IP-адресов (кроме 127.0.0.1), и вот что происходит в каждом сценарии:

  • Если я оставляю все комментарии, при доступе к веб-странице меня сначала запрашивают учетные данные, как и ожидалось
  • Если я раскомментирую 0.0.0.0/0 Я могу подключиться к странице без учетных данных, как ожидалось.
  • Если я раскомментирую 78.432.xx.xx/0 (это мой реальный публичный адрес, отредактированный), я могу получить доступ к странице без учетных данных, как ожидалось.
  • Если я раскомментирую 10.8.0.0/24 (это IP-адреса, которые назначаются пользователям при использовании нашего VPN) при подключении к VPN и, следовательно, назначаемый адрес 10.8.0.5при доступе к веб-странице меня запрашивают учетные данные, чего я не ожидал.
  • Если я раскомментирую 192.168.1.0/24при доступе к веб-странице меня запрашивают учетные данные, чего я не ожидал. Обратите внимание, что мой локальный IP-адрес 192.168.1.22,

Я могу видеть при доступе к странице это из журналов nginx:

78.432.xx.xx - - [23/Jan/2018:13:58:57 +0000] "GET / HTTP/1.1" 401 195 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"

Это говорит о том, что nginx правильно определяет мой внешний IP-адрес и запрашивает учетные данные на его основе, но запись для внутренних IP-адресов не оказывает влияния. Это подтверждается тем, что если я вхожу 192.168.1.102 в браузере вместо доменного имени я могу получить доступ без учетных данных.

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

Вопрос в том, как сказать nginx, чтобы он пропускал аутентификацию, если он обнаруживает локальный IP-адрес?

0 ответов

Другие вопросы по тегам