Настройка Apache для WebDAV с SSL и RADIUS-аутентификацией
Задача и краткий обзор
Цель — запустить WebDAV на Apache через HTTPS и аутентифицировать пользователей через RADIUS (mod_auth_xradius). Ключевые шаги: сгенерировать SSL-ключ/сертификат (или подключить существующие), загрузить и включить модули DAV и auth_xradius, настроить DAVLockDB и виртуальный хост на 443 порту. Этот подход защищает трафик (TLS) и централизует аутентификацию.
Важно: WebDAV в открытом виде передаёт содержимое по сети; используйте TLS (SSL) всегда.
Требования и термины (одно предложение)
OpenSSL — инструмент для генерации ключей и CSR; DAV — WebDAV-модуль Apache; mod_auth_xradius — модуль для RADIUS-аутентификации; DAVLockDB — файл блокировок WebDAV.
Что нужно подготовить
- Доступ к серверу с установленным Apache (root или sudo).
- Пакет mod_dav и mod_dav_fs (либо компиляция Apache с –with-dav и –enable-dav-fs).
- Модуль mod_auth_xradius (установлен и скомпилирован для вашей версии Apache).
- Доступ к RADIUS-серверу (IP:порт, shared secret).
Генерация SSL-ключей и сертификата
Если у вас нет ключей, можно временно сгенерировать самоподписанные:
openssl genrsa -out webdav.mydomain.com.key 1024openssl req -new -key webdav.mydomain.com.key -out webdav.mydomain.com.csropenssl x509 -in webdav.mydomain.com.csr -out webdav.mydomain.com.crt -req -signkey webdav.mydomain.com.key -days 365Готовые файлы скопируйте в конфигурационную папку Apache (пример для RHEL/CentOS):
cp webdav.mydomain.com.key /etc/httpd/conf/cp webdav.mydomain.com.crt /etc/httpd/conf/Примечание: здесь ключ 1024 бита и срок 365 дней — для боевого сервера используйте как минимум 2048 бит и сертификат от доверенного CA.
Включение модулей в httpd.conf
Убедитесь, что загружены DAV-модули:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
Загрузите модуль mod_auth_xradius и настройте кеш и таймаут (в примере — 3600 секунд = 1 час):
LoadModule auth_xradius_module modules/mod_auth_xradius.so
AuthXRadiusCache dbm conf/authxcache
AuthXRadiusCacheTimeout 3600
Создайте базу блокировок для WebDAV:
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
Совместимость с клиентами WebDAV
Некоторые клиенты требуют особой обработки редиректов. Примеры правил для BrowserMatch:
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
Пример виртуального хоста для SSL (VirtualHost на 443)
Ниже — пример секции VirtualHost с включённым DAV и RADIUS-аутентификацией. Обратите внимание на параметры AuthXRadius* и Limit, которые контролируют методы HTTP.
NameVirtualHost *:443
ServerName webdav.mydomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProxyEngine on
SSLCertificateFile conf/webdav.mydomain.com.crt
SSLCertificateKeyFile conf/webdav.mydomain.com.key
Alias /webdav/ "/var/www/webdav/"
DAV on
AuthType Basic
AuthName "You must be authenticated by WiKID to Enter!"
AuthXRadiusAddServer "wikid_server_ip:1812" "webdav_shared_secret"
AuthXRadiusTimeout 7
AuthXRadiusRetries 2
require valid-user
Важно: если у вас DocumentRoot используется для публичных сайтов, применяйте Alias, как в примере, чтобы отделить WebDAV-контент.
Пример ограничения доступа по подпапкам
Если нужно ограничить права для отдельных подпапок (например, запись только для конкретных пользователей), добавьте дополнительные
NameVirtualHost *:443
ServerName webdav.mydomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProxyEngine on
SSLCertificateFile conf/webdav.mydomain.com.crt
SSLCertificateKeyFile conf/webdav.mydomain.com.key
Alias /webdav/ "/var/www/webdav/"
DAV on
AuthType Basic
AuthName "You must be authenticated by WiKID to Enter!"
AuthXRadiusAddServer "wikid_server_ip:1812" "webdav_shared_secret"
AuthXRadiusTimeout 7
AuthXRadiusRetries 2
require valid-user
require user bob ted alice
Вы можете сделать корневую папку только для чтения и дать права на запись для отдельных поддиректорий.
Объяснение директивы Limit
Директива Limit ограничивает действие правил доступа только указанными HTTP-методами. Для методов вне списка ограничения не применяются. В примере выше контроль доступа применяется к методам POST, PUT, DELETE и т. п., а остальные методы остаются без этого ограничения.
Настройка таймаута кеша аутентификации
Параметр AuthXRadiusCacheTimeout определяет, как долго сервер будет кэшировать успешную аутентификацию (в секундах). Чем дольше таймаут — тем реже пользователи будут повторно вводить учётные данные; слишком короткий таймаут может мешать при передаче больших файлов. В примерах используется 3600 (1 час). Подберите значение исходя из типичных размеров файлов и условий сети.
Важно: короткий таймаут улучшает безопасность, но ухудшает UX при долгих загрузках.
Отладка и распространённые проблемы
- Ошибка 412 при использовании клиента Cadaver на Linux — часто вызвана модулем mod_security, блокирующим Content-Type. В моём случае помогло закомментирование правила в mod_security:
# SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)"- Проверьте логи: /var/log/httpd/error_log и модульный лог audit.log (для mod_security).
- Проверьте доступность RADIUS-сервера по IP:порт и корректность shared secret.
- Убедитесь, что файл DAVLockDB доступен Apache и имеет корректные права (директория /var/lib/dav должна существовать).
Роли и чек-листы
Администратор сервера:
- Установить/проверить модули mod_dav, mod_dav_fs, mod_auth_xradius.
- Сгенерировать или установить SSL-сертификат и ключ.
- Создать /var/lib/dav и задать права: owner = apache (или www-data) и chmod 750.
DevOps / Системный инженер:
- Настроить VirtualHost на 443 и Alias для /webdav/.
- Настроить кеш аутентификаций и мониторинг (AuthXRadiusCache, таймауты).
- Провести нагрузочное тестирование при передаче больших файлов.
Разработчик клиента/интеграций:
- Проверить совместимость клиента с WebDAV (требуемые HTTP-методы).
- Тестировать сценарии LOCK/UNLOCK при параллельной работе.
Критерии приёмки
- Доступ к /webdav/ только по HTTPS (порт 443), сертификат корректен.
- Успешная аутентификация через RADIUS для требуемых пользователей.
- Файловые операции (GET, PUT, LOCK, UNLOCK) работают корректно для разрешённых пользователей.
- Логи не содержат критических ошибок и предупреждений о правах доступа.
Быстрые рекомендации безопасности
- Используйте сертификаты от доверенного CA в продакшене.
- Повысьте длину ключа до минимум 2048 бит.
- Ограничьте доступ к каталогу с ключами (chmod 600 для .key).
- Ограничьте IP-адреса RADIUS-сервера в брандмауэре.
Глоссарий — 1 строка
- DAV: расширение HTTP для работы с файловой системой по сети; RADIUS: протокол централизованной аутентификации; CSR: запрос на подпись сертификата.
Краткое резюме
- Настройте SSL, загрузите DAV-модули и mod_auth_xradius, настройте виртуальный хост и DAVLockDB.
- Подберите AuthXRadiusCacheTimeout с учётом размера файлов и уровня безопасности.
- Проверьте мод_security при ошибках 4xx и логи Apache для диагностики.
Примечание: документ даёт рабочую конфигурацию и рекомендации по отладке, но перед развёртыванием в продакшн адаптируйте параметры безопасности под вашу организацию.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента