fail2ban — защита от брутфорса¶
Автоматически составлено агентом 06.08.2026 из 00_INDEX.md, vaultwarden.md, nginx-vps-configs.md. Требует ревью: точные настройки jails, filter.d, действия при бане.
Где установлен¶
| Сервер | Статус |
|---|---|
| VPS 46.17.99.183 | ✅ активен |
| ragserver 192.168.1.200 | ⚠ уточнить (по 00_INDEX не активен) |
Активные jails на VPS¶
Из nginx-vps-configs.md и vaultwarden.md:
| Jail | Что защищает | Лог | Filter |
|---|---|---|---|
sshd |
SSH-брутфорс (порт 22) | /var/log/auth.log |
стандартный |
nginx-noscript |
Боты, сканящие .php/.asp/.env |
/var/log/nginx/access.log |
/etc/fail2ban/filter.d/nginx-noscript.conf (кастомный) |
nginx-limit-req |
Превышение rate-limit nginx | /var/log/nginx/error.log |
стандартный nginx-limit-req |
vaultwarden |
Неудачные попытки логина в Vaultwarden | лог Vaultwarden (docker) | кастомный (см. vaultwarden.md) |
vaultwarden-admin |
Брутфорс /admin панели |
лог Vaultwarden | кастомный |
Ключевые файлы¶
/etc/fail2ban/jail.local— все переопределения дефолтов + кастомные jails/etc/fail2ban/filter.d/nginx-noscript.conf— кастомный regex для сканеров/etc/fail2ban/filter.d/vaultwarden.conf— фильтр для лога Vaultwarden/var/log/fail2ban.log— все действия fail2ban (баны, разбаны)
Команды на каждый день¶
# Общий статус
sudo fail2ban-client status
# Статус конкретного jail (список забаненых IP)
sudo fail2ban-client status sshd
sudo fail2ban-client status nginx-noscript
sudo fail2ban-client status vaultwarden
# Разбанить свой IP если случайно поймало
sudo fail2ban-client set sshd unbanip 1.2.3.4
sudo fail2ban-client set nginx-noscript unbanip 1.2.3.4
# Забанить IP вручную (например, увидел плохой активити в логах)
sudo fail2ban-client set sshd banip 5.6.7.8
# Смотреть лог fail2ban live
sudo tail -f /var/log/fail2ban.log
# Проверить синтаксис конфига после правки
sudo fail2ban-client -t
# Применить изменения
sudo systemctl reload fail2ban
Дефолты (типичные)¶
Если нет переопределений в jail.local — работают дефолты:
bantime: 10 минут (600 сек)findtime: 10 минут (окно наблюдения)maxretry: 5 попытокbanaction:iptables-multiport(блокирует через iptables)
Как посмотреть заблокированные IP через iptables¶
fail2ban при бане создаёт chain'ы в iptables:
sudo iptables -L -n | grep -E "^Chain f2b"
sudo iptables -L f2b-sshd -n --line-numbers
sudo iptables -L f2b-nginx-noscript -n --line-numbers
Разбан своего IP если случайно попал¶
Ситуация: ошибся паролем 5 раз при SSH → забанило.
Решение 1: через мобильный интернет (другой IP) зайти → разбанить:
Решение 2: через VPN AmneziaWG зайти с VPS IP:
Решение 3: консоль VPS через Hostkey web-панель → выполнить unban.
Мониторинг¶
Задача 28 в TODO — настроить мониторинг: - Uptime Kuma в docker на ragserver - Или healthchecks.io для внешнего пинга
Для fail2ban отдельно можно:
- Cron ежедневно шлёт sudo fail2ban-client status --json в дайджест
- Alert если jail упал (fail2ban не запущен)
Тестирование¶
Проверить что jail реально работает:
# С другой машины (не текущий IP!) сделай 6 плохих SSH попыток
for i in $(seq 1 6); do
ssh -o PasswordAuthentication=yes root@46.17.99.183 exit 2>/dev/null
done
# С VPS смотрим jail
sudo fail2ban-client status sshd
# Должен показать твой IP в Banned IP list
Проверить nginx-noscript:
# Симулируем сканер
curl -sI https://alatyr-service.ru/wp-login.php > /dev/null
curl -sI https://alatyr-service.ru/.env > /dev/null
# Через минуту:
sudo fail2ban-client status nginx-noscript
Восстановление после сбоя¶
Если fail2ban упал / крашится:
sudo systemctl status fail2ban
sudo journalctl -u fail2ban -n 100
sudo fail2ban-client -t # проверка синтаксиса всех jail.local и filter.d
# Если конфиг сломан — откатить последнее изменение
sudo systemctl start fail2ban
Известные проблемы¶
- ragserver не защищён — SSH со стороны LAN не критично, но при пробросе портов через роутер желательно поставить
- Vaultwarden filter — может требовать обновления при новых версиях (формат логов меняется)
- Нет алерта при большом количестве банов подряд (может быть атака)
Связанные файлы¶
- nginx-vps-configs.md — nginx jails
- vaultwarden.md — vaultwarden jails
- vps-hostkey-vm-mini.md — общее описание VPS