Настройка Fail2Ban для Nextcloud

Шаг 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