本トピックでは、Web サイトサービスに対して Anti-DDoS Origin および Web Application Firewall (WAF) を同時に導入する方法について説明します。このソリューションにより、レイヤー 4 の DDoS 攻撃およびレイヤー 7 の Web 攻撃(CC 攻撃を含む)に対する防御が可能になります。
前提条件
ECS インスタンスを作成してアプリケーションをデプロイしており、その ECS インスタンスにはパブリック IP アドレスが割り当てられ、Web サイトにはドメイン名があります。
説明Web サイトの利用者が中国本土にいる場合、そのドメイン名は ICP 登録を完了している必要があります。登録が未完了の場合、中国本土の WAF インスタンスに Web サイトを接続できません。
Anti-DDoS Origin を購入済みです。詳細については、「Anti-DDoS Origin インスタンスを購入する」をご参照ください。
説明Anti-DDoS Origin インスタンスを購入する際は、ご利用のリソースが配置されているリージョンを選択してください。このリージョンは、ECS インスタンスのリージョンと一致させる必要があります。
WAF 3.0 を購入済みです。詳細については、「サブスクリプションの WAF 3.0 インスタンスを購入する」をご参照ください。
背景情報
Web サイトサービスに対して Anti-DDoS Origin を有効化し、DDoS 攻撃だけでなく Web 攻撃および CC 攻撃に対しても保護が必要な場合、WAF の有効化を推奨します。WAF は、一般的な Web 攻撃および CC 攻撃に対する防御を支援します。WAF の詳細については、「Web Application Firewall とは」をご参照ください。
Anti-DDoS Origin と WAF を併用する場合、まず Web サイトを WAF に接続して保護します。その後、WAF インスタンスの IP アドレスを Anti-DDoS Origin インスタンスの保護対象として追加します。このデプロイメントを完了すると、すべてのサービストラフィックが WAF を経由してセキュリティ検査(スクラビング)を受けます。DDoS 攻撃、Web 攻撃、CC 攻撃などの攻撃トラフィックは破棄され、正常なサービストラフィックのみがオリジンサーバーに転送されます。
操作手順
Web Application Firewall 3.0 コンソールにログインします。上部のメニューバーから、WAF インスタンスのリソースグループおよびリージョン(中国本土 または 中国本土以外)を選択します。左側のナビゲーションウィンドウで、アクセス管理 をクリックします。CNAME アクセス タブで、追加 をクリックします。
ステップ 1:リスナーの構成
ドメイン名 を入力します。保護対象となるドメイン名は 1 つだけ入力できます。完全一致ドメイン名(例:
www.aliyundoc.com)またはワイルドカードドメイン名(例:*.aliyundoc.com)を指定できます。ワイルドカードドメインのマッチングルール:
ワイルドカードは、同一レベルのサブドメインのみにマッチします。たとえば、
*.aliyundoc.comはwww.aliyundoc.comおよびexample.aliyundoc.comにマッチしますが、www.example.aliyundoc.comにはマッチしません。ワイルドカードが第 2 レベルドメイン(例:
*.aliyundoc.com)に適用される場合、第 2 レベルドメイン自体(つまりaliyundoc.com)にもマッチします。ワイルドカードが第 3 レベルドメイン(例:
*.example.aliyundoc.com)に適用される場合、第 3 レベルドメイン自体(つまりexample.aliyundoc.com)にはマッチしません。
優先順位ルール:完全一致ドメイン名とワイルドカードドメイン名の両方が追加されており、保護対象のドメイン名が両方にマッチする場合、システムは完全一致ドメイン名の保護ルールを優先的に適用します。
ドメイン所有権の検証を行うには、ドメイン検証を実行します。ドメイン名を入力した後にシステムから検証のプロンプトが表示された場合は、以下のいずれかの検証方法を選択してください。
DNS 検証:WAF が提供する TXT レコードを DNS プロバイダーのコンソールに手動で追加します。こちらの方法を推奨します。
ファイル検証:WAF が提供する検証ファイルをオリジンサーバーのルートディレクトリにアップロードします。オリジンサーバーの管理権限が必要であり、インターネットからのアクセスを許可するセキュリティグループルールを設定する必要があります。これにより、WAF がインターネット経由でファイルの検証を実行できるようになります。
DNS 検証
検証プロンプト領域で、方法 1:DNS 解析の検証 タブをクリックします。
WAF コンソールで提供される レコードタイプ、ホストレコード、および レコード値 を使用して、DNS プロバイダーのコンソールに TXT レコードを追加します。
Alibaba Cloud DNS を使用している場合は、以下の手順に従ってください。他の DNS プロバイダーを使用している場合は、同様の手順を各プロバイダーのコンソールで実行してください。
TXT レコードが有効になるまで待ちます。新しく設定された TXT レコードは即時に有効になりますが、既存の TXT レコードを変更した場合は、通常 10 分程度で有効になります。実際の有効化時間は、DNS レコードの TTL 設定によって異なり、デフォルトは 10 分です。
WAF コンソールに戻り、クリックして検証する をクリックします。
検証成功 と表示された場合、ドメイン所有権の検証は完了しています。
検証失敗 と表示された場合、以下の手順でトラブルシューティングを行います。
TXT レコードの確認:ホストレコードおよびレコード値が WAF コンソールに表示されている内容と完全に一致しているか確認してください。不一致の場合は、誤ったレコードを削除し、正しいレコードを追加して再検証してください。
DNS の伝搬待ち:DNS の変更は即時に反映されない場合があります。反映までの時間は DNS サーバーの TTL 設定に依存します。10 分待ってから再検証してください。
検証方法の切り替え:検証が繰り返し失敗する場合は、方法 2:ファイルの検証 を使用してください。
ファイル検証
検証プロンプト領域で、方法 2:ファイルの検証 タブをクリックします。
検証ファイルのダウンロードリンク(①)をクリックしてダウンロードします。
重要検証ファイルはダウンロード後 3 日間有効です。この期間内に検証を完了しない場合は、再度ダウンロードしてください。
検証ファイルを編集・改名しないでください。
WAF は、選択したプロトコルタイプに基づいてオリジンサーバーにアクセスします。オリジンサーバーのセキュリティグループまたはファイアウォールルールで、対応するトラフィックを許可していることを確認してください。
HTTP を選択した場合:0.0.0.0/0 からの TCP ポート 80 のインバウンドを許可します。
HTTPS を選択した場合:0.0.0.0/0 からの TCP ポート 443 のインバウンドを許可します。
検証ファイルをオリジンサーバー(例:ECS、OSS、CVM、COS、EC2)のルートディレクトリに手動でアップロードします(②)。
説明ワイルドカードドメイン名(例:
*.aliyun.com)を追加した場合、検証ファイルをaliyun.comのルートディレクトリにアップロードしてください。アップロード後、以下のいずれかの方法でファイルが正しくアップロードされたか確認してください。
WAF コンソールに戻り、クリックして検証する をクリックします。
検証成功 と表示された場合、ドメイン所有権の検証は完了しています。
検証失敗 と表示された場合、エラーメッセージに基づいてトラブルシューティングを行います。
問題
解決策
ドメイン名にアクセスできない
ドメイン名の DNS 解決を確認します。DNS レコードがオリジンサーバーを指すように設定されていることを確認してください。Alibaba Cloud DNS を使用している場合は、「DNS レコードの追加」をご参照ください。
オリジンサーバーのセキュリティグループまたはファイアウォールルールを確認します。インターネットからのインバウンド要求が許可されていることを確認してください。ECS セキュリティグループを使用している場合は、「セキュリティグループルールの追加」をご参照ください。
検証ファイルが見つからない
検証ファイルをオリジンサーバーに再アップロードしてください。
ファイルの内容が正しくない
オリジンサーバーに移動し、誤った検証ファイルを削除します。
検証ファイルを再アップロードします。
すべての IP アドレスからのアクセスを許可することはセキュリティリスクを伴うため、所有権検証が完了したら、検証用に使用したセキュリティグループルールを削除してください。ただし、オリジンサーバーの初期セキュリティグループ構成にすでに 0.0.0.0/0 ルールが含まれている場合は、この操作は不要です。
Web サイトの プロトコルタイプ(HTTP または HTTPS)を選択し、必要な構成を入力します。両方のプロトコルを構成できます。
説明WAF の共有仮想ホストエディションは HTTPS をサポートしていません。
HTTP
HTTP Port
ユーザーが Web サイトにアクセスするために使用するポートを入力します。HTTP の場合はポート 80 を推奨します。カスタムポートを使用する場合は、「ポート範囲」から選択してください。各ポートの入力後に Enter キーを押します。
HTTPS
HTTPS Port
ユーザーが Web サイトにアクセスするために使用するポートを入力します。HTTPS の場合はポート 443 を推奨します。カスタムポートを使用する場合は、「ポート範囲」から選択してください。各ポートの入力後に Enter キーを押します。
HTTPS Upload Type
WAF が Web サイトの HTTPS トラフィックをリッスンおよび保護できるようにするには、ドメイン名に関連付けられた SSL 証明書を WAF にアップロードする必要があります。以下のオプションがあります。
手動アップロード:証明書が Alibaba Cloud Certificate Management Service (Original SSL Certificate) にまだアップロードされていない場合に使用します。
既存の証明書の選択:Alibaba Cloud Certificate Management Service (Original SSL Certificate) で既に発行またはアップロード済みの証明書を選択します。
新しい証明書の申請:このドメイン向けの SSL 証明書を所有していない場合、まず証明書を購入してください。証明書が発行されたら、WAF に接続します。
手動アップロード
証明書名:証明書の固有の名前を入力します。既存の証明書名と重複してはいけません。
証明書ファイル:PEM、CER、CRT 形式の証明書テキストコンテンツをテキストエディターで開き、貼り付けます。
例:
-----BEGIN CERTIFICATE-----......-----END CERTIFICATE-----フォーマット変換:証明書が PFX または P7B 形式の場合、「証明書ツール」を使用して PEM 形式に変換してください。
証明書チェーン:証明書に中間証明書が含まれている場合、サーバー証明書を最初に、その後に中間証明書を順に貼り付けてください。
秘密鍵ファイル:PEM 形式の秘密鍵テキストコンテンツをテキストエディターで開き、貼り付けます。
RSA:
-----BEGIN RSA PRIVATE KEY-----......-----END RSA PRIVATE KEY-----ECC:
-----BEGIN EC PRIVATE KEY-----......-----END EC PRIVATE KEY-----
既存の証明書の選択
ドロップダウンリストから WAF にアップロードする証明書を選択します。
説明WAF コンソールに 証明書チェーンの整合性の検証に失敗しました。この証明書を使用すると、サービスへのアクセスに影響が出る可能性があります と表示された場合、証明書チェーンが不完全です。証明書の内容が正しいか、完全か確認してください。その後、Certificate Management Service コンソールで再アップロードしてください。「SSL 証明書のアップロード、同期、共有」をご参照ください。
新しい証明書の申請
証明書を購入していない場合は、「商用証明書の購入」をご参照ください。今すぐ申し込む をクリックして関連ドキュメントを参照してください。
ステップ 2:転送の構成
サーバーアドレス セクションで、オリジンサーバーの種類に応じて、IP アドレスまたはドメイン名を入力します。WAF はこの設定を使用して、正常なサービス要求をオリジンサーバーに転送します。
オリジンサーバーの種類を確認した後、以下の構成を完了します。
IP
back-to-origin ポート:Web サイトが使用するポートです。ユーザーはステップ 1 で構成した HTTP/HTTPS ポート を介して Web サイトにアクセスします。WAF はここで設定した back-to-origin ポート を介してオリジンサーバーにアクセスします。
デフォルトでは、前のステップの プロトコルタイプ で構成した HTTP/HTTPS ポート と一致します。WAF が特定のポートを使用してオリジンサーバーからフェッチする必要がある場合、ポート範囲 からオリジンポートをカスタマイズできます。
back-to-origin IP アドレス:オリジンサーバーの IP アドレスを入力します。
パブリックにアクセス可能な IP アドレスである必要があります。
複数の IP アドレスを入力できます。各アドレスの入力後に Enter キーを押します。最大 20 個のオリジンサーバー IP アドレスを追加できます。複数の IP アドレスを入力した場合、WAF はロードバランシングアルゴリズムの設定に基づいてオリジン要求を転送します。
IPv4 および IPv6 アドレスを個別または併用して構成できます。IPv6 アドレスを構成するには、Listener 設定 で IPv6 保護を有効化する必要があります。
ドメイン名(CHAMEなど)
back-to-origin ポート:Web サイトが使用するポートです。ユーザーはステップ 1 で構成した HTTP/HTTPS ポート を介して Web サイトにアクセスします。WAF はここで設定した back-to-origin ポート を介してオリジンサーバーにアクセスします。
デフォルトでは、前のステップの プロトコルタイプ で構成したポートと一致します。WAF が特定のポートを使用してオリジンサーバーからフェッチする必要がある場合、ポート範囲 からオリジンポートをカスタマイズできます。
back-to-origin ドメイン名:オリジンサーバーのドメイン名を入力します。
WAF は、このドメイン名から解決された IPv4 アドレスのみにクライアント要求を転送します。IPv6 対応の Web サイトの場合は、IP アドレス方式を使用してください。
重要オリジンサーバーのアドレスが変更された場合は、ここでサーバーアドレスを速やかに更新してください。
ロードバランシングアルゴリズム、セカンダリオリジンサーバー、HTTP オリジンフェッチ、オリジン SNI、リクエストヘッダーフィールドの構成、トラフィックタグ付け、オリジン接続タイムアウト、5XX エラー時のリトライ、オリジン keep-alive、SM SSL、HTTP/2、強制リダイレクト、TLS バージョン、SSL 暗号スイート、WAF の前に配置されるレイヤー 7 プロキシ(CDN など)、IPv6、専用 IP アドレス、WAF クラスター向けのインテリジェントロードバランシング などの高度な構成をカスタマイズする場合は、「詳細設定」をご参照ください。カスタマイズが必要ない場合は、その他の設定をすべてデフォルトのままにして、送信 をクリックします。
ステップ 3:トラフィックの切り替え
WAF コンソールで上記の構成を完了した後、必ず トラフィックを WAF に切り替える必要があります。切り替えを行わないと、WAF の保護機能は有効になりません。
WAF のオリジン向き IP 範囲を許可する:オリジンサーバーが セキュリティグループルール、ファイアウォールルール、SafeDog や YunSuo などのセキュリティソフトウェアを使用している場合、必ず オリジンサーバーで WAF のオリジン向き IP 範囲を許可する必要があります。これを実行しないと、WAF のオリジントラフィックがブロックされ、サービス中断を引き起こす可能性があります。
説明オリジンサーバーを WAF のオリジン向き IP 範囲からのトラフィックのみ許可するように構成することを推奨します。これにより、WAF のみがオリジンサーバーと通信でき、攻撃者が WAF をバイパスしてオリジンサーバーのパブリック IP アドレスに直接アクセスすることを防ぐことができます。
追加完了 ウィザードページの右上隅で、WAF IP アドレス をクリックします。
Back-to-origin CIDR ブロック ダイアログボックスで、複製 をクリックして、すべての WAF オリジン向き IP 範囲をクリップボードにコピーします。
説明コピーされたオリジン向き IP 範囲は英語のカンマ(,)で区切られています。2408:400a:3c:xxxx::/56 のような一部のアドレスは IPv6 アドレス範囲です。
これらの IP 範囲をサーバーのファイアウォールで許可します。たとえば、オリジンサーバーが Alibaba Cloud ECS インスタンスの場合、ECS セキュリティグループで許可します。「セキュリティグループ」の詳細については、「セキュリティグループルールの追加」をご参照ください。
ECS インスタンスの詳細ページで、 をクリックし、対象のセキュリティグループを選択して、その詳細ページに移動します。
セキュリティグループの詳細ページで、 の下で、ルールを追加 をクリックします。
単一のセキュリティグループルールでは IPv4 および IPv6 アドレスを同時に含められないため、以下の 2 つのステップを実行します。
IPv4 ルールの追加:セキュリティグループルールの作成 パネルで、前のステップでコピーした IP 範囲を ソース フィールドに貼り付けます。IPv6 アドレスを手動で削除します。宛先(このインスタンス) をステップ 2 で構成したオリジンポートに設定します。その他のパラメーターはデフォルト値のままにして、送信 をクリックします。
IPv6 ルールの追加:ルールを追加 を再度クリックします。ソース フィールドで IPv6 を選択し、IPv6 アドレス範囲を貼り付けます。
WAF 構成のローカル検証:ドメイン名の DNS 設定を変更する前に、ローカルの
hostsファイルにドメイン名をマッピングすることで、WAF 構成をローカルで検証します。これにより、設定ミスによるサービス中断を防止できます。追加完了 ウィザードページで、Copy CNAME をクリックして、WAF が提供する CNAME アドレスを取得します。
ネットワーク診断および分析 を開き、ネットワーク診断および分析 を選択し、コピーした CNAME アドレス(例:
xxx.c.yundunwaf2.com)を入力して、今すぐテストを実行 をクリックします。DNS プロバイダーの解決結果 から IP アドレスをコピーします。その後、ローカルコンピューターの
hostsファイルを編集します。Windows
Notepad で
C:\Windows\System32\drivers\etc\hostsファイルを開き、末尾に以下の行を追加してファイルを保存します。<前のステップでコピーした IP アドレス> <WAF に追加したドメイン名>cmdを開き、ping <WAF に追加したドメイン名>を実行します。返された IP アドレスが追加した IP アドレスと一致する場合、hosts の変更が有効になっています。一致しない場合は、ipconfig /flushdnsを実行して DNS キャッシュをクリアし、再度 ping を実行してください。ブラウザを開き、保護対象のドメイン名をアドレスバーに入力します。
Web サイトが正常に読み込まれる場合、WAF のドメイン名構成は正しく設定されています。次のステップ「DNS 解決の変更」に進んでください。
Web サイトが読み込まれない場合、WAF のドメイン名構成に誤りがある可能性があります。前述の構成を見直し、問題を修正して再度ローカルで検証してください。
ローカル検証が完了したら、hosts ファイルを元の状態に復元してください。
macOS
Command + Spaceを押して、Terminalを検索して開きます。sudo vim /etc/hostsを実行して、hostsファイルを開きます。ファイルの末尾に以下の行を追加して保存します。
<前のステップでコピーした IP アドレス> <WAF に追加したドメイン名>ping <WAF に追加したドメイン名>を実行します。返された IP アドレスが追加した IP アドレスと一致する場合、hosts の変更が有効になりました。それ以外の場合は、sudo killall -HUP mDNSResponderを実行して DNS キャッシュをクリアし、再度 ping を実行します。ブラウザを開き、保護対象のドメイン名をアドレスバーに入力します。
Web サイトが正常に読み込まれる場合、WAF のドメイン名構成は正しく設定されています。次のステップ「DNS 解決の変更」に進んでください。
Web サイトが読み込まれない場合、WAF のドメイン名構成に誤りがある可能性があります。前述の構成を見直し、問題を修正して再度ローカルで検証してください。
ローカル検証が完了したら、hosts ファイルを元の状態に復元してください。
ドメイン名の DNS 解決の変更:ドメイン名の DNS 解決を WAF が提供する CNAME アドレスに設定します。これにより、ドメイン名に対する Web 要求が WAF に解決され、セキュリティ保護が適用されます。
説明サービスへの影響を最小限に抑えるため、この操作は非ピーク時間帯に行うことを推奨します。
追加完了 ウィザードページで、Copy CNAME をクリックして、WAF が提供する CNAME アドレスを取得します。
ドメイン名の DNS 解決を前のステップでコピーしたアドレスに設定します。DNS が Alibaba Cloud DNS でホストされている場合は、以下の手順に従ってください。他の DNS プロバイダーを使用している場合は、同様の手順を各プロバイダーのコンソールで実行してください。
パブリック権威 DNS 解決 ページで、ドメイン名を検索し、Actions、次に 解決設定 をクリックします。
解決設定 ページで、構成する ホストレコード を検索します。Actions、次に Edit をクリックします。たとえば、WAF に接続するドメイン名が
www.aliyundoc.comの場合、プライマリドメインaliyundoc.comのホストレコードwwwを検索して編集します。Edit Record パネルで、Record Type を CNAME に設定します。レコード値 を WAF が提供する CNAME アドレスに設定します。その他の設定は変更せずにそのままにしてください。
DNS レコードを変更する際の注意点:
同一ホストレコードに対しては、1 つの CNAME レコード値のみを指定できます。現在の値を WAF の CNAME アドレスで置き換えます。
CNAME レコードは、同一ホストレコードに対して A、MX、TXT などの他のレコードタイプと競合します。新しい CNAME レコードを追加する前に、競合するレコードを削除してください。
警告DNS の変更中は、一部のユーザーがサービス中断を経験する可能性があります。そのため、元のレコードを削除してすぐに新しい CNAME レコードを追加してください。
OK をクリックして DNS 設定を保存します。更新された DNS レコードが有効になるまで待ちます。
説明DNS の変更には伝搬に時間がかかります。変更後に Web サイトが読み込まれない場合は、10 分待ってからページを更新してください。
ステップ 4:保護対象の追加
トラフィックセキュリティコンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、インスタンスが配置されているリソースグループを選択します。リージョンを グローバル に設定します。
保護対象の追加 をクリックします。アセットから追加 タブで、選択するオブジェクト セクションから WAF を選択し、選択されたオブジェクト セクションに移動して、OK をクリックします。詳細な手順については、「保護対象」をご参照ください。
保護対象を追加すると、WAF インスタンスは Anti-DDoS Origin インスタンスの DDoS 攻撃に対する 無制限の保護 機能を獲得し、ビジネスが DDoS 攻撃を受けた際に自動的にトラフィックスクラビングを開始します。