如何使用 systemd 日志配置 fail2ban?

Tom*_*art 12 fail2ban systemd-journald

我已经安装fail2ban在 Debian Jessie LXC 容器上,目前它失败的原因是:

Starting authentication failure monitor: fail2ban
ERROR  No file(s) found for glob /var/log/auth.log
ERROR  Failed during configuration: Have not found any log file for ssh jail
Run Code Online (Sandbox Code Playgroud)

系统上没有syslogor rsyslog,因此/var/log/auth.log不会生成。有没有办法如何告诉fail2ban使用输出journalctl _COMM=sshd

小智 13

对于 systemd 系统:

您必须指定/etc/fail2ban/jail.conf要使用的后端,systemd如下所示:

backend = systemd
Run Code Online (Sandbox Code Playgroud)

然后重启fail2ban:

systemctl restart fail2ban
Run Code Online (Sandbox Code Playgroud)

编辑:

我是一个沉重的 CentOS/RHEL/Fedora 人,所以你可能需要稍微调整一下我所说的。就这个答案而言,您可能需要将 fail2ban 软件包更新为支持 systemd 作为后端的版本,或者您必须安装rsyslog以下内容并将其添加到您的/etc/rsyslog.conf:

authpriv.*      /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)

这将确保 sshd auth 日志正在记录,fail2ban 中/var/log/auth.log的默认pyinotify后端将读取该日志:


小智 8

配置文件有问题。

我有jail.conf 和jail.d/defaults-debian.conf

后一篇的内容是:

[sshd]
enabled = true
Run Code Online (Sandbox Code Playgroud)

由于此处未设置后端,因此使用默认值而不是 中的值jail.conf。该问题在这里详细描述:https ://github.com/fail2ban/fail2ban/issues/1372

添加backend = systemd就成功了。

默认值-debian.conf

[sshd]
enabled = true
backend = systemd
Run Code Online (Sandbox Code Playgroud)