web-dev-qa-db-ja.com

mod_securityの誤検知

Mod_securityを設定しただけで、多くの誤検知[??]が発生します。私はそれを検出でのみ実行しているので、まだ問題はありませんが、これらのフィルターは、ライブにする必要があるとリクエストのブロックを開始します。

これらのフィルターの重要性を100%理解していないのではないかと思います。ほぼすべてのドメインで数百のフィルターを取得しており、すべてのリクエストは正当に見えます。

Request Missing a User Agent Header
Request Missing an Accept Header

ここで行うのに最適なことは何ですか?これらのフィルターを無効にする必要がありますか?リクエストがブロックされないように、重大度を低く設定できますか?

これが完全なエントリです

[22/Nov/2011:21:32:37 --0500] u6t6IX8AAAEAAHSiwYMAAAAG 72.47.232.216 38543 72.47.232.216 80
--5fcb9215-B--
GET /Assets/XHTML/mainMenu.html HTTP/1.0
Host: www.domain.com
Content-type: text/html
Cookie: pdgcomm-babble=413300:451807c5d49b8f61024afdd94e57bdc3; __utma=100306584.1343043347.1321115981.1321478968.1321851203.4; __utmz=100306584.1321115981.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=XXXXXXXX%20clip%20ons

--5fcb9215-F--
HTTP/1.1 200 OK
Last-Modified: Wed, 23 Nov 2011 02:01:02 GMT
ETag: "21e2a7a-816d"
Accept-Ranges: bytes
Content-Length: 33133
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

--5fcb9215-H--
Message: Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "47"] [id "960015"] [rev "2.2.1"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"]
Message: Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "66"] [id "960009"] [rev "2.2.1"] [msg "Request Missing a User Agent Header"] [severity "NOTICE"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER_UA"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"]
Message: Warning. Operator LT matched 5 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity_crs/base_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 4, SQLi=5, XSS=): Request Missing a User Agent Header"]
Stopwatch: 1322015557122593 24656 (- - -)
Stopwatch2: 1322015557122593 24656; combined=23703, p1=214, p2=23251, p3=2, p4=67, p5=168, sr=88, sw=1, l=0, gc=0
Producer: ModSecurity for Apache/2.6.1 (http://www.modsecurity.org/); core ruleset/2.2.1.
Server: Apache/2.2.3 (CentOS)
12
Sean Kimball

Producer行に表示された監査ログエントリのセクションHを見ると、OWASP ModSecurityコアルールセット(CRS)v2.2.1を使用していることがわかります。この場合、プロジェクトページのドキュメント情報を確認することをお勧めします-

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project#tab=Documentation

具体的には、私が行ったこれら2つのブログ投稿を確認する必要があります-

  1. http://blog.spiderlabs.com/2010/11/advanced-topic-of-the-week-traditional-vs-anomaly-scoring-detection-modes.html
  2. http://blog.spiderlabs.com/2011/08/modsecurity-advanced-topic-of-the-week-exception-handling.html

ブログ投稿#1は、CRSに使用している「操作モード」を理解するのに役立ちます。監査ログを見ると、異常スコアリングモードで実行しているように見えます。これは、ルールが検出を行っている場所ですが、modsecurity_crs_49_inbound_blocking.confファイルの全体的な異常スコアを検査することにより、ブロックの決定が個別に行われています。

ブログ投稿#2は、これら2つのルールをどのように処理するかを正確に決定できるので便利です。これらが重要でないと思われる場合は、SecRuleRemoveByIdディレクティブを使用して、独自のmodsecurity_crs_60_exceptions.confファイルからこれらのルールを無効にすることをお勧めします。現在のところ、これら2つのアラートは、インバウンド異常スコア4のみを生成しています。これはmodsecurity_crs_10_config.confファイルで設定されているデフォルトのしきい値5を下回っているため、ブロックされません。

監査ログの例を見ると、このリクエストはアラートを生成しましたが、トランザクションはブロックされませんでした。もしそうなら、セクションHのメッセージデータは「アクセスが拒否されました...」と述べていたでしょう。

これらのルールの目的については、標準のWebブラウザー(IE、Chrome、Firefoxなど)から生成されない要求にフラグを立てることを目的としています。これらのブラウザーはすべて、User-AgentとAcceptの両方の要求ヘッダーを送信するためです。 HTTPRFC仕様。

最後のコメント-これらのタイプの質問には、公式のOWASP ModSecurityCRSメールリストを使用することをお勧めします- https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-セット

アーカイブを検索して回答を探すこともできます。

乾杯、ライアン・バーネットModSecurityプロジェクトリーダーOWASP ModSecurityCRSプロジェクトリーダー

21
Ryan Barnett

これは誤検知ではありません。リクエストヘッダーにはUser-AgentヘッダーとAcceptヘッダーがありません。通常、これらはスキャナーツールまたはハックツールから送信されます。

5
Wei