求适配fail2ban的200-500间排除499的正则表达式
匹配200-500且排除499的正则表达式(适用于fail2ban)
最终正则
^(?!499$)(2[0-9]{2}|3[0-9]{2}|4[0-8][0-9]|49[0-8]|500)$
规则拆解
^(?!499$):负向预查,锚定字符串首尾,确保整个内容不是精确的499,避免误匹配包含499的长数字(如1499)。2[0-9]{2}:匹配200-299区间的所有数字3[0-9]{2}:匹配300-399区间的所有数字4[0-8][0-9]:匹配400-489区间的所有数字49[0-8]:匹配490-498区间的所有数字500:精确匹配500
fail2ban配置示例
在filter配置文件(如/etc/fail2ban/filter.d/custom-filter.conf)中,结合日志格式调整正则。比如日志中数字以status code: XXX形式出现,可写为:
failregex = ^.*status code: (?!499$)(2[0-9]{2}|3[0-9]{2}|4[0-8][0-9]|49[0-8]|500)$
验证方法
用fail2ban自带工具测试匹配效果:
# 测试应不匹配的499 fail2ban-regex "status code: 499" "^(?!499$)(2[0-9]{2}|3[0-9]{2}|4[0-8][0-9]|49[0-8]|500)$" # 测试应匹配的498、500、250 fail2ban-regex "status code: 498" "^(?!499$)(2[0-9]{2}|3[0-9]{2}|4[0-8][0-9]|49[0-8]|500)$"
内容的提问来源于stack exchange,提问作者aispobla
相关产品推荐
相关产品推荐

