Fail2Ban正则匹配求助:仅提取含DPT=5003的日志中SRC IP
Fail2Ban 正则匹配指定DPT端口的源IP
针对你提供的UFW BLOCK日志,要实现仅当日志包含DPT=5003时,提取SRC对应的IP,可以用以下正则表达式:
^.*\[UFW BLOCK\].*DPT=5003.*SRC=?(?P<host>\S+).*$
正则说明
^.*\[UFW BLOCK\].*:先锁定UFW拦截的日志行,避免匹配其他无关日志内容.*DPT=5003.*:确保日志中存在目标端口5003的规则SRC=?(?P<host>\S+):提取SRC后的源IP,(?P<host>)是Fail2Ban识别的命名捕获组,用于标记要封禁的IP- 首尾的
.*用来匹配日志行前后的任意内容,兼容你提供的日志字段固定顺序(SRC在DPT之前)
兼容字段顺序变动的版本
如果日志里SRC和DPT的位置不确定,可以用分支结构覆盖两种顺序:
^.*\[UFW BLOCK\].*(?:SRC=?(?P<host>\S+).*DPT=5003|DPT=5003.*SRC=?(?P<host>\S+)).*$
Fail2Ban配置示例
在自定义过滤器配置文件(如/etc/fail2ban/filter.d/ufw-custom.conf)中添加:
[Definition] failregex = ^.*\[UFW BLOCK\].*DPT=5003.*SRC=?(?P<host>\S+).*$ ignoreregex =
验证正则有效性
用fail2ban-regex命令测试匹配效果:
fail2ban-regex /var/log/ufw.log '^.*\[UFW BLOCK\].*DPT=5003.*SRC=?(?P<host>\S+).*$'
内容的提问来源于stack exchange,提问作者error401
相关产品推荐
相关产品推荐

