WAF(Webアプリケーションファイアウォール)マネージドルールについて
WAF(Webアプリケーションファイアウォール)マネージドルールについて
WAFマネージドルールはドメインへのWebリクエストを監視し、お客さまが有効にしたルールセットに基づき、不要なトラフィックを除外します。
本記事の内容
概要
Cloudflare WAF(Webアプリケーションファイアウォール)の機能であるマネージドルールはHTTP GETリクエストとPOSTリクエストの不審なアクティビティを識別し、削除します。
マネージドルールが識別する 悪意のあるコンテンツの例:
- コメントスパムでよく使われるキーワード(XX、ロレックス(Rolex)、_バイアグラ(Viagra)_など)
- クロスサイト スクリプティング攻撃(XSS)
- SQL インジェクション(SQLi)
マネージドルールは、Proプラン、Businessプラン、Enterprise プランの Cloudflareにプロキシされるサブドメインでご利用いただけます。セキュリティ>WAF>マネージドルールでマネージドルールの設定を管理してください。マネージドルールには3つのパッケージがあります。
- Cloudflare 管理ルールセット
- パッケージ:OWASP ModSecurity Core Rule Set
- お客様のリクエストによるルールセット
ブロックした脅威は、ファイアウォール分析アクティビティログで確認できます。セキュリティ>概要からアクセスします。
考慮すべき重要事項
- マネージドルールは、遅延の制限を導入しています。
- WAFマネージドルールの変更をグローバルにアップデートするためにかかる時間は、約30秒です。
- Cloudflareではトラフィックのフィルタリングに独自のルールを採用しています。
- WebSocketを確立しても、後続のリクエストに関するマネージドルールはトリガーされません。
- マネージドルールがJSONレスポンスを解析し、APIで対象となる脆弱性を特定します。JSONペイロード解析は、128KBに制限されます。
- マネージドルールは、パディングテクニックを軽減します。当社では、以下をおすすめしています。
- ルール_100048_をONにしてください。このルールは現在、パディングタイプの攻撃から保護しますが、デフォルトでデプロイされていないため、お客様の環境で多くの誤検知を引き起こします。しかし、お客様がマネージドルール設定をチューニングすることは大切です。Cloudflareはより良いソリューションに向けて長期的に取り組んでおります。
- より大きなペイロード(> 128 KB)をブロックするためにヘッダーおよび/またはボディを確認する必要がある場合は、Expression Editorを利用してファイアウォールルールを1つ作成してください。これは誤検知を生成しやすいため、はじめに_Log_モードでファイアウォールルールをテストしてください。
- http.request.body.truncated
- http.request.headers.truncated
- Cloudflareダッシュボードでマネージドルールが_Off_になっていても、ルールID_WP0025B_や_100043A_、_100030_といったCloudflareが無効にしないマネージドルールが一部あります。
誤検知と見逃しに関する注意
デフォルトでは、WAFマネージドルールは、Cloudflareダッシュボードから完全に管理でき、ほとんどのWebサイトやWebアプリケーションとの互換性があります。しかし、巨大なインターネットの規模を考慮すると、誤検知と見逃しは起こり得ることです。
- 誤検知:正当なリクエストが悪意のあるものとして検出され、フィルターリングされること。
- 見逃し:悪意のあるリクエストがフィルタリングされないこと。
WAFマネージドルール誤検知のトラブルシューティング
疑わしいコンテンツであるかどうかの定義は、主観的でWebサイトによって違います。 Webサイトに掲載されたPHPコードを例にすると、Webサイトがコード化する方法を教え、訪問者にPHPコードの提出を求めない限り、それは疑わしいと言えます。 そのため、このようなWebサイトでは、通常の動作を妨げる関連WAFルールを無効にする必要があります。
誤検知のテストをするために、WAFマネージドルールをシミュレートモードに設定し、チャレンジやブロックをせずに潜在的な攻撃へのレスポンスを記録します。さらに、ファイアウォール分析アクティビティログを使って、どのWAFルールが誤検知の原因となっているのかを判断します。
従来型WAFが原因の誤検知を確認した場合、解決策がいくつか考えられます。
- クライアントのIP アドレスを Ip Access ルール許可リストに追加する:ブラウザ、またはクライアントが同じIP アドレスからの訪問である場合、許可することが推奨されます。
- 当該の マネージドルールを無効にする: 誤検知のブロックやチャレンジを停止しますが、サイト全体のセキュリティも低下します。WAFルールID_981176_でブロックされたリクエストは、OWASPルールを参照します。OWASPの感度を下げて、問題を解決します。
- ファイアウォールルールでWAFマネージドルールをバイパスする: バイパス処理を行うファイアウォールルールを作成し、パラメーターの特定の組み合わせに対するWAFマネージドルールを無効にします。たとえば、特定のURLと特定のIP アドレス、またはユーザーエージェントに関するマネージドルールをバイパスします。
- (非推奨)1つのURLへのトラフィックのWAFを無効にする: 特定のURLエンドポイントでセキュリティを弱めます。 Page Rules経由で設定されます。
新しいWAFが原因の誤検知を確認した場合、いくつか解決策が考えられます。
- WAF例外を追加する: CloudflareダッシュボードまたはルールセットAPIを使用してWAF例外を定義することができます。
- 当該の マネージドルールを無効にする: 誤検知のブロックやチャレンジを停止しますが、サイト全体のセキュリティも低下します。WAFルールID_949110_によってブロックされたリクエストは、 新しいOWASPルールを参照します。OWASPの感度を下げて、問題を解決します。
**注意:**予想通りにWAFマネージドルールがトリガーするかどうかを確認するために、 Cloudflareサポートにお問い合わせいただく場合、懸念される当該のリクエストが送信される間にキャプチャされた HARファイルを1つご提供ください。
追加のガイドラインは下記の通りです。
- 特定のルールで誤検出が発生した場合、全体のルールであるグループを_Off_にするのではなく、ルールの_モード_を無効に設定します。
- Webサイトの管理者コンテンツでの誤検出については、 Page Ruleを作成して、サイトリソース(例:yoursite.com/admin)の_admin_セクションのセキュリティを無効にします。
WAFマネージドルール見逃しのトラブルシューティング
見逃しを特定するには、オリジンWebサーバーでHTTPログを確認してください。見逃しを減らすために、次のチェックリストをご活用ください。
- セキュリティ>WAF>マネージドルールの順でWAFマネージドルールを_有効_にしましたか?
- Page Rules経由でWAFマネージドルールが_無効_になっていますか?
- すべてのマネージドルールがデフォルトで有効になっているわけではないので、個々のマネージドルールのデフォルト処理をご確認ください。
- たとえば、Cloudflareはデフォルトでユーザーエージェントが空になっているリクエストを許可します。ユーザーエージェントが空になっているリクエストをブロックするには、WAFルールのモードをブロックに切り替えます。
- もう1つの例としては、軽減されていないSQLインジェクション攻撃をブロックしようと試みる場合に、関連するSQLi ルールが有効になっていて、Cloudflare スペシャルグループでブロックに設定するようにします。
- HTTPトラフィックを提供するDNSレコードは、Cloudflareを介してプロキシされているか?
- ファイアウォールルールがマネージドルールをバイパスしていますか?
- IP Access ルールまたはファイアウォールルールで許可された国、ASN、IP範囲、またはIPが攻撃のトラフィックと一致していますか?
- 悪意のあるトラフィックは、オリジンIPアドレスに向けられ、Cloudflare保護をバイパスしていますか?オリジンWebサーバーで、 CloudflareのIP アドレスからのトラフィックを除くすべてのトラフィックがブロックされます。
Cloudflareの管理ルールセット
Cloudflare管理ルールセットにはCloudflareが作成/管理するセキュリティルールが含まれています。グループ下のルールセット名をクリックすると、ルール説明が表示されます。
Cloudflareスペシャルは、グループの1つで、 一般的な攻撃に対するコアファイアウォールセキュリティを提供します。
ルールセットの表示では、Cloudflareはデフォルトモード下で各ルールのデフォルトのアクションを一覧表示しています。特定のCloudflare****管理ルールセット内で、個々のルールに使用できるモードは次のとおりです。
- デフォルト(Default) - 特定のルールを表示する際に_デフォルトモード_の下に表示されるデフォルトアクションを実行します。
- 無効化(Disable)- グループ内で特定のルールをOffにします**。**
- ブロック (Block)- リクエストを破棄します。
- 従来型のCAPTCHA - 訪問者にCAPTCHAチャレンジページを送信します。
- シミュレート - リクエストは許可されますが、アクティビティログに記録されます。
CloudflareのWAF changelogでは、お客様がCloudflareマネージドルールセットに対して実行中の変更をモニタリングできます。
パッケージ:OWASP ModSecurity Core Rule Set
CloudflareのOWASPパッケージについて
パッケージ:OWASP ModSecurity Core Rule Set が、OWASPルールのトリガー数に基づいて、各リクエストにスコアを割り当てます。 OWASPルールの中には、他よりも感度スコアが高いものもあります。OWASPがリクエストを評価した後、Cloudflareは、最終スコアとドメインに設定された感度を比較します。スコアが感度を超えている場合、OWASP ModSecurity Core Rule Setパッケージ内で設定されているアクションに基づいて、リクエストが処理されます:
- ブロック - リクエストを破棄します。
- チャレンジ - 訪問者に対してCAPTCHAチャレンジページを送信します。
- シミュレート - リクエストは許可されますが、アクティビティログに記録されます。
特定の感度のために、WAFのトリガーが必要になる感度スコアは次の通りです:
- 低 - 60位上
- 中 - 40以上
- 高 - 25以上
Ajax リクエストの場合は、代わりに次のスコアが適用されます。
- 低 - 120以上
- 中 - 80以上
- 高 - 65以上
アクティビティログを表示して、最終スコアとトリガーされたルールをそれぞれ確認します。
CloudflareのOWASPパッケージの管理
パッケージ:OWASP ModSecurity Core Rule Setには、 OWASPプロジェクトのルールがいくつか含まれています。CloudflareはOWASPルールの記述やキュレートを行いません。グループの下にあるルールセット名をクリックして、ルール説明を表示します。Cloudflare管理ルールセットとは異なり、特定のOWASPルールが_On_または_Off_になります。
OWASP Thresholdsを管理するには、パッケージ: OWASP ModSecurity Core Rule Setの下にある_感度_を_低_、中、高に設定します。感度の設定を_Off_にすると、ルールを含めたOWASPパッケージ全体が無効になります。ビジネス業界や業務に応じて適切な感度を決めます。たとえば、_「低」_の設定が適切なのは次の場合です。
- WAFをトリガーする可能性が高い特定のビジネス業界、そして
- 大きなファイルのアップロード。
Cloudflareでは、最初に感度を_低_に設定し、感度を上げる前に誤検知の確認を行うことをお勧めしています。