String específica do bloco ModSecurity na solicitação

3

Eu quero uma regra do ModSecurity, que bloqueia o acesso a qualquer url ou qualquer solicitação do Body Post / Get, se contiver uma string específica.

Por exemplo, eu quero bloquear esta string: "km0ae9gr6m"

Eu tenho essa regra na placse, mas parece que não está funcionando.

SecRule ARGS "km0ae9gr6m" "log,deny,msg:'Access Denied'"

    
por Farhan 10.08.2012 / 18:40

3 respostas

2

A única coisa que estava faltando era a fase de processamento, na qual essa regra deve ser colocada para que funcione. então a regra atual está aqui.

SecRule REQUEST_URI|ARGS|REQUEST_BODY "km0ae9gr6m" "phase:4,log,deny,msg:'Access Denied'"

Por essa regra, você pode bloquear facilmente qualquer tipo de resposta que você não queira que nenhum usuário veja. O Modsecurity irá detectá-lo em seu caminho para o servidor e irá bloqueá-lo.

    
por 13.08.2012 / 10:45
8

Qual versão do ModSecurity você está usando? A variável ARGS inclui apenas QUERY_STRING + POST_PAYLOAD na versão 1.X. Se você estiver executando a versão 2.X, com sua regra acima, teste com uma solicitação conforme abaixo:

http://domain.com/a?b=km0ae9gr6m

você verá algo assim no audit_log :

[modsecurity] [client x.x.x.x] [domain domain.com] [302] [/20120813/20120813-1226/20120813-122624-70QXqH8AAAEA AEucDbkAAAAA] [file "/etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf"] [line "305"] [msg "Access Denied"] Access denied with code 403 (phase 2). Pattern match "km0ae9gr6m" at ARGS:b.

No ModSecurity 2.x, ARGS se expande para variáveis individuais. Então, tente isto:

SecRule REQUEST_URI|ARGS|REQUEST_BODY "km0ae9gr6m" "log,deny,msg:'Access Denied'"
    
por 13.08.2012 / 07:48
0

A resposta acima está correta, use a fase: 1. Você também pode usar o operador de correspondência de cadeia parcial "@contains" para interromper uma solicitação que tenha a cadeia indesejada como parte de uma cadeia mais longa. Por exemplo, eu não tenho o word press, então quando eu recebo pedidos para o wp-login, o wp-admin, etc., eu posso bloquear todos eles com uma regra: SecRule REQUEST_URI "@contains wp-" "id: 101, fase: 1, negar, status: 409, msg: 'Negado'"

Em uma nota lateral, a mensagem da msg: parece aparecer apenas nos logs, a mensagem que o usuário vê que eu adicionei na configuração do apache ErrorDocument 409 "ACESSO ESTRITAMENTE PROIBIDO"

    
por 08.08.2018 / 15:21