Можно ли сделать часть сайта в IIS доступной для просмотра только с localhost?
Вопрос
У нас есть веб-сервер, работающий под управлением IIS.Возможно, мы хотели бы завести общий блог или что-то в этом роде, чтобы отслеживать информацию.Из-за проблем с безопасностью мы бы хотели, чтобы эта часть была доступна для просмотра только с локального хостинга, поэтому людям приходится подключаться удаленно, чтобы использовать ее.
Итак, повторяю мой вопрос, можно ли сделать часть веб-сайта доступной для просмотра только с локального хостинга?
Решение
В IIS6 вы можете вызвать свойства для Интернета и перейти на вкладку безопасность каталога.Нажмите кнопку в середине вкладки, чтобы отредактировать IP-адрес и доменные ограничения.На этой вкладке укажите все компьютеры как запрещенные, затем добавьте исключение для IP-адресов, которым вы хотите разрешить доступ к этому сайту.
Я не уверен, как настроить это на IIS7.Я искал, но не смог найти его, если я найду его, я отредактирую этот ответ.
Редактировать: Настройка IIS7
- Джош
Другие советы
Для кого-то, кто делает это в IIS 8
/ Windows 2012
1) В Диспетчер серверов
перейдите в Управление, добавление ролей и компонентов
, Далее, Далее (перейдите в Роли сервера
), выполните прокрутку вниз до Веб-сервер (IIS)
, разверните эту строку, затем разверните Веб-сервер
и, наконец, разверните Безопасность
. Убедитесь, что установлены IP-адреса и ограничения домена .
2) В IIS Manager
перейдите к папке, которую вы хотите защитить, и щелкните левой кнопкой мыши, чтобы выбрать ее. В Просмотр функций
этой папки выберите IP-адреса и ограничения домена . В Действия
выберите Изменить настройки функций
. Измените 'Доступ для неуказанных клиентов:'
на 'Deny'
, затем OK.
3) Наконец, перейдите в «Добавить разрешенную запись»
в меню Action
. Введите конкретный IP-адрес вашего сервера.
Теперь доступ разрешен только запросам, поступающим с вашего сервера. Или любой сервер, который разделяет этот IP-адрес. Таким образом, в небольшой сети офис может обмениваться IP-адресами между всеми компьютерами в этих офисах, чтобы все эти компьютеры могли получить доступ к этой папке.
И последнее, но не менее важное: помните, что если ваша сеть имеет динамический IP-адрес, то если этот IP-адрес изменится, вы откроете папку администратора блога тому, кто использует этот IP-адрес сейчас. Кроме того, все пользователи с этим новым IP-адресом потеряют доступ к этой папке ...
Если кто-то захочет сделать это в командной строке, похоже, это работает на IIS 7 +
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='0',allowed='False']" /commit:apphost
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='127.0.0.1',allowed='True']" /commit:apphost
Сначала я хотел сделать это в web.config, чтобы упростить распространение, и похоже, что может сработать следующее:
<security>
<ipSecurity allowUnlisted="false"> <!-- this line blocks everybody, except those listed below -->
<clear/> <!-- removes all upstream restrictions -->
<add ipAddress="127.0.0.1" allowed="true"/> <!-- allow requests from the local machine -->
</ipSecurity>
</security>
но поскольку вам все равно нужно было разблокировать функцию в центральном конфиге IIS, не было никакого преимущества в том, чтобы вносить изменения напрямую с помощью первых команд.
Вы также можете использовать привязки вместо ограничений IP. Если вы редактируете привязки для веб-сайта, доступ к которому хотите ограничить, вы можете выбрать, по какому IP-адресу сайт доступен. Если вы установите IP-адрес 127.0.0.1, то сайт отвечает только на этот IP-адрес, и этот IP-адрес, конечно, будет работать только локально на компьютере.
Я проверял это с помощью IIS 8.5.
В зависимости от того, что именно вы хотите сделать, если неавторизованный пользователь попытается его посетить.
Вы можете попытаться настроить определенный раздел как виртуальный каталог, а затем запретить просмотр анонимным пользователям. Однако им будет предложено войти в систему, и если они смогут войти в систему, они увидят ее.
Судя по параметрам, представленным в IIS MMC, виртуальный каталог также может быть доступен только для определенных IP-диапазонов. Вы можете заблокировать всех, кроме 127.0.0.1. Я не пробовал это, однако.
Вы можете предоставить или запретить доступ к сайту или папке с определенных IP-адресов к сайту или папке. В IIS перейдите в свойства для рассматриваемого сайта или папки.
(1) Нажмите на кнопку «Безопасность Diectory». Вкладка
(2) Нажмите «Изменить» в разделе «Ограничение IP-адресов и доменных имен». кадр. р>
(3) Нажмите «Отказано в доступе». (Это говорит IIS блокировать все IP, кроме тех, которые вы перечислили)
(4) Нажмите " Добавить ... "
(5) Нажмите "Один компьютер"
(6) Введите 127.0.0.1 (IP-адрес localhost)
Обратите внимание, что здесь лучше использовать IP-адрес (как я уже описал), а не имя домена, поскольку домены можно легко подделать с помощью файла hosts.
Я согласен с рекомендациями по использованию IIS " Безопасность каталогов " заблокировать все IP-адреса, кроме 127.0.0.1 (localhost).
Тем не менее, мне интересно, как эта стратегия требования пользователей к удаленному доступу может быть более безопасной. Разве не было бы безопаснее (а также намного проще) использовать стандартные механизмы проверки подлинности IIS, а не управлять ролями и разрешениями Windows на сервере?
Вы можете просто добавить этот .NET в начало страницы.
string MyWebServerName = currentContext.Request.ServerVariables["SERVER_NAME"];
if ( MyWebServerName == "127.0.0.1" || MyWebServerName == "localhost" )
{
// the user is local
}
else
{
// the user is NOT local
}