Гид по технологиям

Настройка Apache для WebDAV с SSL и RADIUS-аутентификацией

• 4 min read • DevOps • Обновлено 21 Nov 2025
Apache WebDAV: SSL и RADIUS — настройка
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 1024
openssl req -new -key webdav.mydomain.com.key -out webdav.mydomain.com.csr
openssl 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 для диагностики.

Примечание: документ даёт рабочую конфигурацию и рекомендации по отладке, но перед развёртыванием в продакшн адаптируйте параметры безопасности под вашу организацию.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро