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

2

Eu preciso inspecionar a carga POST para um site específico (o servidor está bastante ocupado e eu não ligaria o log POST para todo o servidor).

O servidor é o LiteSpeed 5.0.7. SecRequestBodyAccess está definido como "On".

Primeiro eu tentei com uma cadeia de regras: a primeira em fase: 1 para corresponder apenas aos pedidos do meu host desejado, mas a carga do post está em fase: 2 e eu não acho que posso fazer uma cadeia em 2 fases diferentes .

Então eu tentei usar isso:

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

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

Estou fazendo algo errado ou relacionado à compatibilidade do LiteSpeed com o ModSec?

No final, também tentei esta regra para gravar POST para todas as solicitações: SecRule REQUEST_METHOD "POST" "id: 22222224, fase: 2, ctl: auditEngine = On, log, pass".

Ele registra a solicitação, mas não o corpo da solicitação (o grupo -C está ausente na auditoria modsec).

    
por Andy B 13.10.2015 / 12:37

2 respostas

2

Semelhante a esta pergunta: Como obter o mod_security para registrar todos os dados do POST?

Você está correto, você 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, basta movê-lo para a fase 2, se você quiser fazer isso desta maneira.

Esta regra que você deu:

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

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

Ele também fará o login no AuditEngine, dependendo de qual é o valor do SecAuditEngine definido como:

  1. Se você tiver o SecAuditEngine configurado como On, 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 o SecAuditEngine estiver desativado, ele nunca será registrado no log de auditoria.

Geralmente, é melhor ter o SecAuditEngine definido como RelevantOnly (que eu suspeito que você já tenha), mas se isso não for definido para isso, o corpo pode não estar logado no AuditLog

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

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

Isso força o Mecanismo de Auditoria a estar ativo para solicitações de postagem - mesmo que o AuditLog esteja definido como Desativado. Isso também irá registrar que você disparou essa regra para transformá-la no que não é realmente necessário ou útil, então altero o "log" para "nolog". A solicitação ainda será registrada (como o auditEngine foi definido como sim), mas essa regra não fará isso. BTW quando você usa o ctl, isso afeta somente essa solicitação, portanto, o AuditEngine retornará para a próxima solicitação.

Conforme você afirma, parece funcionar, exceto que você não tem a parte C. Isso é definido com SecAuditLogParts . Por padrão, isso inclui partes C, então acho que isso significa que você deve ter alterado o padrão? Houve algum motivo 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 que apenas as partes C sejam registradas quando essa regra for disparada, você poderá 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 seguridade social ... Etc). O registro desses dados 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 o PCI). Portanto, é recomendável configurar regras de higienização para mascarar esses dados. Veja aqui para mais informações: link

    
por 15.10.2015 / 08:35
1

Certifique-se do seguinte:

  1. Tem SecRequestBodyAccess On

  2. Tente usar "auditlog" em vez de "log"

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

por 13.10.2015 / 16:15