105207879

Настройка 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-адреса клиентов корректно

Установить очень долгое время бана (простой вариант)

В конфигурации jail укажите bantime с большим значением:

[sshd]
enabled = true
bantime = 10y # 10 лет (можно указать 100y, 9999d и т. п.)
maxretry = 5
findtime = 10m

Как проверить статус блокировки

Посмотрите активные баны для sshd:В выводе ищите:Currently banned: N — количество заблокированных IP.
Список IP‑адресов (включая 45.234.213.94, если блокировка активна).
sudo fail2ban-client status sshd
 Проверьте правила брандмауэра (в зависимости от используемого действия):Для ufw:
sudo ufw status numbered
Для iptables:
sudo iptables -L INPUT -n --line-numbers | grep 45.234.213.94

Изучите детали в логе (/var/log/fail2ban.log):Ищите строки с Ban или Unban, чтобы понять, была ли блокировка и на какой срок.
sudo grep "45.234.213.94" /var/log/fail2ban.log

Если IP явно вредоносный
Убедитесь, что он заблокирован:
sudo fail2ban-client set sshd unbanip 45.234.213.94 # временно снять бан (для проверки) sudo fail2ban-client set sshd banip 45.234.213.94 # снова заблокировать
Добавьте IP в постоянный чёрный список (если нужно):Для ufw:
sudo ufw insert 1 deny from 45.234.213.94 to any
Для iptables:
sudo iptables -I INPUT -s 45.234.213.94 -j DROP

Comments powered by CComment