Назад | Перейти на главную страницу

Как ограничить IP-доступ к веб-сайту в IIS8,5 (Windows 2012R2)

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

  1. Установите "Доступ для неопределенных клиентов" на "Запретить"
  2. Добавьте IP-адрес для «Разрешить»

(как указано на скриншоте ниже)

Однако, когда я это делаю (как указано на скриншоте ниже), я все еще могу получить доступ к сайту с других IP-адресов.

Чего здесь не хватает? Есть ли что-то еще, что нужно сделать?

Я попробовал iisreset, и страница не кэшируется браузером на тестовых машинах, у которых не должно быть доступа.

Если установлена ​​IP-безопасность в рамках компонентов IIS Windows, вы можете добавить это в свой web.config, чтобы заблокировать IP-адреса:

<location path="Default Web Site">
   <system.webServer>
      <security>
         <ipSecurity allowUnlisted="false"><!-- this line blocks everybody, except those listed below -->                
            <clear/> <!-- removes all upstream restrictions -->
            <add ipAddress="192.168.100.1" />
            <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" />
         </ipSecurity>
      </security>
   </system.webServer>
</location>

После много возиться, Я обнаружил, что у меня сработало следующее (IIS 8.5.X на win server 2012 R2)

Убедитесь, что функция включена для управления web.config

  • В IIS
  • Щелкните корневой сервер
  • Двойной клик Делегирование функций (под управлением)
  • Прокрутите вниз до Ограничения по IP-адресу и домену
  • Изменить на Читай пиши

(в моем случае это было только для чтения, что и было проблемой)

Затем отредактируйте web.config, чтобы включить

<system.webServer>
        <security>
            <!-- this line blocks everybody, except those listed below -->                
            <ipSecurity allowUnlisted="false">
                <!-- removes all upstream restrictions -->            
                <clear />
                <add ipAddress="X.X.X.X" allowed="true" />
                <add ipAddress="127.0.0.1" allowed="true" /> 
            </ipSecurity>
        </security>
</system.webServer>

Где X.X.X.X - это IP-адрес, который вы хотите разрешить (добавьте такую ​​строку для каждого IP-адреса или комбинации IP-подсетей, которую вы хотите разрешить)

Примечательный в документации отсутствует разрешено = "правда" и любое упоминание о требовании разрешить делегирование функции. Спасибо @Summit за этот совет Вот

Есть ли у вас прокси между клиентами и вашим сервером IIS? Вы можете показать в журналах IIS, с каким IP-адресом приходит ваш клиент.

Я нашел обходной путь для своей ситуации.

СИТУАЦИЯ: необходимо заблокировать IP-адреса в сети, но разрешить IIS доступ к веб-сайту для локальных приложений сервера. Периодический индивидуальный и общий доступ к веб-сайту IIS через подсети.

ПРОБЛЕМА: Установка для параметра «Изменить параметры функции» значения «Запретить» не работает должным образом. Он не соблюдает список «Разрешить». Ничто, локальное или сетевое, не имеет доступа к размещенному веб-сайту.

ВОЗМОЖНОЕ РЕШЕНИЕ: оставьте «Изменить параметры функции» на «Разрешить». Последняя запись в списке «Разрешить / Запретить» - «Запретить» для всей подсети. Запись «Разрешить» для IP локального сервера предшествует подсети «Запретить». Любые отдельные компьютеры в подсети, которым разрешен доступ, имеют записи «Разрешить», предшествующие «Запретить» для всей подсети.

Действия по ограничению IP-адресов на уровне файлов в IIS 7 и выше

В диспетчере IIS-> В представлении содержимого выделите конкретный файл-> Нажмите «Перейти к представлению функций» на панели действий-> В представлении функций дважды щелкните «Ограничения IP-адреса и домена», а затем установите ограничение

Я думаю, что это работает и с классическими страницами ASP.