В этой инструкции описана настройка веб-сервера Nginx как точки распространения пакетов WebDAV для Ринго: установка Nginx, доступ по логину и паролю, каталог для пакетов и защита от подбора паролей. Подключение готовой точки в Ринго описано на странице Точка распространения пакетов.
Обновите список пакетов:
apt update
Установите веб-сервер Nginx:
apt install nginx
Создайте файл конфигурации для WebDAV-сервера:
nano /etc/nginx/sites-available/webdav.conf
Добавьте следующее содержимое в файл:
server {
listen 8444;
client_max_body_size 0;
proxy_read_timeout 300; # answer from server, 5 min
proxy_send_timeout 300; # chunks to server, 5 min
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
port_in_redirect off;
access_log /var/log/nginx/webdav.access.log;
error_log /var/log/nginx/webdav.error.log;
location / {
root /var/webdav;
client_body_temp_path /tmp/nginx;
dav_access user:r group:r all:r;
autoindex on;
auth_basic "restricted";
auth_basic_user_file /etc/nginx/.credentials.list;
}
}
Активируйте конфигурацию, создав символическую ссылку:
ln -s /etc/nginx/sites-available/webdav.conf /etc/nginx/sites-enabled/webdav.conf
Установите необходимый пакет для генерации хешей паролей:
apt install apache2-utils
Создайте пользователя для доступа к WebDAV. В этом примере используется логин ringoshare:
htpasswd -c /etc/nginx/.credentials.list ringoshare
Команда htpasswd запросит ввод пароля дважды для подтверждения. Запишите эти учётные данные — они понадобятся при подключении точки распространения в Ринго.
Создайте директорию для хранения пакетов:
mkdir /var/webdav
Установите права доступа на эту директорию:
chmod -R 0755 /var/webdav
Создайте временную директорию для работы Nginx:
mkdir /tmp/nginx
Назначьте владельца временной директории:
chown www-data:www-data /tmp/nginx/
Удалите конфиг по умолчанию, если настраиваете WebDAV на сервере с Ринго, чтобы избежать конфликта из-за использования 80-го порта.
rm /etc/nginx/sites-enabled/default
Примените все изменения, перезапустив Nginx:
service nginx restart
Проверьте статус сервиса:
service nginx status
Если всё настроено правильно, вы увидите сообщение active (running).
Fail2Ban — это система защиты, которая автоматически блокирует IP-адреса при множественных неудачных попытках авторизации.
Установите пакет Fail2Ban:
apt install fail2ban
Создайте или замените файл конфигурации Fail2Ban:
nano /etc/fail2ban/jail.conf
Добавьте следующее содержимое:
[INCLUDES]
before = paths-debian.conf
[DEFAULT]
bantime = 1440m
findtime = 10m
maxretry = 3
maxmatches = %(maxretry)s
backend = auto
usedns = warn
logencoding = auto
enabled = true
mode = normal
filter = %(__name__)s[mode=%(mode)s]
protocol = tcp
chain = <known/chain>
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
action_ = %(banaction)s[port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action = %(action_)s
[nginx-http-auth]
enabled = true
port = 8444
logpath = %(nginx_error_log)s
Описание ключевых параметров:
bantime = 1440m — время блокировки IP-адреса (1440 минут = 24 часа)findtime = 10m — временное окно для подсчёта неудачных попыток (10 минут)maxretry = 3 — максимальное количество неудачных попыток авторизацииport = 8444 — порт, на котором работает WebDAV-серверlogpath — путь к лог-файлу Nginx для отслеживания попыток авторизацииПримените настройки, перезапустив сервис:
service fail2ban restart
Проверьте статус:
service fail2ban status
Подключите точку распространения в Ринго: Настройки → Точки распространения пакетов, протокол HTTP/HTTPS, порт 8444, логин и пароль, созданные через htpasswd. Подробнее — на странице Точка распространения пакетов.