我正在使用 Docker 的容器中运行 SSH 守护程序。由于后者由 管理systemd
并且 sshd 记录到stdout
,因此检测攻击者的相关数据出现在systemd
的日志中,但其条目有一个额外的前缀,如下所示:
Feb 13 21:51:25 my.example.com dockerd[427]: Feb 13 18:51:25 sshd[555]: Invalid user ts3bot from 180.166.17.122 port 43474
监狱配置了这个片段:
[sshd]
enabled = true
mode = aggressive
filter = sshd[mode=%(mode)s]
port = ssh
似乎这一行来自filters.d/sshd.conf
包含我想要更改的内容:
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
但是我找不到关于journalmatch
's 配置的任何有用的文档。我正在使用fail2ban
0.10。
有人可以解释如何解释等号右边的部分吗?
当我希望弄清楚如何调整该值时,我应该filters.d/sshd.conf
直接编辑(它是从 Arch 包中提供的)还是其他地方?
为了保留主机系统本身有一个额外的 sshd 监狱的选项,我会这样做:
版本– 使用支持systemd
用作后端的fail2ban 版本 >= 0.9 。(顺便说一句:0.11 版本很新,可能还不稳定,但我喜欢这个新功能,它可以自动增加来自同一 IP 的每场新比赛的禁止次数。)
Jail – 创建一个单独的 jail jail.d/sshd-docker
。根据需要采用原始 sshd jail 的设置。为了安全起见,可能会先开始低禁止时间,然后再增加。添加backend = systemd
到那个新sshd-docker
监狱。看起来像这样:
[sshd-docker]
enabled = true
filter = sshd-docker
action = iptables
backend = systemd
maxretry = 5
findtime = 1d
bantime = 2w
过滤器- 我更喜欢保留过滤器文件和原始 jail.conf 文件不变,以便我可以轻松升级到更新的 fail2ban 版本。因此,我建议将过滤器文件复制filter.d/sshd.conf
到filter.d/sshd-docker.conf
并引用您sshd-docker
jail中的新过滤器(如上所示)。
过滤器/正则表达式– 采用正则表达式filter.d/sshd-docker.conf
来匹配您的日志条目。可能就像改变这个一样简单
_daemon = sshd
至
_daemon = docker
因为该_daemon
指令用于构造 __prefix_line 正则表达式,如您在filter.d/common.conf
.
过滤器/日志匹配——据我从 fail2ban-regex 手册页看到的journalmatch
指令覆盖其他过滤器。因此,您可能还需要在您的filter.d/sshd-docker.conf
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
至
journalmatch =
(在 fail2ban 0.11 中,您也可以删除这一行。不确定以前的版本何时停止要求journalmatch =
在过滤器文件中输入。)
测试– 重新加载 fail2ban 并检查它是如何工作的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句