Настройка WebDAV на базе Apache

Справочник системного администратора

WebDAV – расширение протокола HTTP(S) предназначенное для редактирования и управления файлами, размещенными на веб-серверах. С его помощью легко можно организовать нечто похожее на облачный сетевой диск, который будет работать из любого места, где есть доступ в интернет. В данной статье мы рассмотрим настройку WebDAV на базе популярного веб-сервера Apache.

Прежде всего обозначим некоторые нюансы при использовании WebDAV. Во первых, в настоящее время использовать WebDAV поверх небезопасного протокола HTTP не рекомендуется, разве что в пределах закрытой локальной сети или через VPN. Во вторых, не следует использовать Basic-аутентификацию, которая предает пароль по сети в открытом виде, особенно в связке с HTTP, к тому же современные ОС не поддерживают такой тандем.

Для нормальной работы нам понадобится веб-сервер на базе Apache с настроенным SSL и валидным сертификатом. Как настроить такой сервер я рассказывал в этой статье статье, как получить валидный SSL сертификат для такого сервера можно почитать здесь.

Прежде всего определимся с директорией, в которой будут располагаться файлы доступные через WebDAV. Так как WebDAV является расширением веб-сервера, то и данные логично разместить в /var/www, создадим там директорию webdav и назначим ее владельцем веб-сервер:

mkdir /var/www/webdav
chown www-data:www-data /var/www/webdav

Затем откроем файл конфигурации виртуального хоста, в котором мы будет подключать WebDAV, например /etc/apache2/sites-available/domain.org-ssl.conf и добавим в самый его конец, перед закрывающим тегом </VirtualHost> следующие строки:

Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "dav"
AuthUserFile /etc/davpasswd
Require valid-user
</Directory>

Директива Alias позволяет связать запросы к ресурсу https://domain.org/webdav с папкой /var/www/webdav несмотря на то, что она находится вне корневой директории сайта. Секция Directory задает настройки, применяемые к данной директории.

DAV On – включает WebDAV
AuthType Digest – задает тип аутентификации. Digest-аутентификация не использует пароли в открытом виде, храня и передавая MD5-хеш.
AuthName “webdav” – имя области аутентификации, можно выбрать на собственное усмотрение
AuthUserFile /etc/davpasswd – путь к файлу с паролями пользователей
Require valid-user – разрешать доступ только прошедшим аутентификацию пользователям

Теперь создадим пользователя для работы с WebDAV, для этого используем утилиту htdigest:

htdigest -c /etc/davpasswd webdav admin

Ключ -с указывает на необходимость создать файл паролей. Если файл уже существует, то он будет перезаписан. После имени файла с паролями указывается область аутентификации, в нашем случае – webdav, и имя пользователя, в нашем случае – admin, после чего необходимо задать пароль.

Второго и следующего пользователя создаем командой:

htdigest /etc/davpasswd webdav username

Файл паролей имеет следующую структуру:

admin:dav:$apr1$/L5VUvkt$OrIVgVPubj/zrYvVwQO7s1
username:dav:$apr1$2BiawHfu$k4laXf6xqKksN2/3Yip37/

Первой частью строки идет имя, затем область аутентификации и затем MD5-хеш пароля. Для удаления пользователя просто удалите относящуюся к нему строку.

После чего необходимо подключить необходимые модули Apache:

a2enmod dav
a2enmod dav_fs
a2enmod auth_digest

Проверим конфигурацию на ошибки и перезапустим сервер:

apachectl -t
service apache2 restart

Для проверки наберите в браузере https://domain.org/webdav и вы должны увидеть форму аутентификации, авторизовавшись вы увидите содержимое директории.

Для подключения WebDAV в файловую систему Windows просто выполните подключение сетевого диска, указав в качестве адреса https://domain.org/webdav и затем установите флажки “Восстанавливать подключение при входе в систему” и “Использовать другие учетные данные”.

Tags: