Назад | Перейти на главную страницу

Исправление правила регулярного выражения fail2ban для фильтра php-url-fopen

Я исправляю дефолт 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\\/.*$\'',)

Любая помощь будет оценена.

Решение моего второго регулярного выражения:

^<HOST> -.*"(GET|POST).*\?.*(?<!outer)(?<!type\=outer\&url)\=http\:\/\/.* HTTP\/.*$

Оба слова / параметра в запросе GET должны быть разделены и содержаться только в одном отрицательном поиске назад.