Использование WebDAV с IIS

Опубликовано: 25 Марта, 2023

Традиционным методом загрузки контента на веб-сервер является протокол передачи файлов (FTP), но этот подход имеет свои недостатки:

  • Использование FTP требует, чтобы вы открыли дополнительные порты на брандмауэре периметра, и это может увеличить поверхность атаки вашей сети и сделать ее более уязвимой для проникновения злоумышленников. Это явно нежелательно с точки зрения обеспечения безопасности вашей сети.
  • FTP не имеет механизма блокировки файлов, поэтому два пользователя могут одновременно загружать разные версии одного и того же файла, что приводит к перезаписи одного. Это может означать потерю времени на устранение неполадок, почему загруженный файл отличается от того, что вы ожидаете.
  • Подход FTP означает, что вы должны редактировать свой контент локально на клиенте. Другими словами, чтобы отредактировать страницу, уже находящуюся на веб-сервере, вам придется загрузить ее на клиент, отредактировать там, а затем снова загрузить на веб-сервер. Это трудоемкий и неэффективный подход к управлению контентом.

Решением этих проблем является WebDAV, протокол, используемый для публикации и управления контентом на веб-серверах. WebDAV является расширением протокола HTTP/1.1, описанного в RFC 2518 и 3253. WebDAV преодолевает три проблемы, описанные выше, следующим образом:

  • WebDAV использует порт 80, тот же порт, который используется HTTP для доступа в Интернет. Таким образом, использование WebDAV означает, что вам не нужно открывать дополнительные порты в брандмауэре.
  • WebDAV позволяет только одному пользователю одновременно изменять файл, позволяя нескольким пользователям читать его. Это позволяет блокировать файлы во время их редактирования, предотвращая неожиданные изменения.
  • WebDAV позволяет редактировать файлы на сервере вместо того, чтобы сначала загружать их клиенту. Редактировать файлы удаленно с помощью WebDAV так же просто, как если бы они присутствовали локально, и весь процесс прозрачен для производителя контента.

Давайте рассмотрим шаги, необходимые для включения WebDAV на компьютере IIS, а затем покажем, как публиковать и удаленно изменять содержимое с помощью WebDAV. В качестве веб-сервера я использую компьютер с Windows Server 2003 с установленным IIS 6, и для простоты мы будем публиковать содержимое на веб-сайте по умолчанию.

Установите и включите WebDAV на сервере

Сначала нам нужно установить WebDAV на сервер. Обратите внимание, что когда вы продвигаете компьютер Windows Server 2003 до роли сервера приложений, он устанавливает различные компоненты IIS 6, но WebDAV не является одним из этих установленных компонентов. Это отличается от более ранней платформы Windows 2000 Server, где установка IIS 5 также автоматически устанавливала WebDAV. Чтобы установить WebDAV на компьютере с IIS 6, используйте «Установка и удаление программ» на панели управления и запустите мастер компонентов Windows. Вы можете найти WebDAV в разделе Application Server | Информационные службы Интернета | Всемирная веб-служба | Публикация WebDAV:

После установки WebDAV необходимо убедиться, что он включен. Чтобы убедиться в этом, проверьте параметр WebDAV в узле «Расширения веб-служб» в диспетчере IIS:

Обратите внимание, что когда вы разрешаете расширение WebDAV (httpext.dll), вы разрешаете его для всех веб-сайтов на вашем сервере. IIS, к сожалению, не позволяет включать WebDAV для каждого сайта отдельно.

Включить WebDAV на клиенте

Следующим шагом является включение WebDAV на клиентских компьютерах, которые будут использоваться для создания и управления контентом для вашего веб-сайта. В Windows XP есть встроенный клиент WebDAV, который не нужно устанавливать, его нужно только включить. Чтобы включить WebDAV в XP, откройте консоль «Службы» в разделе «Администрирование», найдите службу WebClient и дважды щелкните эту службу, чтобы открыть страницу ее свойств:

Измените Тип запуска на Автоматический, затем нажмите кнопку Пуск, чтобы запустить службу. Вы готовы начать публикацию контента на своем веб-сервере.

Кончик:
WebDAV также поддерживается Windows 2000 с установленным Internet Explorer 5 или более поздней версии, а также Office 2000 или более поздней версии. Однако некоторые из этих более ранних платформ не полностью поддерживают все функции WebDAV, поддерживаемые Windows Server 2003 и Windows XP.

Подготовка веб-сервера к публикации

Теперь давайте еще немного подготовим наш веб-сервер, чтобы подготовить его к публикации контента от клиента. Во-первых, мы создадим новый виртуальный каталог, в который мы будем помещать наш контент. Я создал локальный виртуальный каталог с именем Budgets, который является псевдонимом каталога C:Finance на веб-сервере:

