このトピックでは、Web Application Firewall (WAF) によって保護されている Web サイトのアクセス問題の診断と解決方法について説明します。
操作手順
Web サイトを Web Application Firewall に追加した後のアクセス問題をトラブルシューティングするには、次の手順に従います。
オリジンサーバーの問題の確認:WAF をバイパスして、オリジンサーバーが問題の原因であるかどうかを判断します。
WAF の誤検知の確認:保護モジュールを一時的に無効にして、WAF が正当なリクエストをブロックしているかどうかを判断します。
一般的なアクセスエラーのトラブルシューティング:一般的なエラーのリストを参照して、問題を分析および解決します。
この手順で使用されるツールの詳細については、「付録:一般的なツール」をご参照ください。
オリジンサーバーの問題の確認
次の手順に従って WAF をバイパスし、問題がオリジンサーバーに起因するかどうかを判断します。
セキュリティグループ、ブラックリスト、ホワイトリスト、ファイアウォール、その他のセキュリティ製品など、オリジンサーバーのセキュリティ対策を無効にします。これにより、サーバーが WAF のバックツーオリジン IP アドレスをブロックするのを防ぎます。
ローカルコンピューターの hosts ファイルを変更して、ドメイン名を対応する Elastic Compute Service (ECS) インスタンス、Server Load Balancer (SLB) インスタンス、またはサーバーのパブリック IP アドレスにマッピングします。これは、WAF で設定したオリジンサーバーの IP アドレスです。
ローカルコンピューターのブラウザからドメイン名にアクセスし、WAF なしで問題が解決するかどうかを確認します。
問題が解決しない場合、問題はオリジンサーバーにある可能性があります。サーバーのステータス (プロセス、CPU、メモリ使用量、Web ログなど) を確認し、異常を特定して修正します。
問題が発生しない場合、オリジンサーバーは原因ではありません。トラブルシューティングを続けるには、「WAF の誤検知の確認」をご参照ください。
WAF の誤検知の確認
次の手順に従って WAF の保護機能を無効にし、WAF が正当なリクエストを誤ってブロックしているかどうかを判断します。
ドメイン名の [保護ルールエンジン] を無効にし、問題が解決するかどうかを確認します。詳細については、「保護ルールエンジンの設定」をご参照ください。
問題が解決した場合、[保護ルールエンジン] の 保護ルールグループ を 柔軟なルールグループ に変更します。デフォルト設定は 中程度のルールグループ です。または、Log Service を使用して問題のある URL を分析し、その URL へのリクエストを許可するカスタム保護ポリシーを作成することもできます。詳細については、「カスタム保護ポリシーの設定」をご参照ください。
[保護ルールエンジン] を無効にしても問題が解決しない場合は、ドメイン名の HTTP Flood 防御 を無効にし、問題が解決するかどうかを確認します。詳細については、「HTTP フラッド攻撃対策の設定」をご参照ください。
問題が解決した場合、HTTP Flood 防御 のモードを Protection に設定します。モードがすでに Protection に設定されている場合は、この手順をスキップできます。または、Log Service を使用して問題のある URL を分析し、その URL へのリクエストを許可するカスタム保護ポリシーを作成することもできます。詳細については、「カスタム保護ポリシーの設定」をご参照ください。
HTTP Flood 防御 を無効にしても問題が解決しない場合、問題は WAF の誤検知ではありません。「一般的なアクセスエラーのトラブルシューティング」に進んでください。
一般的なアクセスエラーのトラブルシューティング
WAF をバイパスすると問題が解消し、WAF を有効にすると一貫して再発する場合は、次の表を使用して問題を特定し、解決してください。
問題 | 現象 | 原因 | 解決策 |
410 Gone | 「410 Web サイトは一時的に利用できません」ページが表示されるか、HTTP 410 ステータスコードが返されます。このページは、ドメイン名のプロトコルとポートが WAF に追加されていないことを示します。 | ドメイン名またはポートが WAF で設定されていません。たとえば、WAF でポート 80 のみを設定しているのに、ユーザーがポート 443 で Web サイトにアクセスしようとすると、WAF は 410 エラーを返します。 | WAF コンソールで必要なドメイン名またはポートを追加します。詳細については、「ドメイン名の追加」をご参照ください。 |
405 Method Not Allowed | 405 ブロックページが表示されるか、HTTP 405 ステータスコードが返されます。 | リクエストがカスタム保護ポリシーまたは保護ルールエンジンによってブロックされました。 |
|
302 Found (接続リセット) | 特定の IP アドレスから Web サイトにアクセスすると、接続がリセットされ、HTTP 302 ステータスコードが返され、応答に Set-Cookie ヘッダーが含まれます。 | その IP アドレスからのリクエストが HTTP フラッド攻撃対策ルールをトリガーしました。 | ドメイン名の HTTP Flood 防御 を無効にし、問題が解決するかどうかを確認します。詳細については、「HTTP フラッド攻撃対策の設定」をご参照ください。 これでアクセスが回復した場合、問題は誤検知です。HTTP Flood 防御 のモードを Protection に設定します。モードがすでに Protection に設定されている場合は、この手順をスキップできます。または、Log Service を使用して問題のある URL を分析し、その URL へのリクエストを許可するカスタム保護ポリシーを作成することもできます。詳細については、「カスタム保護ポリシーの設定」をご参照ください。 |
HTTPS アクセスの問題 | HTTPS リクエストが | WAF はクライアントブラウザがサーバー名表示 (SNI) をサポートしている必要があります。このエラーは、クライアントのブラウザが SNI をサポートしていない場合に発生します。 | macOS はデフォルトで SNI をサポートしています。Windows および Android オペレーティングシステムでは、SNI の互換性を確保する必要がある場合があります。詳細については、「SNI の非互換性による HTTPS アクセスの問題 (信頼できないサーバー証明書)」をご参照ください。 |
502 Bad Gateway (空白画面) | Web サイトに空白の画面が表示され、HTTP 502 ステータスコードが返されます。 | WAF がオリジンサーバー (ECS インスタンス、SLB インスタンス、物理サーバーなど) に到達できない場合、またはパケット損失が発生した場合、502 エラーを返します。 |
|
504 Gateway Timeout | Web サイトに「Gateway Timeout」エラーが表示され、HTTP 504 ステータスコードが返されます。 |
|
|
ドメイン名に ping できない | ドメイン名に ping で到達できず、WAF インスタンスが DDoS 攻撃を受けており、そのトラフィックがブラックホールにルーティングされているというアラートを受け取ります。 | WAF はボリューム型 DDoS 攻撃から保護しません。 | Anti-DDoS を有効にして DDoS 攻撃を軽減します。詳細については、「Alibaba Cloud Anti-DDoS ソリューションの比較」をご参照ください。 |
サーバー負荷の不均衡 | トラフィックが複数のバックエンドサーバーに均等に分散されません。 | WAF はレイヤー 4 IP ハッシュを使用します。Anti-DDoS を WAF と連携させる場合、またはレイヤー 4 転送用に設定された SLB インスタンスを使用する場合、トラフィックが ECS インスタンスに不均等に分散されることがあります。 | WAF と ECS インスタンス間の負荷分散には SLB インスタンスを使用します。SLB インスタンスをレイヤー 7 転送用に設定し、Cookie ベースのセッション維持を有効にします。 |
WeChat または Alipay のコールバックの失敗 | WeChat または Alipay からのコールバックが失敗します。 | この問題は、高頻度のアクセスが HTTP フラッド攻撃対策ルールによってブロックされた場合、またはコールバックが HTTPS を使用し、サービス (WeChat または Alipay) が SNI をサポートしていない場合に発生する可能性があります。 |
|
付録:一般的なツール
Chrome DevTools:ネットワークアクティビティとページ要素の読み込みを検査するために Chrome に組み込まれた一連の Web 開発者向けツールです。F12 キーを押して DevTools を開き、[ネットワーク] タブに移動します。
PING: Windows および Linux でネットワーク接続をテストするためのコマンドラインツールです。Windows では、Win+R を押して
cmdと入力すると、コマンドプロンプトが開きます。使用方法:ping。traceroute (Linux) および tracert (Windows):宛先へのネットワークパスをトレースし、各ホップでのパケット損失を特定するためのコマンドラインツールです。Windows では、Win+R を押して cmd を入力し、コマンドプロンプトを開きます。使用法:
tracert -d <ドメイン名>。nslookup:ドメイン名の名前解決が正しく機能していることを確認するためのコマンドラインツールです。Windows では、Win+R を押して cmd を入力し、コマンドプロンプトを開きます。使用法:
nslookup <ドメイン名>。