SSH — один из самых популярных способов удалённого управления сервером, но часто становится целью брутфорс-атак. Fail2ban — эффективный инструмент для автоматической блокировки IP-адресов после нескольких неудачных попыток входа. В этой статье мы подробно рассмотрим, как настроить Fail2ban для защиты SSH-сервера, который логирует события через systemd journal (например, сервис ssh.service), а не через традиционные файлы логов.
ssh.servicesudo apt install fail2ban)Fail2ban по умолчанию ожидает, что логи SSH будут в файлах /var/log/auth.log или /var/log/secure. Однако современные системы часто используют systemd journal для логирования, и файл логов может отсутствовать. В этом случае fail2ban не сможет найти логи и не запустится, выдавая ошибку:
ERROR Failed during configuration: Have not found any log file for sshd jail
/etc/fail2ban/jail.localЭтот файл используется для локальных настроек, чтобы не менять оригинальный конфиг /etc/fail2ban/jail.conf.
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
backend = systemd
journalmatch = _SYSTEMD_UNIT=ssh.service
maxretry = 3
# Максимальное количество неудачных попыток входа, после которых IP будет заблокирован
bantime = 3600
# Время блокировки IP в секундах (3600 секунд = 1 час)
findtime = 600
# Временное окно (в секундах), за которое считаются неудачные попытки (600 секунд = 10 минут)
backend = systemd — указывает fail2ban читать логи из systemd journal.journalmatch = _SYSTEMD_UNIT=ssh.service — фильтрует логи по конкретному юниту systemd.maxretry, bantime, findtime — параметры блокировки.sudo systemctl restart fail2ban
Выполните эти команды по порядку:
Проверьте статус службы fail2ban:
sudo systemctl status fail2ban
(Это покажет, запущена ли служба и нет ли ошибок.)
Проверьте список активных jails:
sudo fail2ban-client status
(Это выведет количество и список jails, например, sshd.)
Проверьте детали конкретного jail (sshd):
sudo fail2ban-client status sshd
(Это покажет статистику: неудачные попытки, заблокированные IP и т.д.)
Если всё в порядке, вы увидите, что jail sshd активен и мониторит логи.
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip <IP-адрес>
PermitRootLogin no в /etc/ssh/sshd_config).
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()