特定のWebサイトのPOSTペイロードを検査する必要があります(サーバーはかなりビジーで、サーバー全体のPOSTロギングをオンにしません)。
サーバーはLiteSpeed5.0.7です。 SecRequestBodyAccessは「オン」に設定されています。
最初に一連のルールを試してみました。最初のルールはフェーズ1で、目的のホストのリクエストのみに一致しますが、POSTペイロードはフェーズ2であり、2つの異なるフェーズでチェーンを作成することはできないと思います。
それから私はこれを使おうとしました:
SecRule REQUEST_METHOD "POST" "phase:2、log、id:22222223
ただし、modsec_audit.logには何も記録されていません。
私は何か間違ったことをしていますか、それともModSecとのLiteSpeedの互換性に関連していますか?
最後に、このルールを使用して、すべてのリクエストに対してPOST:SecRule REQUEST_METHOD "POST" "id:22222224、phase:2、ctl:auditEngine = On、log、pass"を記録しようとしました。
リクエストはログに記録されますが、リクエストの本文はログに記録されません(-C-- modsec監査でグループsiが欠落しています)。
この質問と同様: mod_securityにすべてをログに記録させる方法POSTデータ?
2つの異なるフェーズで2つのルールをチェーンすることはできませんが、フェーズ2はすべてのフェーズ1情報にアクセスできるため、この方法でこれを行う場合は、これをフェーズ2に移動してください。
あなたが与えたこのルール:
SecRule REQUEST_METHOD "POST" "phase:2,log,id:22222223
ちょっと無意味です。これにより、POSTリクエストが受信されたが、POST本文がない)が(メインログに)記録されます。
また、 SecAuditEngine 値が次のように設定されているかどうかに応じて、AuditEngineにログを記録します。
通常、SecAuditEngineをRelevantOnlyに設定するのが最善です(これはあなたがすでに持っているものだと思います)が、設定されていない場合、本文はAuditLogに記録されない可能性があります
おそらく、それを行うためのより良い方法は、 ctl アクションを使用して指定した他のルールを使用することです。
SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass"
これにより、AuditLogがOffに設定されている場合でも、ポストリクエストに対してAuditEngineが強制的にオンになります。これにより、このルールを実行したこともログに記録されますが、実際には必要ではないか、役に立たないため、「log」を「nolog」に変更します。リクエストは引き続きログに記録されますが(auditEngineがyesに設定されているため)、その変更を行うこのルールはログに記録されません。ところで、ctlを使用すると、これはこのリクエストにのみ影響するため、AuditEngineは次のリクエストのためにリセットされます。
あなたが言うように、これはあなたがCの部分を持っていないことを除いてうまくいくようです。これは SecAuditLogParts で設定されます。デフォルトではこれにはCパーツが含まれているので、デフォルトを変更したに違いないと思いますか?これには何か理由がありましたか?
とにかく、Cパーツを含めるように設定することができます。
SecAuditLogParts ABCFHZ
SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,nolog,pass"
または、このルールが実行されたときにCパーツのみをログに記録する場合は、ルールの一部としてこれを行うことができます。
SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,ctl:auditLogParts=ABCFHZ,nolog,pass"
その他の注意点は、POSTリクエストは機密データ(パスワード、クレジットカード番号、社会保障番号など)をログに記録できることです。これらをログに記録することはお勧めできません。また、会社を壊す可能性もあります。ポリシーおよび/または準拠している標準(PCIコンプライアンスなど)。したがって、このデータをマスクするサニタイズルールを設定することをお勧めします。詳細については、こちらを参照してください: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#sanitiseArg
次のことを確認してください。
持ってる SecRequestBodyAccess On
「log」の代わりに「auditlog」を使用してみてください
カスタム定義のSecAuditLogPartsがある場合は、リクエスト本文が含まれていることを確認してください