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