Источник записей задаёт параметр backend.
backend = systemd означает: читать журнал journald, тот самый, что показывает journalctl. Файловый вариант — backend с параметром logpath, путём к текстовому логу вроде /var/log/auth.log. Журнал journald общий для всех служб, поэтому jail сужают строкой journalmatch: она говорит, из какого юнита брать записи, например _SYSTEMD_UNIT=ssh.service. Укажешь службу, которой нет или которую не атакуют, — jail читает пустоту и не насчитывает ни одной попытки. Это ты и видел: перебор шёл по lab-sshd, а jail смотрел sshd.service.
В jail стоит backend = systemd. Откуда fail2ban берёт записи об отказах входа?
-
fail2ban-clientтолько показывает состояние jail'ов. Записи служба берёт из источника, заданногоbackend. -
Файл читает другой вариант —
backendсlogpath. Приbackend = systemdfail2ban берёт записи из журнала journald, а не из файла.
backend = systemd велит fail2ban читать журнал journald. Какой именно юнит из журнала брать, сужает journalmatch. Файловый источник — это backend с logpath, путь к текстовому логу.
Главное в шаге
-
backend = systemd— fail2ban читает журнал journald; файловый вариант —backendсlogpath. -
journalmatchсужает журнал до нужного юнита (_SYSTEMD_UNIT=…). - jail, нацеленный не на ту службу, читает пустоту и не банит никого.