![修复 php-url-fopen 过滤器的 fail2ban 正则表达式规则](https://linux22.com/image/685740/%E4%BF%AE%E5%A4%8D%20php-url-fopen%20%E8%BF%87%E6%BB%A4%E5%99%A8%E7%9A%84%20fail2ban%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%A7%84%E5%88%99.png)
我正在修复默认设置php-url-fopen过滤器允许我在系统中使用的一些 GET 查询参数(它不公开可用,但我仍然想阻止不必要的请求)。问题是我为一个参数名称获得了有效的正则表达式,但我无法为两个参数获得有效的正则表达式,其中第二个选项由两个名称组合而成。我正在使用 fail2ban 0.8.11 - 这是有效的(失败)正则表达式:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)\=http\:\/\/.* HTTP\/.*$
这是不起作用的正则表达式:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer|type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
当我尝试使用不起作用的正则表达式启动 fail2ban 服务时,收到以下消息:
ERROR NOK: ('Unable to compile regular expression \'^(?:::f{4,6}:)?(?P<host>[\\w\\-.^_]*\\w) -.*"(GET|POST).*\\?.*(?<!outer|type\\=outer\\&url)\\=http\\:\\/\\/.* HTTP\\/.*$\'',)
任何帮助,将不胜感激。
答案1
我的第二个正则表达式的解决方案是:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)(?<!type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
GET 查询中的两个单词/参数必须分开,并且只能包含在一个负向后视中。