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

Установка WebDAV с аутентификацией MySQL на Apache2 (Debian Etch)

• 5 min read • Серверы • Обновлено 25 Nov 2025
WebDAV с MySQL на Apache2 (Debian Etch)
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.list
deb 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/preferences
Package: *
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.conf
APT::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-reload

3. Создание виртуального хоста и директории для 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 reload

4. Конфигурация WebDAV с аутентификацией через MySQL (пример)

Ниже — пример конфигурации для директории WebDAV, который добавляет проверку пользователей в таблице MySQL. Добавьте этот блок внутрь или в отдельный конфиг внутри sites-available:

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)

  1. Добавить репозиторий Lenny только при необходимости и настроить /etc/apt/preferences.
  2. apt-get update && apt-get upgrade.
  3. apt-get install apache2 mysql-server mysql-client libapache2-mod-auth-mysql.
  4. Настроить пароль root MySQL и создать базу/таблицу пользователей.
  5. Включить модули dav_fs, dav, auth_mysql и перезагрузить Apache.
  6. Добавить конфигурацию виртуального хоста и блок с директивами AuthMySQL*.
  7. Включить HTTPS и проверить работу WebDAV.
  8. Провести тесты доступа и аудит безопасности.

Заключение

Настройка WebDAV с MySQL-аутентификацией на Apache2 в Debian Etch возможна, но требует аккуратного управления источниками пакетов и безопасности. Для продакшена важно использовать HTTPS, ограничить доступ к базе данных и хранить пароли в безопасном, хэшированном виде.

Ключевые действия: настроить APT и приоритеты, установить необходимые пакеты, создать таблицу пользователей в MySQL, настроить конфигурацию Apache для WebDAV и привязать модуль mod_auth_mysql.

Поделиться: 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 быстро