このドキュメントでは、EdgeOneが提供するホットリンク保護機能を使用して、不正なホットリンクアクセスからお客様のコンテンツを保護し、アクセラレーションサービスのセキュリティを向上させる方法について説明します。
背景紹介
ホットリンクとは、他のWebサイトやアプリケーションが、お客様の許可なくお客様のリソースに直接リンクすることを指します。この行為は、お客様のWebサイトに深刻な影響を及ぼす可能性があります。まず、ホットリンクはお客様の帯域幅とサーバーリソースを消費し、Webサイトの速度低下を引き起こし、さらにはサーバーのクラッシュにつながる可能性があります。次に、ホットリンクによってお客様のコンテンツが不正に使用されたり、許可なく拡散されたりする可能性があり、これはお客様のブランドイメージと評判を著しく損なう恐れがあります。
これらの問題に対応するため、EdgeOneは一連の強力なホットリンク保護機能を提供します。EdgeOneのホットリンク保護機能を使用することで、許可されたユーザーのみがお客様のコンテンツにアクセスして使用できるようにすることができます。許可リストを設定し、特定のドメイン名またはIPアドレスのみにリソースへのアクセスを許可することで、不正なホットリンク行為を防ぐことができます。また、必要に応じてカスタムのホットリンク保護ルールを柔軟に設定することもできます。
EdgeOneのホットリンク保護機能を活用することで、お客様のコンテンツを効果的に保護できます。ホットリンクや悪用の問題を心配することなく、高品質なコンテンツを安心して提供できます。これにより、ブランドイメージと評判を維持しながら、帯域幅とサーバーリソースを節約し、Webサイトのパフォーマンスと信頼性を向上させることができます。
実現方法
1. HTTP応答:IP許可リスト・ブロックリスト、Referer許可リスト・ブロックリスト、UserAgent許可リスト・ブロックリスト、地域アクセス制御などの基本アクセス制御を実装します。詳細はHTTP応答を参照してください。この方法の問題点は以下の通りです: IPアドレスは偽造または隠蔽される可能性があり、攻撃者はIP許可リスト・ブロックリストの制限を回避できます。攻撃者はプロキシサーバー、仮想プライベートネットワーク(VPN)、またはその他の技術を使用して実際のIPアドレスを隠蔽し、アクセス制限を回避することができます。このため、IP許可リスト・ブロックリストは不正アクセスの防止において信頼性が低くなります。
Refererヘッダーも容易に偽造されます。攻撃者はHTTPリクエストヘッダーのRefererフィールドを変更することで、Referer許可リスト・ブロックリストの制限を回避できます。攻撃者はブラウザプラグイン、プロキシツール、またはその他の技術を使用してRefererフィールドを変更し、信頼できる送信元からのアクセスのように見せかけることで、アクセス制限を回避できます。
User-Agentヘッダーの問題はRefererヘッダーと類似しており、同様に偽造されやすいリスクがあります。
2. Token認証:すなわちタイムスタンプベースのホットリンク保護であり、より高い安全性と信頼性を備えています。詳細はToken認証を参照してください。この方式は、前述の基本アクセス制御と比較した場合の利点と問題点は以下の通りです: リンクの再利用防止:各リンクにはタイムスタンプパラメータが含まれており、リンクが転送・共有されても、タイムスタンプの有効期限が切れると、他のユーザーはそのリンクを使用してリソースを取得できません。
偽造が困難:タイムスタンプベースのホットリンク保護は、ホットリンクの難易度を高めます。攻撃者が検証を通過できるURLを構築するには、認証アルゴリズム、認証キー、タイムスタンプ形式などの情報を知る必要がありますが、これらの情報を攻撃者が推測または偽造することは非常に困難です。
クライアント側の改造が必要です:この機能を使用するには、クライアントとEdgeOneの連携が必要です。クライアントが暗号化されたURLリクエストを送信した後、EdgeOneは事前に設定されたルールに基づいてURLの正当性を検証します。そのため、実装時には追加のオーバーヘッドと複雑性を考慮する必要があります。
3. エッジ関数:リモート認証などのカスタマイズされたホットリンク保護機能は、エッジ関数によってサポートされます。この方式の利点と問題点は以下の通りです: 高度な安全性:リモート認証はより高い安全性を提供できます。認証プロセスは、EdgeOneノードサーバーではなく、お客様が提供するリモートサーバーによって完了するため、攻撃者に窃取されるリスクが低減されます。
柔軟性と拡張性:リモート認証はより高い柔軟性と拡張性を提供します。お客様は認証ロジックを柔軟に制御できるため、絶えず変化するビジネス要件やユーザーアクセスパターンに適応できます。
お客様側の改造が必要です:お客様はリモート認証サービスをデプロイし、リモートサーバーの信頼性、安全性、パフォーマンスを確保する必要があります。これにより、認証遅延の増加を防ぎ、サービス品質への影響を回避します。また、異常発生の可能性に備えて、適切な認証タイムアウト時間を設定する必要があります。通常、認証がタイムアウトした場合、リクエストはそのまま通過させます。しかし、認証サービスに異常が発生した場合、不正なリクエストが通過させられ、セキュリティリスクが増加する可能性があります。
操作ガイド
Refererホットリンク防止
HTTPリクエストヘッダーのRefererフィールドに基づいてアクセス制御ルールを設定し、訪問者の身元識別とフィルタリングを実現して、Webサイトリソースの不正利用を防止します。Referer許可リスト・ブロックリストを設定すると、EdgeOneはリストに基づいてリクエストの身元を識別し、アクセスリクエストを許可または拒否します。アクセスリクエストを許可した場合、EdgeOneはリソースリンクを返します。アクセスリクエストを拒否した場合、EdgeOneは403レスポンスコードを返します。
設定サンプル
example.comサイト配下のwww.example.comドメイン業務において、Refererがhttps://www.example.comであるアクセスのみを許可し、その他のリクエストは直接403で拒否する場合は、以下の手順を参照してください。
1. EdgeOneコンソールにログインし、左側のメニューバーでサービス概要に入り、Webサイトセキュリティアクセラレーション内で設定が必要なサイトをクリックします。 2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページで「ルールを作成」をクリックし、「新しい空白のルールを追加」を選択します。
3.1 ルール編集ページで、マッチングタイプとしてHOSTがwww.example.comに等しいことを選択し、同時にマッチングタイプとしてHTTPリクエストヘッダーRefererのヘッダー値がhttps://www.example.com/に等しくないことを設定します。
3.2 「操作」をクリックし、表示される操作リスト内で、操作として「HTTP応答」を選択します。
3.3 レスポンスステータスコード403を設定します。レスポンスページはドロップダウンリストから選択します。現在ページがない場合は、「新しいページ」をクリックして先に作成し、作成完了後に参照します。
4. 完整的なルール設定は以下のとおりです。「保存して公開」をクリックすると、このルールの設定が完了します。
IP許可・拒否リスト
IP許可リストと拒否リストを設定してユーザーリクエストをフィルタリングし、特定のIPのアクセスをブロックまたは許可することで、アクセス元を効果的に制限し、悪意のあるIPによる不正利用や攻撃などの問題を解決できます。
設定サンプル
example.comサイト配下のwww.example.comドメイン業務において、クライアントIPが1.1.2.1~1.1.2.254のアドレス範囲(1.1.2.1と1.1.2.254を含む)にある場合にのみ、当該アクセラレーションドメイン配下のリソースにアクセスでき、それ以外の場合は直接403で拒否する設定を行うには、以下の手順を参照してください。
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイトセキュリティアクセラレーション」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページで「ルールを作成」をクリックし、「新しい空白のルールを追加」を選択します。
3.1 ルール編集ページで、マッチングタイプとしてHOSTがwww.example.comに等しいことを選択し、同時にマッチングタイプとしてクライアントIPが1.1.2.0/24に等しくないことを設定します。
3.2 「操作」をクリックし、表示される操作リスト内で、操作として「HTTP応答」を選択します。
3.3 レスポンスステータスコード403を設定します。レスポンスページはドロップダウンリストから選択します。現在ページがない場合は、「新しいページ」をクリックして先に作成し、作成完了後に参照します。
4. 完整的なルール設定は以下のとおりです。「保存して公開」をクリックすると、このルールの設定が完了します。
UserAgent許可・拒否リスト
User-AgentはHTTPリクエストヘッダーの一部であり、ユーザーがアクセスする際に使用するオペレーティングシステムとバージョン、ブラウザの種類とバージョンなどの識別情報が含まれます。User-Agentの許可リストと拒否リストのルールを設定することで、業務リソースにアクセスするユーザーの送信元を制限し、アクセラレーションの安全性を向上させることができます。
設定サンプル:
example.comサイト配下のwww.example.comドメイン業務がGoogleクローラーによって悪意を持ってリソースをクロールされ、ドメインの帯域幅が急増し、請求書に深刻な影響を与えている場合。分析により、クローラーリクエストのUser-Agentにspiderが含まれていることが判明し、このようなリクエストをブロックしたい場合は、以下の手順を参照してください。
1. EdgeOneコンソールにログインし、左側のメニューバーでサービス概要をクリックして入り、Webサイトセキュリティアクセラレーション内で設定が必要なサイトをクリックします。 2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページでルールを作成をクリックし、新しい空白のルールを追加を選択します。
3.1 ルール編集ページで、マッチングタイプとしてHOSTがwww.example.comに等しいことを選択します。
3.2 「操作」をクリックし、表示される操作リスト内で、操作として「HTTP応答」を選択し、同時にマッチングタイプとしてHTTPリクエストヘッダーUser-Agentのヘッダー値が正規表現.*spider.*に一致することを設定します。
3.3 レスポンスステータスコード403を設定します。レスポンスページはドロップダウンリストから選択します。現在ページがない場合は、「新しいページ」をクリックして先に作成し、作成完了後に参照します。
4. 完整的なルール設定は以下のとおりです。「保存して公開」をクリックすると、このルールの設定が完了します。
Token認証
Token認証は、実装原理がシンプルで信頼性の高いアクセス制御戦略であり、認証ルールを設定してURLアクセスを検証することで、サイトリソースの悪意のある不正利用を効果的に防止できます。この機能を使用するには、クライアントとEdgeOneの連携が必要です。クライアントは暗号化されたURLリクエストを送信し、EdgeOneは事前に設定されたルールに基づいてURLの正当性を検証します。詳細な設定方法については、Token認証を参照してください。 リモート認証
独自の認証サーバーをお持ちの場合は、リモート認証を設定することで、ユーザーリクエストを指定した認証サーバーに転送し、認証サーバーによってユーザーリクエストを検証できます。これは、アクセス権限を正確に制御し、リアルタイムで認証検証を行う必要があるシナリオに適しています。EdgeOneはエッジ関数を通じてリモート認証機能を実現できます。サンプル関数についてはリモート認証を参照してください。