Que regra posso usar no ModSecurity para registrar a carga útil do POST para um site específico?

Que regra posso usar no ModSecurity para registrar a carga útil do POST para um site específico?

Preciso inspecionar a carga útil do POST para um site específico (o servidor está bastante ocupado e eu não ativaria o log do POST para todo o servidor).

O servidor é LiteSpeed ​​5.0.7. SecRequestBodyAccess está definido como "Ativado".

Primeiro tentei com uma cadeia de regras: a primeira na fase:1 para corresponder apenas às solicitações do host desejado, mas a carga útil posterior está na fase:2 e não acho que possa fazer uma cadeia em 2 fases diferentes.

Então tentei usar isso:

<VirtualHost xxxxx>
    SecRule REQUEST_METHOD "POST" "phase:2,log,id:22222223
</VirtualHost>

Mas não está gravando nada em modsec_audit.log.

Estou fazendo algo errado ou está relacionado à compatibilidade do LiteSpeed ​​com ModSec?

No final, também tentei esta regra para registrar POST para todas as solicitações:

SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass". 

Ele registra a solicitação, mas não o corpo da solicitação ( -C-- group si missing in modsec audit).

Responder1

Semelhante a esta pergunta:Como fazer com que o mod_security registre todos os dados do POST?

Você está certo, não pode encadear duas regras em duas fases diferentes; no entanto, a fase 2 tem acesso a todas as informações da fase 1, portanto, basta mover para a fase 2 se quiser fazer isso dessa maneira.

Esta regra que você deu:

SecRule REQUEST_METHOD "POST" "phase:2,log,id:22222223

É meio inútil. Isso registrará (no log principal) que uma solicitação POST foi recebida, mas sem o corpo do POST.

Ele também registrará no AuditEngine dependendo do seuSecAuditEngineo valor está definido como:

  1. Se você tiver o SecAuditEngine definido como Ativado, tudo será registrado no log de auditoria e a regra acima não será necessária. Isso preenche os arquivos de log rapidamente, por isso não é recomendado.
  2. Se você tiver o SecAuditEngine definido como RelevantOnly, ele também será registrado aqui.
  3. Se SecAuditEngine estiver definido como Desativado, ele nunca será registrado no log de auditoria.

Geralmente é melhor ter o SecAuditEngine definido como RelevantOnly (o que eu suspeito ser o que você já tem), mas se não estiver definido assim, o corpo pode não estar registrado no AuditLog

Talvez a melhor maneira de fazer isso seja com aquela outra regra que você deu usandoctlAção:

SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass"

Isso força o AuditEngine a estar ativado para solicitações de postagem - mesmo se o AuditLog estiver definido como Desativado. Isso também registrará que você acionou esta regra para ativá-la, o que não é realmente necessário ou útil, então eu mudaria o "log" para "nolog". A solicitação ainda será registrada (já que auditEngine foi definido como sim), mas esta regra que faz essa alteração não. A propósito, quando você usa ctl, isso afeta apenas esta solicitação, portanto o AuditEngine será redefinido para a próxima solicitação.

Como você afirma, isso parece funcionar, exceto que você não tem a parte C. Isto é definido comSecAuditLogParts. Por padrão, isso inclui partes C, então acho que isso significa que você deve ter alterado o padrão? Houve alguma razão para isso?

De qualquer forma, você pode definir isso para incluir partes C:

SecAuditLogParts ABCFHZ
SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,nolog,pass"

Ou, se você quiser apenas partes C registradas quando esta regra for acionada, você pode fazer isso como parte da regra:

SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,ctl:auditLogParts=ABCFHZ,nolog,pass"

A outra coisa a ter em conta é que as solicitações POST podem registrar dados confidenciais (senhas, números de cartão de crédito, números de segurança social... Etc). Registrar isso não é aconselhável e também pode violar a política da empresa e/ou quaisquer padrões que você esteja seguindo (por exemplo, conformidade com PCI). Portanto, é recomendável configurar regras de sanitização para mascarar esses dados. Veja aqui para mais informações:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#sanitiseArg

Responder2

Certifique-se do seguinte:

  1. TerSecRequestBodyAccess On

  2. Tente usar “auditlog” em vez de “log”

  3. Se você tiver SecAuditLogParts definido de forma personalizada, certifique-se de incluir o corpo da solicitação

informação relacionada