Кончик:
Чтобы узнать, как создавать и настраивать виртуальные каталоги на веб-сервере IIS, см. мою более раннюю статью под названием «Создание и настройка веб-сайтов в Windows Server 2003» на сайте WindowsNetworking.com.

Теперь давайте настроим веб-разрешения для этого виртуального каталога, чтобы пользователи могли публиковать контент. Это делается на вкладке «Виртуальный каталог» листа свойств виртуального каталога:

Как видно из рисунка, по умолчанию для виртуального каталога разрешено только чтение. Это не сработает, так как это означает, что пользователи смогут читать контент в каталоге, но не смогут загружать или редактировать контент. Чтобы публиковать контент с помощью WebDAV, вы должны включить следующие веб-разрешения для каталога:

  • Чтение — позволяет пользователям читать то, что было опубликовано на сервере.
  • Запись — позволяет пользователям загружать новый контент на сервер и редактировать существующий контент на сервере.
  • Список каталогов — позволяет пользователям просматривать список опубликованных файлов на сервере, чтобы они могли выбрать тот, который они хотят просмотреть или отредактировать.

Обратите внимание, что включение разрешения на запись для виртуального каталога может представлять собой брешь в безопасности вашего веб-сервера, поскольку разрешение на запись в Интернете позволяет любому загружать содержимое на ваш сервер. Поэтому крайне важно, чтобы вы выполнили следующий и последний шаг процедуры, а именно настроили разрешения NTFS на своем веб-сервере, чтобы ограничить доступ к каталогу содержимого. Для этого откройте проводник Windows, откройте лист свойств для вашего каталога содержимого (C:Finance) и выберите вкладку «Безопасность»:

Обратите внимание, что у группы «Пользователи» есть разрешения «Чтение», «Чтение и выполнение» и «Список содержимого папки». Это необходимо для того, чтобы пользователи WebDAV могли записывать и изменять содержимое на веб-сервере. Есть также два дополнительных специальных разрешения, которые есть у группы «Пользователи»:

  • Создание файлов/запись данных
  • Создание папок / добавление данных

Эти разрешения также необходимы для публикации WebDAV, поэтому не меняйте их.

Поскольку группа «Пользователи» здесь является локальной группой (веб-сервер является рядовым сервером, принадлежащим домену), ее членство включает группу «Пользователи домена», поэтому это означает, что любой пользователь в домене имеет право публиковать контент на вашем сервере с помощью WebDAV. Если это не то, что вам нужно, удалите ACE для группы «Пользователи» из ACL для вашего каталога содержимого на рисунке выше и добавьте другую группу, в состав которой входят только те пользователи, которым разрешено публиковать, а затем дайте этой новой группе те же разрешения, что и у пользователей выше.

Еще один совет о разрешениях:
Если ваш веб-сервер является общедоступным (находится в вашей демилитаризованной зоне) в Интернете, вам следует добавить гостевую учетную запись Интернета (IUSR_servername) в ACL для вашего каталога контента и назначить этой группе разрешение «Запретить запись». Таким образом, анонимные пользователи в Интернете смогут читать содержимое каталога, но не смогут его изменять.

Публикация контента с помощью WebDAV

Давайте попробуем нашу установку и посмотрим, работает ли она. На клиентской машине XP у меня есть каталог C:Stuff с четырьмя файлами HTML:

Чтобы опубликовать эти файлы на своем веб-сервере, я выбираю Файл | Откройте в Internet Explorer на клиенте и введите URL-адрес виртуального каталога: http://server/Budgets, где «сервер» может быть именем, IP-адресом или DNS-именем моего веб-сервера. Ключевым моментом здесь является установка флажка «Открыть как веб-папку», так как это позволит мне использовать WebDAV для публикации в целевой папке на сервере:

Когда веб-папка открывается на удаленном сервере, она выглядит так:

Теперь я просто выбираю четыре HTML-файла в окне C:Stuff и перетаскиваю их в открытую веб-папку, и WebDAV делает свое дело. Чтобы убедиться, что файлы были опубликованы, я могу снова открыть тот же URL-адрес http://server/Budgets в Internet Explorer, но на этот раз как обычный веб-сайт (т. е. не выбирать опцию «Открыть как веб-папку»). Вот результат:

Последний совет:
если мне нужно часто открывать эту веб-папку для публикации контента, я могу использовать команду «Добавить сетевое окружение в сетевом окружении», чтобы создать ярлык для веб-папки http://server/Budgets, а затем просто скопировать файлы из моей локальной папки «Материалы» в веб-папку на удаленном компьютере. Если вы попробуете это, вы увидите, что вы даже можете использовать Блокнот для открытия и редактирования опубликованных страниц непосредственно на веб-сервере.