You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Citadel邮件服务器的fail2ban failregex规则失效问题求助

解决Citadel邮件服务器fail2ban规则匹配失效问题

问题重现

示例系统日志条目

Jul 15 10:23:45 mail-server citadel[1472]: Login failed for user 'john' from 192.168.0.201
Jul 15 10:24:01 mail-server citadel[1473]: Authentication failed for 'jane' from 203.0.113.12
Jul 15 10:24:15 mail-server citadel[1474]: Login failed for user 'admin' from 172.16.0.5
Jul 15 10:24:30 mail-server citadel[1475]: Authentication failed for 'guest' from 198.51.100.33
Jul 15 10:24:45 mail-server citadel[1476]: Login failed for user 'test' from 10.0.0.12
Jul 15 10:25:00 mail-server citadel[1477]: Authentication failed for 'dummy' from 169.254.1.1

失效的failregex规则

failregex = ^%(__prefix_line)sLogin failed for user .* from <HOST>$

测试结果

使用fail2ban-regex test.log /etc/fail2ban/filter.d/citadel.conf测试后,6条日志均未匹配成功。

原因分析

  1. 规则覆盖范围不足:原规则仅匹配Login failed类型的日志,但Citadel登录失败还会输出Authentication failed类型的日志,这部分完全被遗漏。
  2. 进程格式匹配问题:原规则未显式匹配Citadel进程的[PID]后缀(比如citadel[1472]),如果__prefix_line变量未包含进程ID部分,会导致前缀匹配失败。

修复后的failregex规则

替换原有规则为以下内容,可覆盖所有登录失败场景并正确匹配IP:

failregex = ^%(__prefix_line)scitadel\[\d+\]: (Login failed for user .* from|Authentication failed for .* from) <HOST>$

规则说明

  • %(__prefix_line)s:匹配fail2ban内置的系统日志前缀(包含日期、主机名)
  • citadel\[\d+\]:匹配带进程ID的Citadel进程名(转义[和]避免正则语法冲突)
  • (Login failed...|Authentication failed...):同时匹配两种登录失败的日志文本
  • <HOST>:fail2ban内置变量,自动匹配IPv4/IPv6地址

验证方法

重新执行测试命令,确认所有日志均被匹配:

fail2ban-regex test.log /etc/fail2ban/filter.d/citadel.conf

正常情况下会输出6 matched的结果,说明规则生效。

内容的提问来源于stack exchange,提问作者ksimp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:17:32