A solução para o meu segundo regex é:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)(?<!type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
Ambas as palavras / parâmetros na consulta GET devem ser separadas e contidas apenas em um aspecto negativo.
Estou corrigindo o padrão php-url-fopen filtro para permitir alguns parâmetros de consulta GET que estou usando em meu sistema (não está publicamente disponível, mas eu ainda gostaria de bloquear solicitações desnecessárias). O problema é que eu tenho o regex de trabalho para um nome de parâmetro, mas não consigo trabalhar regex para dois parâmetros onde second opiton é combinado de dois nomes. Estou usando o fail2ban 0.8.11 - aqui está trabalhando (falha) regex:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer)\=http\:\/\/.* HTTP\/.*$
E aqui está a regex que não funciona:
^<HOST> -.*"(GET|POST).*\?.*(?<!outer|type\=outer\&url)\=http\:\/\/.* HTTP\/.*$
Quando tento iniciar o serviço fail2ban com regex não funcional, recebo esta mensagem:
ERROR NOK: ('Unable to compile regular expression \'^(?:::f{4,6}:)?(?P<host>[\w\-.^_]*\w) -.*"(GET|POST).*\?.*(?<!outer|type\=outer\&url)\=http\:\/\/.* HTTP\/.*$\'',)
Qualquer ajuda seria apreciada.