修复 php-url-fopen 过滤器的 fail2ban 正则表达式规则

修复 php-url-fopen 过滤器的 fail2ban 正则表达式规则

我正在修复默认设置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 查询中的两个单词/参数必须分开,并且只能包含在一个负向后视中。

相关内容