Настройка WebDAV с помощью фильтрации запросов
Введение
Корпорация Майкрософт выпустила новый модуль расширения WebDAV, который был полностью перезаписан для службы IIS 7.0 (IIS 7.0) в Windows Server® 2008. Этот новый модуль расширения WebDAV включал множество новых функций, позволяющих веб-авторам публиковать содержимое лучше, чем раньше, и предлагает веб-администраторам больше параметров безопасности и конфигурации. Корпорация Майкрософт выпустила обновление модуля расширения WebDAV для Windows Server® 2008, которое обеспечивает поддержку общих и эксклюзивных блокировок для предотвращения потерянных обновлений из-за перезаписи.
IIS 7.0 предоставляет несколько новых функций безопасности, включая новые функции фильтрации запросов IIS 7.0. Для пользователей IIS, знакомых с UrlScan из предыдущих версий IIS, функция фильтрации запросов в IIS 7.0 похожа на встроенную функцию URLScan.
Новый модуль WebDAV и фильтрация запросов были разработаны для совместной работы, и в этом документе описывается настройка параметров фильтрации запросов, связанных с WebDAV, вместе с параметрами WebDAV для настройки безопасной среды публикации. Обратите внимание, что при использовании пользовательского интерфейса диспетчера IIS для настройки WebDAV параметры фильтрации запросов автоматически обновляются, и вам не нужно выполнять действия, описанные в этой статье.
Необходимые компоненты
Для выполнения процедур в этой статье требуются следующие элементы:
На сервере должна быть установлена служба IIS 7.0, и необходимо настроить следующее:
- Веб-сайт по умолчанию, созданный установкой IIS 7.0, по-прежнему должен существовать.
- Необходимо установить функцию фильтрации запросов.
Необходимо установить новый модуль расширения WebDAV. Сведения об установке нового модуля WebDAV см. в следующем документе:
Знание того, как использовать AppCmd, полезно. Дополнительные сведения об использовании фильтрации запросов см. в следующем документе:
Примечание.
Необходимо убедиться, что вы выполните действия, описанные в этом документе, с помощью полных административных разрешений. Это лучше всего сделать с помощью одного из двух методов:
- Войдите на компьютер с помощью локальной учетной записи "администратор".
- Если вы вошли в систему с использованием учетной записи с правами администратора, не являющейся локальной учетной записью администратора, откройте диспетчер IIS и все сеансы командной строки с помощью параметра "Запуск от имени Администратор istrator".
Указанное выше условие является обязательным, так как компонент безопасности управления учетными записями пользователей (UAC) в Windows Server 2008 предотвратит административный доступ к параметрам конфигурации IIS 7.0. Дополнительные сведения об UAC см. в следующей документации:
Основные понятия фильтрации запросов
Фильтрация запросов в IIS 7.0 состоит из запросов фильтрации на основе следующих параметров:
- Расширения файлов
- Скрытые сегменты
- HTTP-команды
- Ограничения запросов
- Последовательности URL-адресов
Все эти функции фильтрации запросов могут повлиять на содержимое, отправленное или скачиваемое через WebDAV, но некоторые функции можно настроить для совместной работы с WebDAV.
В следующем списке описывается, какие функции можно настроить для работы с WebDAV:
Следующие функции всегда влияют на запросы WebDAV:
- Ограничения запросов
- Последовательности URL-адресов
Следующие функции влияют на запросы WebDAV по умолчанию, но их можно настроить для обхода запросов WebDAV:
- Расширения файлов
- Скрытые сегменты
- HTTP-команды
Например, можно настроить сервер для разрешения запросов, отличных от WebDAV, для файлов .htm и .php, блокируя доступ к файлам ".mdb" и "config", а запросы WebDAV по-прежнему разрешают доступ к заблокированным содержимому.
Примечание.
Для запросов WebDAV требуется проверка подлинности.
Параметры фильтрации запросов можно изменить с помощью одного из следующих методов:
- Использование пользовательского интерфейса, предоставленного в составе пакета Администратор istration для IIS 7.0
- Использование AppCmd из командной строки
- Редактирование файла applicationHost.config
- Использование Microsoft.Web. Администратор istration из приложения .NET или Windows PowerShell
Остальные сведения в этом пошаговом руководстве покажут, как использовать AppCmd из командной строки, а также показать, какие параметры конфигурации могут выглядеть в файле конфигурации applicationHost.config.
Примечание.
Этот документ не охватывает все функции, которые можно настроить с помощью фильтрации запросов. Сведения о настройке дополнительных параметров фильтрации запросов см. в следующем разделе:
Настройка фильтрации запросов и WebDAV
Фильтрация расширений файлов
Некоторые расширения файлов, такие как .config" и .asax, защищены коллекцией fileExtensions по умолчанию. Дополнительные записи можно добавить в список расширений файлов, чтобы разрешить или заблокировать их для HTTP-запросов, и вы можете контролировать, применяется ли этот список к запросам WebDAV. В этом примере вы будете использовать файлы AppCmd ".txt" от доступа, даже если они могут быть доступны обычно, и вы укажите, что запросы WebDAV смогут получить доступ ко всем заблокированным расширениям файлов.
Откройте командную строку с полными правами администратора и измените каталог в папку InetSrv:
cd "%WinDir%\System32\InetSrv"
Используйте следующий синтаксис для просмотра существующих правил фильтрации запросов:
AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
Блокировать доступ к файлам ".txt", добавив определенное расширение в коллекцию fileExtensions и указав false для разрешенного атрибута с помощью следующего синтаксиса:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
Разрешить WebDAV получить доступ ко всем заблокированным типам файлов, задав атрибут applyToWebDAV для коллекции fileExtensions значение false, используя следующий синтаксис:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
После выполнения описанных выше действий полученный код в разделе fileExtensions файла applicationHost.config должен выглядеть следующим образом:
<requestFiltering>
<fileExtensions applyToWebDAV="false">
<add fileExtension=".txt" allowed="false" />
</fileExtensions>
</requestFiltering>
Примечания:
Приведенные выше действия можно использовать для блокировки доступа к дополнительным расширениям файлов, добавив их в коллекцию fileExtensions, или изменить синтаксис, чтобы разрешить определенные файлы, указав значение true для разрешенного атрибута.
Вы можете заблокировать все неизвестные расширения файлов, задав атрибут allowUnlisted для коллекции fileExtensions значение false, используя следующий синтаксис:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
Примечание.
Если этот параметр задан, необходимо добавить каждое расширение, прежде чем получить доступ к нему с помощью запросов, отличных от WebDAV.
Приведенные выше действия можно использовать для блокировки доступа к запросам WebDAV, указав значение true для атрибута applyToWebDAV .
Фильтрация скрытых сегментов
Некоторые сегменты файлов, такие как web.config и "App_code", скрыты по умолчанию коллекцией запросов, отфильтровывая скрытыеSegments . Дополнительные записи можно добавить в список сегментов файлов, чтобы скрыть их для HTTP-запросов, и вы можете контролировать, применяется ли этот список к запросам WebDAV. В этом примере вы будете использовать AppCmd, чтобы скрыть сегмент "include" от HTTP-запросов, даже если он обычно будет видимым, и вы укажет, что запросы WebDAV смогут получить доступ ко всем скрытым сегментам файлов.
Откройте командную строку с полными правами администратора и измените каталог в папку InetSrv:
cd "%WinDir%\System32\InetSrv"
Блокировать доступ к сегменту include, добавив определенную запись в коллекцию hiddenSegments с помощью следующего синтаксиса:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
Разрешить WebDAV получить доступ ко всем заблокированным типам файлов, задав атрибут applyToWebDAV для коллекции hiddenSegments значение false, используя следующий синтаксис:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
После выполнения описанных выше действий полученный код в разделе hiddenSegments файла applicationHost.config должен выглядеть следующим образом:
<requestFiltering>
<hiddenSegments applyToWebDAV="false">
<add segment="include" />
</hiddenSegments>
</requestFiltering>
Примечания:
- Описанные выше действия можно использовать для скрытия дополнительных сегментов файлов, добавив их в коллекцию hiddenSegments .
- Приведенные выше действия можно использовать для блокировки доступа к запросам WebDAV, указав значение true для атрибута applyToWebDAV .
Фильтрация HTTP-команд
Коллекция команд фильтрации запросов по умолчанию позволяет сопоставлять все незаписанные HTTP-команды, даже если некоторые команды не могут быть сопоставлены с конкретными обработчиками HTTP. Можно указать, какие http-команды должны быть разрешены или заблокированы, добавив записи в этот список, и вы можете контролировать, применяется ли этот список к запросам WebDAV. В этом примере вы будете использовать AppCmd для блокировки команды DELETE и PUT из HTTP-запросов, и вы укажете, что запросы WebDAV смогут использовать эти команды.
Откройте командную строку с полными правами администратора и измените каталог в папку InetSrv:
cd "%WinDir%\System32\InetSrv"
Блокировать доступ к команде DELETE, добавив определенную запись в коллекцию команд и указав false для разрешенного атрибута с помощью следующего синтаксиса:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
Блокировать доступ к команде PUT, добавив другую конкретную запись в коллекцию команд и указав false для разрешенного атрибута с помощью следующего синтаксиса:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
Разрешить WebDAV получить доступ ко всем HTTP-командам, задав атрибут applyToWebDAV для коллекции команд значение false, используя следующий синтаксис:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
После выполнения описанных выше действий полученный код в разделе команд файла applicationHost.config должен выглядеть следующим образом:
<requestFiltering>
<verbs applyToWebDAV="false">
<add verb="DELETE" allowed="false" />
<add verb="PUT" allowed="false" />
</verbs>
</requestFiltering>
Примечания:
Описанные выше действия можно использовать для блокировки дополнительных http-команд, добавив их в коллекцию команд, или изменить синтаксис, чтобы разрешить определенные команды, указав значение true для разрешенного атрибута.
Вы можете заблокировать все неизвестные HTTP-команды, задав атрибут allowUnlisted для коллекции команд значение false, используя следующий синтаксис:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
Примечание.
Чтобы задать этот параметр, необходимо добавить каждую http-команду, прежде чем получить доступ к нему с помощью запросов, отличных от WebDAV.
Приведенные выше действия можно использовать для блокировки доступа к запросам WebDAV, указав значение true для атрибута applyToWebDAV .
Итоги
В этом документе показаны следующие понятия:
Дополнительные сведения
Дополнительные сведения об использовании WebDAV см. в следующих статьях: