Ubuntu 22.04最小化安装环境下配置fail2ban监控sshd时缺失日志文件的问题求助
Ubuntu 22.04最小化安装环境下配置fail2ban监控sshd时缺失日志文件的问题求助
您好,这个问题在Ubuntu 22.04最小化安装环境下很常见——该版本默认用systemd-journald管理日志,不再生成传统的/var/log/auth.log文件,所以fail2ban会找不到指定的日志路径。结合你的配置情况,我给你两个可行的解决方向:
方案一:直接适配systemd日志(推荐)
Ubuntu 22.04的sshd日志默认存在于systemd的journal中,只需要调整fail2ban配置让它直接读取journal日志即可:
- 编辑你的
/etc/fail2ban/jail.local文件,修正两个关键问题:- 启用
backend = systemd(你配置里已经注释了这一行,去掉注释即可) - 修正拼写错误:把
findime改成findtime(这个错误会导致fail2ban的时间窗口配置失效)
- 启用
修改后的[sshd]段应该是这样:
[sshd] # To use more aggressive sshd modes set filter parameter "mode" in jail.local: # normal (default), ddos, extra or aggressive (combines all). # See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details. #mode = normal port = 22443 backend = systemd enabled = true maxretry = 3 findtime = 300 bantime = 3600 ignoreip = 127.0.0.1
- 重启fail2ban服务使配置生效:
sudo systemctl restart fail2ban
- 验证sshd jail是否正常运行:
fail2ban-client status sshd
如果输出显示Status for the jail: sshd以及相关的监控信息,说明配置成功了。
方案二:恢复传统的auth.log文件
如果你更习惯使用传统的日志文件,可以通过安装rsyslog来生成/var/log/auth.log:
- 安装rsyslog:
sudo apt update && sudo apt install rsyslog
- 启动并启用rsyslog服务:
sudo systemctl enable --now rsyslog
- 等待片刻后,
/var/log/auth.log就会生成,此时fail2ban默认的日志路径配置就能正常识别,你只需要确保jail.local里的logpath = %(sshd_log)s保留即可(不过还是推荐方案一的systemd方式,更适配现代Ubuntu系统)。
最后再提醒一下,你配置里的findime是明显的拼写错误,一定要改成findtime,否则fail2ban不会按照你预期的300秒窗口来统计失败次数。
备注:内容来源于stack exchange,提问作者Sorin Orii
相关产品推荐
相关产品推荐

