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

how to specify multiple log files pattern in fail2ban jail?

I have log files on my server as follows

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

Is it possible to add log files pattern in fail2ban jail config?

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

嗯,有条件的可以...

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

logpath  = /var/log/vpn_*.log

会完成这项工作,但你的情况有点难看:

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

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

  • 为了 rename/compress 所有以前的日志文件(避免匹配过时的文件);
  • 为具有固定名称的 last/active 文件创建 hard- 或 sym-link(因此 fail2ban 始终能够找到具有相同名称的文件,并且您不需要通配符全部);
  • 或者如果日志文件名被更改,则通知 fail2ban 重新加载 jail
    (fail2ban-client reload vpn).

这里是logrotate修改的例子:

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