このトピックでは、Webアプリケーションファイアウォール (WAF) によって保護されているWebサイトでのアクセス例外のトラブルシューティング方法について説明します。
手順
WAFによって保護されているWebサイトにアクセスできない場合は、次の方法で例外のトラブルシューティングを行います。
オリジンサーバーに障害があるかどうか: WAFをバイパスし、オリジンサーバーが期待どおりにリクエストに応答するかどうかを確認します。
WAFが通常のリクエストをブロックするかどうか: 保護モジュールを無効にし、WAFが通常のリクエストをブロックするかどうかを確認します。
例外が一般的な例外であるかどうかを確認: 例外が一般的な例外であるかどうかを確認し、共通アクセス例外テーブルの手順に従って例外のトラブルシューティングを行います。
例外のトラブルシューティングに使用できるツールについては、「付録: 共通ツール」をご参照ください。
オリジンサーバーに障害があるかどうかを確認する
アクセスするWebサイトがWAFをバイパスし、オリジンサーバーが期待どおりにリクエストに応答するかどうかを確認するには、次の手順を実行します。
オリジンサーバーのセキュリティグループ、ブラックリスト、ホワイトリスト、ファイアウォール、その他のセキュリティ製品を無効にして、back-to-origin IPアドレスがブロックされないようにします。
コンピューターのhostsファイルを変更して、ドメイン名をオリジンサーバーのパブリックIPアドレスにマップします。 オリジンサーバーは、Elastic Compute Service (ECS) インスタンス、server Load Balancer (SLB) インスタンス、またはオンプレミスサーバーでホストできます。
コンピューターのブラウザーを使用してWebサイトにアクセスし、例外が続くかどうかを確認します。
Webサイトにアクセスできない場合、オリジンサーバーに障害があります。 プロセス、CPU使用率、メモリ使用量、webログなど、オリジンサーバーの動作ステータスを確認し、例外のトラブルシューティングを行うことを推奨します。
Webサイトにアクセスできる場合、例外はオリジンサーバーによるものではありません。 WAFが通常のリクエストをブロックするために例外が発生するかどうかを確認します。 詳細については、このトピックの「WAFが通常のリクエストをブロックするかどうかの確認」をご参照ください。
WAFが通常のリクエストをブロックするかどうかを確認する
WAFの保護モジュールを無効にし、WAFが通常のリクエストをブロックするかどうかを確認するには、次の手順を実行します。
を無効にします。Disable the保護ルールエンジンWebサイトのドメイン名に対して、例外が続くかどうかを確認します。 詳細については、「保護ルールエンジン機能の設定」をご参照ください。
保護ルールエンジンを無効にした後にWebサイトにアクセスできる場合は、[保護ルールエンジン] セクションの [保護ルールグループ] パラメーターを [ルーズルールグループ] に設定することを推奨します。 デフォルトでは、中ルールグループが選択されています。 Log Service for WAF機能を使用して、ブロックされたリクエストのURLを取得することもできます。 次に、URLから送信されるすべてのリクエストを許可するようにカスタム保護ポリシーを設定します。 詳細については、「カスタム保護ポリシーの設定」をご参照ください。
保護ルールエンジンを無効にしても例外が発生しない場合は、Webサイトのドメイン名のHTTPフラッド保護を無効にします。 詳細については、「HTTPフラッド保護の設定」をご参照ください。
HTTPフラッド保護を無効にした後にWebサイトにアクセスできる場合は、HTTPフラッド保護セクションでModeパラメーターをPreventionに設定することを推奨します。 Modeが既にPreventionに設定されている場合は、この手順をスキップします。 Log Service for WAF機能を使用して、ブロックされたリクエストのURLを取得することもできます。 次に、URLから送信されるすべてのリクエストを許可するようにカスタム保護ポリシーを設定します。 詳細については、「カスタム保護ポリシーの設定」をご参照ください。
HTTPフラッド保護を無効にした後も例外が続く場合、例外は発生しません。これは、WAFが通常のリクエストをブロックするためです。 詳細については、このトピックの「例外が一般的な例外であるかどうかの確認」をご参照ください。
例外が一般的な例外であるかどうかを確認する
WAFを無効にした後に例外が消え、WAFを有効にした後も例外が発生し続ける場合は、次の表の手順に従って例外を回避します。
問題 | 説明 | 原因 | 解決策 |
410 ゴーンエラー | 410ページが表示され、Webサイトが一時的に利用できないこと、およびプロトコルとポートがWAFに追加されていないこと、またはHTTPステータスコード410が返されることが表示されます。 | Webサイトのドメイン名がWAFに追加されていないか、Webサイトへのアクセスに使用されるポートがリクエストの送受信に指定されていません。 たとえば、Webサイトへのアクセスにポート443が使用されているが、要求の受信と転送にポートが指定されていない場合、410ページが表示されます。 | Webサイトのドメイン名をWAFに追加するか、WAFコンソールでポートを指定します。 詳細については、「ドメイン名の追加」をご参照ください。 |
405 メソッドが許可されていないエラー | 405ページが表示され、アクセスがブロックされているか、HTTPステータスコードの405が返されます。 | アクセス要求は、カスタム保護ポリシーまたは保護ルールエンジンによってブロックされます。 |
|
302 見つかったエラー | システムは接続がリセットされることを促します。 HTTPステータスコード302が返され、Set-Cookieヘッダーが応答に含まれます。 | IPアドレスからのアクセスは、HTTPフラッド保護をトリガーします。 | Webサイトのドメイン名のHTTPフラッド保護を無効にします。 詳細については、「HTTPフラッド保護の設定」をご参照ください。 HTTPフラッド保護を無効にした後にWebサイトにアクセスできる場合は、HTTPフラッド保護セクションでModeパラメーターをPreventionに設定することを推奨します。 Modeが既にPreventionに設定されている場合は、この手順をスキップします。 Log Service for WAF機能を使用して、ブロックされたリクエストのURLを取得することもできます。 次に、URLから送信されるすべてのリクエストを許可するようにカスタム保護ポリシーを設定します。 詳細については、「カスタム保護ポリシーの設定」をご参照ください。 |
HTTPS アクセス例外 | クライアントがHTTPSリクエストを送信すると、証明書 | WAFでは、ブラウザがサーバー名表示 (SNI) をサポートする必要があります。 ただし、クライアントのブラウザはSNIをサポートしていない場合があります。 | デフォルトでは、macOSおよびiOSオペレーティングシステムはSNIをサポートしています。 WindowsおよびAndroidオペレーティングシステムの場合、オペレーティングシステムがSNIと互換性があることを確認してください。 詳細については、「SNI互換性から生じるHTTPSアクセス例外 (証明書が信頼できない) 」をご参照ください。 |
502 Bad Gatewayエラー | Webサイトにアクセスすると、空白の画面エラーが発生し、HTTPステータスコードの502が返されます。 | 配信元サーバーにパケット損失が発生するか、到達不能になると、WAFはHTTPステータスコード502を返します。 |
|
504 Gateway Timeoutエラー | アップストリームサーバーはリクエストを時間内に完了できず、HTTPエラーコード504が返されます。 |
|
|
ドメイン名へのpingの失敗 | ドメイン名をpingすることができず、DDoS攻撃がWAFで発生し、ブラックホールフィルタリングがトリガーされたというテキストメッセージが表示されます。 | WAFはDDoS攻撃を軽減できません。 | Anti-DDoSを有効にしてDDoS攻撃を軽減します。 詳細については、「Alibaba Cloud Anti-DDoSソリューションの比較」をご参照ください。 |
不均衡なサーバーロード | バックエンドの複数のECSインスタンス間で負荷が不均衡になります。 | WAFはIPアドレスにレイヤー4ハッシュアルゴリズムを使用します。 Anti-DDoS ProまたはAnti-DDoS PremiumがWAFとともにデプロイされている場合、またはSLBがレイヤー4転送を使用している場合、ECSインスタンスの負荷が不均衡になる可能性があります。 | WAFが有効になっているSLBを使用してレイヤ7トラフィックをルーティングおよび保護するようにECSを設定し、cookieベースのセッション維持と負荷分散を有効にします。 |
WeChat または Alipay のコールバックに失敗 | WeChat または Alipay コールバックに失敗します。 | 考えられる理由は、HTTPフラッド保護ルールが高頻度のリクエストをブロックするか、HTTPSコールバックが使用されますが、WeChatまたはAlipayがSNIをサポートしていないためです。 |
|
付録: 一般的なツール
Chrome DevTools: Google Chromeが提供するこのツールを使用して、ページ上の要素の読み込みステータスを表示できます。 F12を押してツールを開き、[ネットワーク] タブに移動します。
ping: pingテストツールを使用して、ネットワーク障害を分析および特定できます。 このツールはWindowsとLinuxでサポートされています。 Windowsでは、Win + Rを押し、cmdと入力してコマンドプロンプトを開きます。 コマンド:
pingドメイン名またはIPアドレス
Linux用のtracerouteおよびWindows用のtracert: リンクトレースツールを使用して、パケット損失が発生するホップを検出できます。 Windowsでは、Win + Rを押し、cmdと入力してコマンドプロンプトを開きます。 コマンド:
tracert -dドメイン名またはIPアドレス
nslookup: このツールを使用して、ドメイン名解決が期待どおりに機能するかどうかを検出できます。 Windowsでは、Win + Rを押し、cmdと入力してコマンドプロンプトを開きます。 コマンド:
nslookupドメイン名