Web サイトサービスが、SQL インジェクション、クロスサイトスクリプティング(XSS)、コマンドインジェクション攻撃などのボリューム攻撃や高度な Web アプリケーション攻撃に遭遇した場合、さまざまな潜在的な脅威から保護するために、Web サイトサービスを Anti-DDoS Proxy と Web Application Firewall (WAF) に追加することをお勧めします。このトピックでは、Web サイトサービスを Anti-DDoS Proxy と WAF に追加する方法について説明します。
ネットワークアーキテクチャ
Web サイトサービス用に Anti-DDoS Proxy と WAF を構成するには、次のネットワークアーキテクチャを適用できます。イングレスで Anti-DDoS Proxy を使用して DDoS 攻撃を防ぎます。中間層で WAF を使用して Web アプリケーション攻撃を防ぎます。Elastic Compute Service (ECS) インスタンス、Server Load Balancer (SLB) インスタンス、Virtual Private Cloud (VPC)、またはデータセンター内のサーバーをオリジンサーバーとして構成します。このようにして、トラフィックは Anti-DDoS Proxy によってスクラブされ、WAF によってフィルタリングされます。サービストラフィックのみがオリジンサーバーに転送されます。これにより、サービスとデータのセキュリティが確保されます。次の図は、トラフィックの転送方法を示しています。
使用上の注意
リクエストは、オリジンサーバーに到達する前に複数の中間プロキシサーバーに送信されます。オリジンサーバーは、リクエストの送信元 IP アドレスを直接取得できません。送信元 IP アドレスを取得する方法については、「リクエストの送信元 IP アドレスを取得する」をご参照ください。
前提条件
Anti-DDoS Proxy インスタンスが購入されていること。詳細については、「Anti-DDoS Proxy インスタンスを購入する」をご参照ください。
WAF インスタンスが購入されていること。詳細については、「サブスクリプション WAF 3.0 インスタンスを購入する」または「従量課金 WAF 3.0 インスタンスを購入する」をご参照ください。
説明このトピックでは、WAF 3.0 を例として使用しています。WAF 2.0 を使用している場合でも、このトピックの手順を参照できます。
ステップ 1: Web サイトサービスを WAF に追加する
Web サイトサービスは、CNAME レコードモードまたはクラウドネイティブモードで WAF に追加できます。Web サイトサービスを追加する前に、各モードの推奨シナリオを理解することをお勧めします。詳細については、「概要」をご参照ください。
WAF 3.0 コンソール にログインします。上部のナビゲーションバーで、WAF インスタンスのリソースグループとリージョンを選択します。中国本土 または 中国本土以外 を選択できます。
左側のナビゲーションウィンドウで、アクセス管理 をクリックします。
[CNAME レコード] タブまたは [クラウドネイティブ] タブで、Web サイトサービスを WAF に追加します。
CNAME レコードモード
CNAME アクセス タブで、追加 をクリックします。
Listener 設定 ステップで、パラメータを設定し、次へ をクリックします。
次の表に、パラメータの簡単な説明を示します。パラメータの詳細な説明については、「WAF にドメイン名を追加する」をご参照ください。
パラメータ
説明
ドメイン名
Web サイトサービスのドメイン名を入力します。
プロトコルタイプ
Web サイトサービスで使用されるプロトコルタイプとポートを選択します。ポート番号を入力するたびに Enter キーを押します。
説明HTTPS を選択した場合は、ドメイン名に関連付けられている証明書を WAF にアップロードする必要があります。
HTTPS を選択して証明書を設定した後、HTTP/2 を有効にするかどうかを指定し、HTTPS ルーティングの有効化をオンにし、TLS バージョンを選択し、HTTPS 暗号スイートを選択することもできます。
WAF の前に Anti-DDoS Pro、Anti-DDoS Premium、Alibaba Cloud CDN などのレイヤー 7 プロキシがデプロイされているかどうか
Yes を選択し、クライアント IP の取得方法 を指定します。
X-Forwarded-For フィールドのファースト IP アドレスをクライアントのソースアドレスにする (デフォルト)
デフォルトでは、WAF は
X-Forwarded-Forフィールドの最初の IP アドレスをクライアントの送信元 IP アドレスとして使用します。[推奨] X-Forwarded-For偽造を防ぐために、指定されたヘッダーフィールドの最初のIPアドレスをクライアントの実際のIPアドレスとして使用する。
X-Client-IP や X-Real-IP などのカスタムヘッダーフィールドにクライアントの送信元 IP アドレスが含まれているプロキシを使用する場合は、この値を選択します。次に、ヘッダフィールド フィールドにカスタムヘッダーフィールドを入力します。
説明クライアントの送信元 IP アドレスを格納するためにカスタムヘッダーフィールドを使用し、WAF でヘッダーフィールドを指定することをお勧めします。こうすることで、攻撃者は X-Forwarded-For フィールドを偽造して WAF 保護をバイパスすることができなくなります。これにより、ビジネスのセキュリティが向上します。
詳細設定
IPv6 と排他的 IP アドレスを有効にするかどうかを指定し、ビジネス要件に基づいて使用する保護リソースのタイプを選択します。
リソースグループ
ドメイン名を追加するリソースグループをドロップダウンリストから選択します。リソースグループを選択しない場合、ドメイン名は デフォルトのリソースグループ に追加されます。
転送ルールの設定 ステップで、パラメータを設定し、サブミット をクリックします。
追加完了 ステップで、WAF によって提供される CNAME ドメイン名を取得します。
パラメーター
説明
ロードバランシングアルゴリズム
オリジンサーバーに複数のアドレスがある場合は、ビジネス要件に基づいて負荷分散アルゴリズムを選択します。
[オリジンサーバーアドレス]
オリジンサーバーのパブリック IP アドレスまたはドメイン名を入力します。 IP アドレスまたはドメイン名は、WAF によって転送される back-to-origin リクエストを受信するために使用されます。
HTTPS 詳細設定
ビジネス要件に基づいて、[back-to-origin リクエストの再試行] と [トラフィックマークの有効化] を選択するかどうかを指定します。
他の詳細設定
ビジネス要件に基づいて、[トラフィックマークの有効化] と [back-to-origin リクエストの再試行] を選択するかどうか、[back-to-origin キープアライブリクエストの有効化]、および [接続タイムアウト期間] パラメーターを構成するかどうかを指定します。
クラウドネイティブモード
詳細については、「クラウドネイティブモード」をご参照ください。
Web サイトサービスに次の Alibaba Cloud サービスを使用している場合は、Web サイトサービスを SDK モジュール モードで WAF に追加することをお勧めします: Application Load Balancer (ALB)、Microservices Engine (MSE)、および Function Compute。Web サイトサービスに Alibaba Cloud Classic Load Balancer (CLB) または ECS を使用している場合は、Web サイトサービスを リバースプロキシクラスター モードで WAF に追加することをお勧めします。
ステップ 2: Web サイトサービスを Anti-DDoS Proxy に追加する
Anti-DDoS Proxy コンソール にログインします。
上部のナビゲーションバーで、インスタンスのリージョンを選択します。
Anti-DDoS Proxy (中国本土): 中国本土 リージョンを選択します。
Anti-DDoS Proxy (中国本土以外): 中国本土以外 リージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ドメイン接続 ページで、ドメインの追加 をクリックします。必要な情報を入力し、次へ をクリックします。
パラメータ
説明
Function Plan
使用する Anti-DDoS Proxy インスタンスのプランを選択します。
インスタンス
使用する Anti-DDoS Proxy インスタンスを選択します。
1 つのドメイン名に最大 8 つのインスタンスを関連付けることができます。ドメイン名に関連付けられたインスタンスは、同じ Function Plan を使用する必要があります。
ドメイン
Web サイトサービスのドメイン名を入力します。
プロトコル
Web サイトサービスのプロトコルタイプを選択します。
説明HTTPS を選択した場合は、Web サイトサービスのドメイン名で使用される証明書をアップロードする必要があります。
HTTPS を選択した後、ビジネス要件に基づいて、HTTPS リダイレクトの有効化、back-to-origin リクエストの HTTP リダイレクトの有効化、および HTTP/2 の有効化をオンにすることができます。
証明書のアップロード、セキュリティポリシーのカスタマイズ、および OCSP ステープリングの有効化の詳細については、「1 つ以上の Web サイトを追加する」をご参照ください。
サーバー IP
CNAME レコードモードで WAF にドメイン名を追加する場合は、[オリジンドメイン名] を選択し、ステップ 1 で取得した CNAME を入力します。
クラウドネイティブモードで Web サイトサービスのドメイン名を WAF に追加する場合は、[オリジン IP アドレス] を選択し、オリジンサーバーのパブリック IP アドレスを入力します。
サーバーポート
プロトコル の値に基づいて指定するサーバーポート。
HTTP または Websocket を選択した場合は、デフォルトポート 80 が使用されます。
HTTPS、HTTP/2、または Websockets を選択した場合は、デフォルトポート 443 が使用されます。
[カスタム] をクリックして、カスタムポートを入力できます。複数のポートはコンマ(,)で区切ります。
CNAME Reuse
CNAME 再利用を有効にするかどうかを指定します。このパラメータは、Anti-DDoS Proxy (中国本土以外) でのみ使用できます。詳細については、「CNAME 再利用機能を使用する」をご参照ください。
転送設定を構成し、次へ をクリックします。
パラメータ
説明
Back-to-origin スケジューリングアルゴリズム
back-to-origin リクエストの負荷分散アルゴリズム。複数のオリジンサーバーアドレスが構成されている場合、このパラメータは必須です。オリジンサーバーアドレスは、IP アドレスまたはドメイン名にすることができます。 back-to-origin リクエストの負荷分散アルゴリズムを変更したり、サーバーアドレスの重みを指定したりできます。
ラウンドロビン (デフォルト): すべてのリクエストは、すべてのサーバーアドレスに順番に配信されます。デフォルトでは、すべてのサーバーアドレスの重みは同じです。サーバーの重みは変更できます。サーバーの重みが高いほど、リクエストがサーバーに転送される可能性が高くなります。これは、複数のオリジンサーバーが使用され、オリジンサーバー全体で均一な負荷分散が強く求められるシナリオに適しています。
IP hash: サーバーの重みを構成しながら、IP ハッシュの設定もサポートします。IP ハッシュオプションを使用すると、同じクライアントからのリクエストを一定期間内に同じサーバーに転送できるため、セッションの一貫性が確保されます。重みモードと組み合わせると、サーバーの処理能力に応じて重みが割り当てられるため、パフォーマンスの高いサーバーがより多くのリクエストを処理し、リソース使用効率が最適化されます。これは、ユーザセッションの一貫性を維持する必要があるシナリオに適しています。ただし、極端な場合は、負荷分散が不均一になる可能性があります。
最小時間: インテリジェント DNS 解決機能と最短時間 back-to-origin アルゴリズムにより、保護ノードからオリジンサーバーへの転送 back-to-origin までのリンク全体でビジネストラフィックのレイテンシが最短になります。
トラフィックマーキング
送信元ポート
クライアントの送信元ポートを含む HTTP ヘッダーの名前。
ほとんどの場合、
X-Forwarded-ClientSrcPortヘッダーは、クライアントの送信元ポートを記録するために使用されます。カスタムヘッダーを使用してクライアントの送信元ポートを記録する場合は、送信元ポートのカスタムヘッダーを指定します。Anti-DDoS Proxy が back-to-origin リクエストをオリジンサーバーに転送した後、オリジンサーバーはカスタムヘッダーを解析してクライアントの送信元ポートを取得します。クライアントの送信元ポートを取得する手順は、クライアントの送信元 IP アドレスを取得する手順と似ています。詳細については、「リクエストの送信元 IP アドレスを取得する」をご参照ください。送信元 IP アドレス
クライアントの送信元 IP アドレスを含む HTTP ヘッダーの名前。
ほとんどの場合、
X-Forwarded-Forヘッダーは、クライアントの送信元 IP アドレスを記録するために使用されます。カスタムヘッダーを使用してクライアントの送信元 IP アドレスを記録する場合は、送信元 IP アドレスのカスタムヘッダーを指定します。Anti-DDoS Proxy が back-to-origin リクエストをオリジンサーバーに転送した後、オリジンサーバーはカスタムヘッダーを解析してクライアントの送信元 IP アドレスを取得します。カスタムヘッダー
リクエストをマークするために、Anti-DDoS Proxy を通過するリクエストにカスタム HTTP ヘッダーを追加できます。カスタム HTTP ヘッダーを追加するには、ヘッダー名と値を指定します。カスタムヘッダーを作成すると、Anti-DDoS Proxy は back-to-origin リクエストにカスタムヘッダーを追加します。こうすることで、バックエンドサーバーは back-to-origin リクエストの統計分析を実行できます。
次のデフォルトヘッダーをカスタムヘッダーとして使用しないでください。
X-Forwarded-ClientSrcPort: このヘッダーは、Anti-DDoS Proxy (レイヤー 7 プロキシ) にアクセスするクライアントの送信元ポートを取得するために使用されます。X-Forwarded-ProxyPort: このヘッダーは、Anti-DDoS Proxy (レイヤー 7 プロキシ) にアクセスするリスナーのポートを取得するために使用されます。X-Forwarded-For: このヘッダーは、Anti-DDoS Proxy (レイヤー 7 プロキシ) にアクセスするクライアントの送信元 IP アドレスを取得するために使用されます。
標準 HTTP ヘッダー (Host、User-Agent、Connection、Upgrade など) や広く使用されているカスタム HTTP ヘッダー (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 など) は使用しないでください。上記のヘッダーを使用すると、元のヘッダーが上書きされます。
最大 5 つのカスタム HTTP ヘッダーを追加できます。
Cookie 設定
配信状況
デフォルトでは、このスイッチはオンになっています。有効にすると、Anti-DDoS Proxy はクライアント (ブラウザなど) に Cookie を挿入して異なるクライアントを区別したり、クライアントのフィンガープリント情報を取得したりします。詳細については、「HTTP フラッド軽減機能を構成する」をご参照ください。
重要Anti-DDoS Proxy がサービスに Cookie を挿入しないようにするには、スイッチをオフにします。ただし、このオプションを無効にすると、Anti-DDoS Proxy は HTTP フラッド軽減ルールを通じて HTTP フラッド攻撃を積極的に評価および防御できなくなります。
セキュア属性
セキュア属性はデフォルトで無効になっています。有効にすると、Cookie は HTTPS 接続経由でのみ配信され、HTTP 接続経由では配信されません。これは、攻撃者による Cookie の盗難を防ぐのに役立ちます。Web サイトが HTTPS 接続のみをサポートしている場合は、このオプションを有効にすることをお勧めします。
その他の設定
新しい接続タイムアウト期間の設定: 接続を確立するためのタイムアウト期間。Anti-DDoS Proxy が指定されたタイムアウト期間内にオリジンサーバーへの接続を確立できない場合、接続リクエストは失敗します。有効な値: 1 ~ 10。単位: 秒。
読み取り接続タイムアウト期間の設定: 読み取りリクエストを処理するためのタイムアウト期間。オリジンサーバーが、確立された接続を介して Anti-DDoS Proxy から送信された読み取りリクエストに指定されたタイムアウト期間内に応答しない場合、読み取りリクエストは失敗します。有効な値: 10 ~ 300。単位: 秒。
書き込み接続タイムアウト期間の設定: 書き込みリクエストを処理するためのタイムアウト期間。Anti-DDoS Proxy がすべてのデータをオリジンサーバーに送信できない場合、またはオリジンサーバーが指定されたタイムアウト期間内にデータの処理を開始できない場合、書き込みリクエストは失敗します。有効な値: 10 ~ 300。単位: 秒。
Back-to-origin リクエストの再試行: スイッチをオンにし、Anti-DDoS Proxy によってリクエストされたリソースをキャッシュサーバーから取得できない場合、キャッシュサーバーは上位キャッシュサーバーまたはオリジンサーバーからリソースを取得します。
Back-to-origin 持続的接続: スイッチをオンにすると、キャッシュサーバーとオリジンサーバー間の TCP 接続は一定期間アクティブなままになります。リクエストが完了するたびに接続が閉じられることはありません。これは、接続の確立に必要な時間とリソースを削減し、リクエスト処理の効率と速度を向上させるのに役立ちます。
持続的接続を再利用するリクエスト: Anti-DDoS Proxy が TCP 接続を介してオリジンサーバーに送信できる HTTP リクエストの最大数。持続的接続を使用すると、接続を頻繁に確立およびクローズすることによって発生するレイテンシとリソース消費を削減できます。有効な値: 10 ~ 1000。WAF や SLB インスタンスなど、オリジンサーバーで構成されている持続的接続を再利用するリクエスト数以下の値を指定することをお勧めします。これは、持続的接続の失敗によるサービスの可用性低下を防ぐのに役立ちます。
アイドル状態の持続的接続のタイムアウト期間: Anti-DDoS Proxy がオリジンサーバーに確立するアイドル状態の持続的 TCP 接続のタイムアウト期間。Anti-DDoS Proxy の接続プールで開いている TCP 接続を介してデータが送信されない場合、TCP 接続はアイドル状態と見なされます。指定されたタイムアウト期間内にアイドル状態の TCP 接続を介して新しいリクエストが開始されない場合、接続は閉じられ、システムリソースが解放されます。有効な値: 10 ~ 30。単位: 秒。WAF や SLB インスタンスなど、オリジンサーバーで構成されているタイムアウト期間以下の値を指定することをお勧めします。これは、持続的接続の失敗によるサービスの可用性低下を防ぐのに役立ちます。
HTTP/2 ストリームの上限: クライアントと Anti-DDoS Proxy 間で許可される HTTP/2 ストリームの最大数。この機能は、HTTP/2 が使用されている場合にのみ使用できます。有効な値: 16 ~ 32。より大きな値を指定する場合は、アカウントマネージャーにお問い合わせください。
Anti-DDoS Proxy によって提供される CNAME をコピーします。
ステップ 3: ドメイン名の DNS レコードを変更する
Web サイトサービスのドメイン名を Anti-DDoS Proxy によって提供される CNAME に解決する必要があります。次の例では、ドメイン名は Alibaba Cloud DNS (DNS) でホストされています。サードパーティの DNS サービスを使用している場合、次の手順は参考用です。
DNS コンソール にログインします。
[ドメイン名解決] ページで、管理するドメイン名を見つけ、[操作] 列の [DNS 設定] をクリックします。
[DNS 設定] ページで、管理する DNS レコードを見つけ、[操作] 列の [変更] をクリックします。
説明変更する DNS レコードがリストに見つからない場合は、[DNS レコードを追加] をクリックしてレコードを追加できます。
[DNS レコードの変更] (または [DNS レコードの追加]) パネルで、[レコードタイプ] に CNAME を選択し、[レコード値] を ステップ 2 で取得した CNAME に設定します。
[OK] をクリックして、設定が有効になるまで待ちます。
ブラウザから Web サイトサービスにアクセスできるかどうかを確認します。
参考資料
CNAME レコードモードと透過プロキシモードで WAF 2.0 にドメイン名を追加する方法の詳細については、「ドメイン名を追加する」および「透過プロキシモード」をご参照ください。
DNS レコードを変更した後に Web サイトサービスにアクセスするときに発生する可能性のある例外のトラブルシューティング方法の詳細については、「Anti-DDoS Proxy インスタンスによって保護されているサービスで、応答の遅延、高レイテンシ、アクセス失敗の問題を処理するにはどうすればよいですか。」をご参照ください。
Anti-DDoS Proxy と CDN の両方をデプロイする方法の詳細については、「CDN または DCDN 連携機能を使用する」をご参照ください。