¿Qué regla puedo usar en ModSecurity para registrar la carga útil POST para un sitio específico?

¿Qué regla puedo usar en ModSecurity para registrar la carga útil POST para un sitio específico?

Necesito inspeccionar la carga útil de POST para un sitio web específico (el servidor está bastante ocupado y no activaría el registro de POST para todo el servidor).

El servidor es LiteSpeed ​​5.0.7. SecRequestBodyAccess está configurado en "Activado".

Primero probé con una cadena de reglas: la primera en la fase:1 para coincidir solo con las solicitudes de mi host deseado, pero la carga útil posterior está en la fase:2 y no creo que pueda hacer una cadena en 2 fases diferentes.

Luego intenté usar esto:

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

Pero no graba nada en modsec_audit.log.

¿Estoy haciendo algo mal o está relacionado con la compatibilidad de LiteSpeed ​​con ModSec?

Al final, también probé esta regla para registrar POST para todas las solicitudes:

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

Registra la solicitud pero no el cuerpo de la solicitud ( -C-- group si missing in modsec audit).

Respuesta1

Similar a esta pregunta:¿Cómo hacer que mod_security registre todos los datos POST?

Tienes razón, no puedes encadenar dos reglas en dos fases diferentes; sin embargo, la fase 2 tiene acceso a toda la información de la fase 1, así que muévelo a la fase 2 si quieres hacerlo de esta manera.

Esta regla que diste:

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

Es algo inútil. Esto registrará (en el registro principal) que se recibió una solicitud POST pero sin el cuerpo POST.

También se registrará en AuditEngine dependiendo de cuál sea suSecAuditEngineEl valor se establece en:

  1. Si tiene SecAuditEngine configurado en Activado, todo se registra en el registro de auditoría y no se necesita la regla anterior. Esto llena los archivos de registro rápidamente, por lo que no se recomienda.
  2. Si tiene SecAuditEngine configurado en RelevantOnly, también se registrará aquí.
  3. Si SecAuditEngine está desactivado, nunca se registrará en el registro de auditoría.

Por lo general, es mejor tener SecAuditEngine configurado en RelevantOnly (que sospecho que es lo que ya tiene), pero si no está configurado así, es posible que el cuerpo no se registre en AuditLog.

Quizás una mejor manera de hacerlo es con esa otra regla que diste usandocontrolacción:

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

Esto obliga a AuditEngine a estar activado para solicitudes de publicación, incluso si AuditLog está configurado en Desactivado. Esto también registrará que ha activado esta regla para activarla, lo cual no es realmente necesario ni útil, por lo que cambiaría el "registro" a "nolog". La solicitud aún se registrará (ya que auditEngine se configuró en sí), pero esta regla que realiza ese cambio no lo hará. Por cierto, cuando usa ctl, esto solo afecta esta solicitud, por lo que AuditEngine se restablecerá para la siguiente solicitud.

Como usted dice, esto parece funcionar excepto que no tiene la parte C. Esto se establece conPartes de registro de auditoría secundaria. De forma predeterminada, esto incluye partes C, así que supongo que eso significa que debes haber cambiado el valor predeterminado. ¿Hubo alguna razón para esto?

De todos modos, puedes configurarlo para que incluya partes C:

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

O, si solo desea que se registren las partes C cuando se activa esta regla, puede hacer esto como parte de la regla:

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

La otra cosa a tener en cuenta es que las solicitudes POST pueden registrar datos confidenciales (contraseñas, números de tarjetas de crédito, números de seguro social... Etc). No se recomienda registrarlos y también puede infringir la política de la empresa y/o cualquier estándar que esté siguiendo (por ejemplo, cumplimiento de PCI). Por lo tanto, se recomienda establecer reglas de desinfección para enmascarar estos datos. Vea aqui para mas informacion:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#sanitiseArg

Respuesta2

Asegúrese de lo siguiente:

  1. TenerSecRequestBodyAccess On

  2. Intente utilizar "auditlog" en lugar de "log"

  3. Si tiene SecAuditLogParts definidos de forma personalizada, asegúrese de que incluya el cuerpo de la solicitud

información relacionada