お使いの Web サイトが、ボリューム型 DDoS 攻撃や、SQL インジェクション、クロスサイトスクリプティング (XSS)、コマンドインジェクションなどの Web アプリケーション攻撃に対して脆弱な場合は、Anti-DDoS Proxy と Web Application Firewall (WAF) を併用します。このトピックでは、これら 2 つのサービスを連携させて多層防御を構成する方法について説明します。
仕組み
トラフィックは、オリジンサーバーに到達する前に 2 つの保護レイヤーを通過します:
| レイヤー | サービス | 緩和される脅威 |
|---|---|---|
| イングレス | Anti-DDoS Proxy | ボリューム型 DDoS 攻撃 (ネットワークレイヤーおよびトランスポートレイヤーのフラッド) |
| 中間 | WAF | SQL インジェクション、XSS、コマンドインジェクション、HTTP フラッド攻撃などの Web アプリケーション攻撃 |
| バックエンド | Elastic Compute Service (ECS) インスタンス、Server Load Balancer (SLB) インスタンス、データセンターサーバーなどのオリジンサーバー | Anti-DDoS Proxy と WAF による検査後のトラフィックを受信 |
次の図にトラフィックフローを示します。
注意事項
リクエストはオリジンサーバーに到達する前に複数のプロキシを通過するため、オリジンサーバーはクライアント IP アドレスを直接取得できません。リクエストの送信元 IP アドレスを取得する方法をご参照ください。
前提条件
開始する前に、次の前提条件を満たしている必要があります:
このトピックでは WAF 3.0 を例として使用しますが、手順は WAF 2.0 にも適用されます。
ステップ 1:WAF への Web サイトの追加
WAF は CNAME レコードモードとクラウドネイティブモードをサポートしています。アクセスモードの概要を確認し、お使いの環境に最も適したモードを選択してください。
-
WAF 3.0 コンソールにログインします。上部メニューで、リソースグループとリージョンとして[中国本土]または中国本土以外のいずれかを選択します。
-
左側メニューで、[Webサイト設定] をクリックします。
-
CNAME アクセス タブまたは クラウドプロダクトアクセス タブを選択し、そのモードの手順を実行します。
CNAME レコードモード
-
[CNAMEレコード] タブで、[追加] をクリックします。
-
[リスナーの設定] ステップで、パラメーターを設定し、[次へ] をクリックします。
パラメーター 説明 [ドメイン名] Web サイトのドメイン名を入力します。 [プロトコルタイプ] Web サイトが使用するプロトコルとポートを選択します。各ポート番号の入力後に Enter キーを押します。[HTTPS] を選択した場合は、ドメイン名に関連付けられた証明書をアップロードします。その後、HTTP/2 と HTTPS ルーティングを有効にし、TLS バージョンと暗号スイートを設定できます。 [WAF の前にレイヤー 7 プロキシがあるかどうか (Anti-DDoS Proxy や CDN など)] [はい] を選択します。[クライアントの実際の IP アドレスの取得] で、次のいずれかのオプションを選択します:<br>- [X-Forwarded-For フィールドの最初の IP アドレスをクライアントの実際の IP アドレスとして使用] (デフォルト):WAF は、 X-Forwarded-Forヘッダーの最初の IP アドレスをクライアントの送信元 IP アドレスとして使用します。<br>- [推奨] [指定したヘッダーフィールドの最初の IP アドレスをクライアントの実際の IP アドレスとして使用し、X-Forwarded-For の偽装を防止]:プロキシがX-Client-IPやX-Real-IPなどのカスタムヘッダーに送信元 IP アドレスを記録する場合、このオプションを選択し、[ヘッダーフィールド] にヘッダー名を入力します。カスタムヘッダーを使用すると、攻撃者がX-Forwarded-Forの値を偽造して WAF の保護をバイパスするのを防ぐことができます。[詳細設定] 要件に基づいて、IPv6 保護と専用 IP アドレスを設定し、保護リソースタイプを選択します。 [リソースグループ] ドメイン名のリソースグループを選択します。これを空白のままにすると、ドメイン名は[デフォルトのリソースグループ]に追加されます。 -
[転送ルールの設定] ステップで、パラメーターを設定し、[送信] をクリックします。
パラメーター 説明 [負荷分散アルゴリズム] オリジンサーバーに複数のアドレスがある場合は、負荷分散アルゴリズムを選択します。 [オリジンサーバーアドレス] WAF からのオリジンへのリクエストを受信するオリジンサーバーのパブリック IP アドレスまたはドメイン名を入力します。 [HTTPS の詳細設定] HTTPS 転送に関する詳細設定を構成します。 [その他の詳細設定] [トラフィックマーキングの有効化]、[オリジンへのリクエストの再試行]、[オリジンへの永続的接続]、および接続タイムアウト期間を設定します。 -
[追加完了] ステップで、WAF によって提供された CNAME をコピーします。この CNAME は、Anti-DDoS Proxy でオリジンサーバーアドレスとして使用します。
クラウドネイティブモード
詳細については、「クラウドネイティブモード」をご参照ください。
-
Application Load Balancer (ALB)、Microservices Engine (MSE)、Function Compute (FC) では、[SDKモジュール] モードを使用します。
-
Classic Load Balancer (CLB) または ECS では、[リバースプロキシクラスター] モードを使用します。
ステップ 2:Anti-DDoS Proxy への Web サイトの追加
-
Anti-DDoS Proxy コンソールにログインします。
-
上部メニューで、インスタンスのリージョンを選択します:
-
Anti-DDoS Proxy (中国本土):[中国本土]を選択します。
-
Anti-DDoS Proxy (中国本土以外):[中国本土以外]を選択します。
-
-
左側メニューで、接続管理 > [Webサイト設定] を選択します。
-
[Webサイト設定] ページで、[Webサイトの追加] をクリックします。必要な情報を入力し、[次へ] をクリックします。
パラメーター 説明 [機能プラン] Anti-DDoS Proxy インスタンスの機能プランを選択します。 [インスタンス] Anti-DDoS Proxy インスタンスを選択します。1 つのドメイン名に最大 8 つのインスタンスを関連付けることができます。すべてのインスタンスは同じ機能プランを使用する必要があります。 [Web サイト] Web サイトのドメイン名を入力します。 [プロトコルタイプ] Web サイトが使用するプロトコルを選択します。[HTTPS] を選択した場合は、ドメイン名の証明書をアップロードします。[HTTPS] を選択した後、HTTPS リダイレクション、オリジンへのリクエストの HTTP リダイレクション、および HTTP/2 を有効にすることもできます。証明書のアップロード、セキュリティポリシーのカスタマイズ、Online Certificate Status Protocol (OCSP) ステープリングの有効化など、1 つ以上の Web サイトを追加する方法をご参照ください。 [サーバーアドレス] - CNAME アクセス で WAF にドメイン名を追加した場合:配信元サーバードメイン を選択し、ステップ 1 で取得した WAF の CNAME を入力します。<br>- クラウドプロダクトアクセス で WAF にドメイン名を追加した場合:オリジン IP アドレス を選択し、オリジンサーバーのパブリック IP アドレスを入力します。 [サーバーポート] [プロトコルタイプ] の値に基づいて設定します。HTTP および WebSocket (ws://) はデフォルトでポート 80 を使用し、HTTPS、HTTP/2、および WebSocket Secure (wss://) はデフォルトでポート 443 を使用します。[カスタム] をクリックして、カンマ (,) 区切りで追加のポートを入力します。 [CNAME の再利用] Anti-DDoS Proxy (中国本土以外) でのみ利用可能です。詳細については、「CNAME 再利用機能の使用」をご参照ください。 -
転送設定を構成し、[次へ] をクリックします。
パラメーター 説明 [オリジンスケジューリングアルゴリズム] Anti-DDoS Proxy が複数のオリジンサーバーアドレスにリクエストを分散する方法を制御します。次の 3 つのオプションが利用可能です:<br>- [ラウンドロビン] (デフォルト):リクエストをすべてのアドレスに順番に分散します。デフォルトではすべてのアドレスの重みは均等です。重みを調整して、より多くのトラフィックを大容量のサーバーにルーティングできます。複数のオリジンサーバー間で均等な負荷分散が必要な場合に使用します。<br>- [IPハッシュ]:同じクライアント IP からのリクエストを一定期間同じサーバーにルーティングし、セッション維持を保証します。重み設定と組み合わせることで、大容量のサーバーが比例してより多くのトラフィックを処理します。アプリケーションがセッション維持を必要とする場合に使用します。エッジケースでは負荷分散が不均等になる場合があることに注意してください。<br>- [最小時間]:インテリジェント DNS 解決を使用して、保護ノードからオリジンまでのリンク全体でレイテンシーが最も低いサーバーに各リクエストをルーティングします。 [トラフィックマーキング] ダウンストリームシステムで使用するために、クライアントリクエストに関する情報を HTTP ヘッダーに追加します:<br>- [送信元ポート]:クライアントの送信元ポートを記録するヘッダーを指定します。デフォルトのヘッダーは X-Forwarded-ClientSrcPortです。カスタムヘッダーを使用するには、ここにヘッダー名を入力します。<br>- [送信元IPアドレス]:クライアントの送信元 IP アドレスを記録するヘッダーを指定します。デフォルトのヘッダーはX-Forwarded-Forです。カスタムヘッダーを使用するには、ここにヘッダー名を入力します。<br>- [カスタムヘッダー]:オリジンへのリクエストに最大 5 つのカスタム HTTP ヘッダーを追加します。次の予約済みヘッダーは使用しないでください:X-Forwarded-ClientSrcPort、X-Forwarded-ProxyPort、X-Forwarded-For。標準の HTTP ヘッダー (例:Host、User-Agent、Connection、Upgrade) や、広く使用されているカスタムヘッダー (例:X-Real-IP、X-True-IP、X-Client-IP、Web-Server-Type、WL-Proxy-Client-IP、EagleEye-RPCID、EagleEye-TraceID、X-Forwarded-Cluster、X-Forwarded-Proto) は使用しないでください。これらの予約済みヘッダーを使用すると、元の値が上書きされます。[Cookie の設定] Anti-DDoS Proxy が Cookie を処理する方法を制御します:<br>- [配信ステータス] (デフォルトで有効):Anti-DDoS Proxy は、クライアントを区別し、フィンガープリント情報を収集するために、クライアントの応答に Cookie を挿入します。このスイッチを無効にすると、Anti-DDoS Proxy は HTTP フラッド軽減ルールを通じて HTTP フラッド攻撃を能動的に評価および防御できなくなります。<br>- [Secure属性] (デフォルトで無効):有効にすると、Cookie は HTTPS 接続でのみ配信され、傍受から保護されます。Web サイトが HTTPS のみを使用している場合は、この設定を有効にします。 [その他の設定] 接続とリクエストの処理を微調整します:<br>- [新しい接続のタイムアウト期間の設定]:オリジンサーバーへの接続を確立するためのタイムアウト。有効な値:1~10 秒。<br>- [読み取り接続のタイムアウト期間の設定]:オリジンサーバーが読み取りリクエストに応答するためのタイムアウト。有効な値:10~300 秒。<br>- [書き込み接続のタイムアウト期間の設定]:Anti-DDoS Proxy がすべてのデータをオリジンサーバーに送信するためのタイムアウト。有効な値:10~300 秒。<br>- [オリジンへのリクエストの再試行]:有効にすると、リクエストされたリソースがキャッシュにない場合、キャッシュサーバーは上位のキャッシュまたはオリジンサーバーからそれを取得します。<br>- [オリジンへの永続的接続]:有効にすると、各リクエストの後もキャッシュサーバーとオリジンサーバー間の TCP 接続が開いたままになり、接続設定のオーバーヘッドが削減されます。<br>- [永続的接続を再利用するリクエスト]:単一の永続的 TCP 接続を介して送信される HTTP リクエストの最大数。有効な値:10~1,000。接続障害を防ぐために、オリジンサーバー (WAF や SLB など) で設定された制限以下の値に設定します。<br>- [アイドル状態の永続的接続のタイムアウト期間]:アイドル状態の永続的 TCP 接続が閉じられるまでの保持時間。有効な値:10~30 秒。接続障害を防ぐために、オリジンサーバーで設定されたタイムアウト以下の値に設定します。<br>- [HTTP/2ストリームの上限]:クライアントと Anti-DDoS Proxy 間の同時 HTTP/2 ストリームの最大数。有効な値:16~32。HTTP/2 が有効な場合のみ利用可能です。より高い制限を設定するには、アカウントマネージャーにお問い合わせください。 -
Anti-DDoS Proxy によって提供された CNAME をコピーします。
ステップ 3:DNS レコードの更新
ステップ 2 で取得した Anti-DDoS Proxy の CNAME にドメイン名を向けます。以下の手順では Alibaba Cloud DNS を例として使用します。サードパーティの DNS プロバイダーを使用している場合は、そのプロバイダーのドキュメントをご参照ください。
-
DNS コンソールにログインします。
-
[ドメイン名解決] ページで、ドメイン名を見つけ、Actions 列の解決設定 をクリックします。
-
解決設定 ページで、既存の DNS レコードを見つけ、Actions 列のEdit をクリックします。
DNS レコードがリストに存在しない場合は、Add Record をクリックして作成します。
-
Modify Record (または Add Record) パネルで、レコードタイプ を [CNAME] に設定し、Record Value を Anti-DDoS Proxy の CNAME に設定します。
-
OK をクリックし、変更が反映されるのを待ちます。
-
ブラウザーを開き、Web サイトにアクセスできることを確認します。
次のステップ
-
CNAME レコードモードまたは透過型プロキシモードで WAF 2.0 にドメイン名を追加するには、「WAF へのドメイン名の追加」および「透過型プロキシモード」をご参照ください。
-
DNS レコードを更新した後の応答の遅延、高レイテンシー、またはアクセス障害のトラブルシューティングについては、「Anti-DDoS Proxy インスタンスで保護されているサービスで、応答の遅延、高レイテンシー、アクセス障害の問題を処理する方法」をご参照ください。
-
Anti-DDoS Proxy と Content Delivery Network (CDN) を両方デプロイするには、「CDN または Dynamic Route for CDN (DCDN) の連携機能の使用」をご参照ください。