Шаг 1: Создание фильтра
Создайте файл фильтра для Nextcloud:
sudo nano /etc/fail2ban/filter.d/nextcloud.conf
Вставьте следующий код:
[Definition]
failregex = {"reqId":".*","remoteAddr":"<HOST>","app":"core","message":"Login failed: '.*' \ (Remote IP: '<HOST>'\)"
ignoreregex =
Шаг 2: Настройка jail
Создайте конфигурационный файл для Nextcloud:
sudo nano /etc/fail2ban/jail.local
Добавьте следующие настройки:
[nextcloud]
enabled = true
port = 80,443
filter = nextcloud
logpath = /var/www/nextcloud/data/nextcloud.log # Укажите правильный путь к логам
maxretry = 3
bantime = 3600 # Время блокировки в секундах (1 час)
findtime = 3600 # Период учета попыток (1 час)
Расширенная конфигурация с несколькими jail
Можно настроить несколько jail для разных типов защиты:
[nextcloud-auth]
enabled = true
port = https
filter = nextcloud-auth
logpath = /var/log/nginx/nextcloud.log
maxretry = 3
bantime = 3600
findtime = 3600
[nextcloud-scanner]
enabled = true
port = https
filter = nextcloud-scanner
logpath = /var/log/nginx/nextcloud.log
maxretry = 1
bantime = 86400
findtime = 60
Дополнительные фильтры
Создайте файл для сканирования:
sudo nano /etc/fail2ban/filter.d/nextcloud-scanner.conf
Добавьте:
[Definition]
failregex = ^<HOST> .* ".*sqlmap.*"
^<HOST> .* ".*nikto.*"
^<HOST> .* ".*nmap.*"
^<HOST> .* ".*masscan.*"
^<HOST> .* ".*gobuster.*"
Применение настроек
После внесения изменений перезапустите Fail2Ban:
sudo systemctl restart fail2ban
Проверка работы
Проверьте статус защиты:
sudo fail2ban-client status nextcloud
Рекомендации
- Регулярно проверяйте логи на предмет блокировок
- Настройте исключения для доверенных IP
- При необходимости корректируйте параметры maxretry и bantime
- Убедитесь, что путь к логам указан корректно
- Проверьте, что Nextcloud записывает IP-адреса клиентов корректно
Comments powered by CComment