如何在fail2ban监狱中指定多个日志文件模式?

时间:2019-10-16 07:59:57

标签: fail2ban

  

我的服务器上有以下日志文​​件

vpn_20191007.log
vpn_20191008.log
vpn_20191009.log
vpn_20191010.log
vpn_20191011.log
vpn_20191012.log
vpn_20191013.log
vpn_20191014.log
vpn_20191015.log
vpn_20191016.log
  

是否可以在fail2ban监狱配置中添加日志文件模式?

    [application]
    enabled  = false
    filter   = example
    action   = iptables
    logpath  = /var/log/vpn_%D.log
    maxretry = 1

1 个答案:

答案 0 :(得分:1)

好吧,有条件地可能...

虽然目前基本上允许使用通配符,所以:

logpath  = /var/log/vpn_*.log

可以完成这项工作,但是对于您而言,这有点难看:

  • fail2ban仅在服务启动时才累积文件列表,因此该列表仍保留在fail2ban中(除非重新加载了该列表)-这意味着您应该通知fail2ban日志文件名已更改(请参阅https://github.com/fail2ban/fail2ban/issues/1379,工作正在进行中。
  • 因为只有一个文件会收到新消息,所以不需要监视其他文件,尤其是在使用轮询后端的情况下。

因此最好为此创建一些logrotate规则:

  • 为了重命名/压缩所有以前的日志文件(以避免与过时的文件匹配);
  • 为具有固定名称的最后一个/活动文件创建硬链接或符号链接(因此,fail2ban总是能够找到具有相同名称的文件,并且您根本不需要通配符);
  • 或在日志文件名更改后通知fail2ban重新加载监狱
    fail2ban-client reload vpn)。

以下是logrotate修改的示例:

    postrotate
        nfn="/var/log/vpn_$(date +%Y%m%d).log"
        touch "$nfn"
        ln -fs "$nfn" /var/log/vpn.log