Как IP ограничить доступ к сайту в IIS8,5 (Windows 2012R2)
Я прочитал это, чтобы ограничить IP-адрес веб-сайта в IIS8, чтобы разрешить только один или несколько IP-адресов и запретить всем остальным, вы делаете это:
- Установите "Доступ для неуказанных клиентов" на "Запретить"
- Добавить IP-адрес для "Разрешить"
(как указано на скриншоте ниже)
Однако, когда я делаю это (как указано на скриншоте ниже), я все еще могу получить доступ к сайту с других IP-адресов.
Чего здесь не хватает? Есть ли что-то еще, что нужно сделать?
Я попробовал iisreset и страница не кэшируется браузером на тестовых машинах, которые не должны иметь доступа.
5 ответов
Если IP Security в IIS Windows Features установлен, вы можете добавить это в ваш 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>
Где XXXX - это IP-адрес, который вы хотите разрешить (добавьте такую строку для каждого IP или IP-подсети, которую вы хотите разрешить)
Заслуживает внимания тот факт, что документация, по-видимому, пропускает allow ="true" и любое упоминание о требовании разрешить делегирование этой функции. Спасибо @Summit за этот совет здесь
У вас есть прокси-сервер между клиентами и вашим сервером IIS? В журналах IIS вы можете указать, с какого IP идет ваш клиент.
Я нашел решение для моей ситуации.
СИТУАЦИЯ: Необходимо заблокировать IP-адреса в сети, но разрешить IIS доступ к веб-сайту для локальных приложений сервера. Случайный индивидуальный и общий доступ к подсети на веб-сайте IIS.
ПРОБЛЕМА. Установка "Изменить параметры" на "Запретить" не работает должным образом. Это не относится к списку "Разрешить". Ничто, локальное или сетевое, не имеет доступа к размещенному веб-сайту.
ВОЗМОЖНОЕ РЕШЕНИЕ: оставьте "Редактировать настройки функций" в "Разрешить". Последняя запись в списке "Разрешить / Запретить" - "Запретить" для полной подсети. Запись "Разрешить" для IP-адреса локального сервера предшествует подсети "Запретить". Любые отдельные компьютеры в подсети, которым разрешен доступ, имеют записи "Разрешить", предшествующие "Запретить" для полной подсети.
Действия по ограничению IP-адресов на уровне файлов в IIS 7 и выше
В диспетчере IIS-> в представлении "Содержимое" выделите конкретный файл-> нажмите "Переключиться на представление компонентов" на панели "Действия" -> в представлении "Функции" дважды щелкните "IP-адрес и ограничения домена", а затем установите ограничение
Я думаю, что это работает и с классическими ASP-страницами.