Установка WebDAV с аутентификацией MySQL на Apache2 (Debian Etch)
Вводная заметка
Я использую сервер Debian Etch с именем host server1.example.com и IP 192.168.0.100. Инструкции проверены для этой конфигурации; при других вариантах путь к файлам или имена пакетов могут отличаться.
Важно: модуль libapache2-mod-auth-mysql поставляется стандартно для Debian Lenny и Sid, но в Etch его нет — в этом руководстве мы временно подключаем репозиторий Lenny и даём приоритет Etch, чтобы не нарушить систему.
Что такое WebDAV и зачем MySQL-аутентификация
WebDAV (Web-based Distributed Authoring and Versioning) — расширение HTTP, которое позволяет редактировать и загружать файлы прямо на сервер, как будто это удалённая файловая система. MySQL-аутентификация даёт централизованный контроль через базу данных: удобно, когда пользователей много или нужно интегрировать с другими сервисами.
Кратко: WebDAV = удалённый редактор файлов по HTTP; mod_auth_mysql = модуль Apache для проверки логина/пароля в таблице MySQL.
1. Подготовка APT: подключение репозитория Lenny (только для отсутствующего пакета)
Откройте /etc/apt/sources.list и добавьте строку для Lenny (если ещё не добавлена). Пример /etc/apt/sources.list:
vi /etc/apt/sources.listdeb http://ftp2.de.debian.org/debian/ etch main
deb-src http://ftp2.de.debian.org/debian/ etch main
deb http://ftp2.de.debian.org/debian/ lenny main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contribЧтобы пакеты из Etch имели приоритет перед Lenny, создайте /etc/apt/preferences со следующим содержимым:
vi /etc/apt/preferencesPackage: *
Pin: release a=etch
Pin-Priority: 700
Package: *
Pin: release a=lenny
Pin-Priority: 650Примечание: если вы используете названия stable/testing вместо etch/lenny, укажите их соответственно.
Обновите кэш APT:
apt-get updateЕсли при обновлении вы получаете ошибки вроде:
Segmentation faultsts... 96%или
E: Dynamic MMap ran out of roomто откройте /etc/apt/apt.conf и увеличьте лимит кэша APT:
vi /etc/apt/apt.confAPT::Cache-Limit "100000000";Затем снова
apt-get updateи обновите установленные пакеты:
apt-get upgrade(Если будут вопросы при обновлении, можно принять значения по умолчанию, если вы уверены в последствиях.)
2. Установка Apache2, WebDAV, MySQL и mod_auth_mysql
Установите необходимые пакеты:
apt-get install apache2 mysql-server mysql-client libapache2-mod-auth-mysqlСоздайте пароль для MySQL root (замените yourrootsqlpassword на ваш пароль):
mysqladmin -u root password yourrootsqlpasswordПроверьте, на каких адресах слушает MySQL:
netstat -tap | grep mysqlЕсли вывод похож на:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld— сервер слушает только localhost: безопасно. Если же слушает на всех интерфейсах:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld— рекомендуется установить пароль для имени хоста и/или ограничить прослушивание в /etc/mysql/my.cnf, а также использовать брандмауэр.
Если MySQL слушает на внешнем адресе, выполните дополнительно:
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordАктивируйте нужные модули Apache для WebDAV и mod_auth_mysql:
a2enmod dav_fs
a2enmod dav
a2enmod auth_mysqlПерезагрузите (или принудительно перезагрузите) Apache:
/etc/init.d/apache2 force-reload3. Создание виртуального хоста и директории для WebDAV
Создадим каталог для сайта и назначим владельца www-data:
mkdir -p /var/www/web1/web
chown www-data /var/www/web1/webСделаем резервную копию стандартного виртуального хоста и создадим новый:
mv /etc/apache2/sites-available/default /etc/apache2/sites-available/default_orig
vi /etc/apache2/sites-available/defaultСодержимое виртуального хоста (пример):
NameVirtualHost *
ServerAdmin webmaster@localhost
DocumentRoot /var/www/web1/web/
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
Затем перезагрузите Apache:
/etc/init.d/apache2 reload4. Конфигурация WebDAV с аутентификацией через MySQL (пример)
Ниже — пример конфигурации для директории WebDAV, который добавляет проверку пользователей в таблице MySQL. Добавьте этот блок внутрь
Alias /webdav /var/www/web1/web
Dav On
AuthType Basic
AuthName "WebDAV"
# Параметры соединения с MySQL
AuthMySQLHost localhost
AuthMySQLUser webdav_user
AuthMySQLPassword webdav_user_password
AuthMySQLDB webdav_db
# Таблица и поля, используемые модулем
AuthMySQLUserTable users
AuthMySQLNameField username
AuthMySQLPasswordField password
Require valid-user
Важно: имена директив AuthMySQL* зависят от версии mod_auth_mysql; проверьте документацию пакета в вашей системе. Если модуль поддерживает только шифрование crypt или MD5, храните пароли соответствующим образом.
Пример SQL: схема базы и добавление пользователя
Создадим базу и таблицу users с полями username и password (пароли временно в простом виде — в продакшене храните хэши):
mysql -u root -p
CREATE DATABASE webdav_db;
USE webdav_db;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(64) NOT NULL,
password VARCHAR(128) NOT NULL
);
INSERT INTO users (username,password) VALUES ('alice','password123');
GRANT SELECT ON webdav_db.* TO 'webdav_user'@'localhost' IDENTIFIED BY 'webdav_user_password';
FLUSH PRIVILEGES;
EXIT;Примечание: приведённый INSERT демонстрационный — в реальной системе используйте хэшированные пароли (bcrypt/MD5/crypt в зависимости от того, что поддерживает модуль).
5. Безопасность и лучшие практики
Important: не используйте WebDAV через незашифрованный HTTP для передачи паролей. Всегда включайте TLS (HTTPS) для WebDAV. Настройте Apache на прослушивание 443 и добавьте SSL-сертификат.
Рекомендации:
- Ограничьте подключение MySQL только localhost (skip-networking или bind-address = 127.0.0.1). Если требуется внешний доступ — обеспечьте VPN.
- Создайте отдельного пользователя базы (webdav_user) с минимальными привилегиями (только SELECT на таблицу пользователей).
- Храните пароли в базе в хэшированном виде; проверьте, какие хэши поддерживает ваш модуль.
- Используйте firewall (iptables/ufw) для ограничения доступа к управляющим портам.
- Логи: проверяйте логи Apache (/var/log/apache2/*) и MySQL.
- Рассмотрите альтернативы: аутентификация через PAM, LDAP или Apache’s mod_authn_dbd (DBI) — иногда более современно и поддерживается лучше.
6. Отладка и распространённые проблемы
- apt-get update падает с ошибкой MMap — добавьте APT::Cache-Limit.
- Нельзя установить libapache2-mod-auth-mysql в Etch — подключите Lenny и приоритеты APT, как описано.
- После включения модулей Apache выдает ошибку при загрузке конфигурации — проверьте синтаксис конфигов: apache2ctl configtest.
- Проблемы с авторизацией — проверьте правильность настроек AuthMySQL* и соответствие имен полей в таблице.
- Пароли не совпадают — убедитесь, что формат хэша в базе поддерживается модулем.
Ролевые чек-листы (кратко)
Администратор сервера:
- Подключить репозиторий Lenny (только при необходимости)
- Настроить приоритеты APT
- Установить пакеты и модули
- Настроить SSL
Разработчик/операции:
- Создать структуру базы и таблицы пользователей
- Тестировать входы через curl/клиент WebDAV
- Настроить бэкапы базы
Аудитор безопасности:
- Проверить, что MySQL не слушает внешние интерфейсы
- Проверить хранение паролей (хэши)
- Проверить HTTPS и сертификаты
Критерии приёмки
- Веб-каталог /webdav доступен по HTTPS.
- Авторизация проходит с учётными данными, хранящимися в таблице webdav_db.users.
- Доступ недоступен по HTTP (перенаправление на HTTPS или блокировка).
- Логирование запросов включено и доступно для анализа.
Альтернативные подходы и когда этот метод не подходит
- Если вы используете современную Debian-версию, вместо libapache2-mod-auth-mysql лучше применять mod_authn_dbd с драйвером DBI или внешнюю аутентификацию по LDAP/AD.
- Если нужно масштабирование и централизованная авторизация — рассматривайте LDAP или OAuth/OpenID Connect.
- Если ваша политика безопасности запрещает хранение паролей в базе — интегрируйтесь с внешним провайдером идентификации.
Краткое сводное руководство (SOP)
- Добавить репозиторий Lenny только при необходимости и настроить /etc/apt/preferences.
- apt-get update && apt-get upgrade.
- apt-get install apache2 mysql-server mysql-client libapache2-mod-auth-mysql.
- Настроить пароль root MySQL и создать базу/таблицу пользователей.
- Включить модули dav_fs, dav, auth_mysql и перезагрузить Apache.
- Добавить конфигурацию виртуального хоста и блок
с директивами AuthMySQL*. - Включить HTTPS и проверить работу WebDAV.
- Провести тесты доступа и аудит безопасности.
Заключение
Настройка WebDAV с MySQL-аутентификацией на Apache2 в Debian Etch возможна, но требует аккуратного управления источниками пакетов и безопасности. Для продакшена важно использовать HTTPS, ограничить доступ к базе данных и хранить пароли в безопасном, хэшированном виде.
Ключевые действия: настроить APT и приоритеты, установить необходимые пакеты, создать таблицу пользователей в MySQL, настроить конфигурацию Apache для WebDAV и привязать модуль mod_auth_mysql.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента