我应该如何自定义fail2ban过滤器以结合在容器中运行的sshd并使用systemd记录?

时髦的未来

我正在使用 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 配置的任何有用的文档我正在使用fail2ban0.10。

有人可以解释如何解释等号右边的部分吗?

当我希望弄清楚如何调整该值时,我应该filters.d/sshd.conf直接编辑(它是从 Arch 包中提供的)还是其他地方?

鲍勃

为了保留主机系统本身有一个额外的 sshd 监狱的选项,我会这样做:

  1. 版本– 使用支持systemd用作后端的fail2ban 版本 >= 0.9 (顺便说一句:0.11 版本很新,可能还不稳定,但我喜欢这个新功能,它可以自动增加来自同一 IP 的每场新比赛的禁止次数。)

  2. 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
    
  3. 过滤器- 我更喜欢保留过滤器文件和原始 jail.conf 文件不变,以便我可以轻松升级到更新的 fail2ban 版本。因此,我建议将过滤器文件复制filter.d/sshd.conffilter.d/sshd-docker.conf并引用您sshd-dockerjail中的新过滤器(如上所示)。

  4. 过滤器/正则表达式– 采用正则表达式filter.d/sshd-docker.conf来匹配您的日志条目。可能就像改变这个一样简单

    _daemon = sshd
    

    _daemon = docker
    

    因为该_daemon指令用于构造 __prefix_line 正则表达式,如您在filter.d/common.conf.

  5. 过滤器/日志匹配——据我从 fail2ban-regex 手册页看到的journalmatch指令覆盖其他过滤器。因此,您可能还需要在您的filter.d/sshd-docker.conf

    journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
    

    journalmatch = 
    

    (在 fail2ban 0.11 中,您也可以删除这一行。不确定以前的版本何时停止要求journalmatch =在过滤器文件中输入。)

  6. 测试– 重新加载 fail2ban 并检查它是如何工作的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章