概要
Object Storage Service (OSS) での異常なトラフィックスパイクは、リソースをホットリンクしたり、サーバーに大量のリクエストを送信したりする悪意のある関係者が原因で発生する可能性があります。 このトピックでは、異常なOSSトラフィックを検出してトラブルシューティングする方法について説明します。
解決策
トラフィックの異常を修正するには、異常なトラフィックを検出して分析する必要があります。 この問題は通常、悪意のある当事者がリファラーベースのホットリンクやリクエストフラッディングなどの戦術を採用したときに生成されるトラフィックによって発生します。
IPアドレスからの悪意のある要求
悪意のあるリクエストが送信されたIPアドレスを特定します。
方法1: OSSコンソールでのランキング統計の確認
OSS コンソールにログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、ランキング統計を確認するバケットの名前をクリックします。
左側のナビゲーションツリーで、データ使用状況 > ホットスポット統計 を選択します。 表示されるページで、[リファラー /IPアドレスのランキング] タブをクリックします。
IP(トップ10) タブで、エラーのある訪問数、トラフィック量、およびランキングのIPアドレスからのPVを確認します。
方法2: バケットアクセスログの確認
バケットアクセスログをチェックして悪意のあるIPアドレスを特定し、悪意のあるリクエストを送信するIPアドレスをブロックします。 次の方法を使用して、バケットへのアクセスのログを確認および分析できます。
ロギング: バケットのロギング機能が有効になっていることを確認します。 詳細は、「ロギングの設定」をご参照ください。 ログ分析を使用して、アクセスログを分析できます。 たとえば、次の
awk
コマンドを使用して、CDNによってback-to-originリクエストとして処理されない多数のリクエストを送信したIPアドレスのリストを取得します。 次に、IPアドレスが悪意のあるリクエストを送信したかどうかを確認できます。cat mylog-oss-example2017-09-10-04-00-00-0000 | awk '{if ($(NF-1) ~/-/) print $1}' | sort | uniq -c | sort -nr -k 1 | head -20
説明OSSログのフィールドの詳細については、「Logging」をご参照ください。
リアルタイムログクエリ: リアルタイムログクエリを使用すると、過去7日間に生成されたバケットのアクセスログを無料でクエリできます。 これらのログを分析して、CDNによってback-to-originリクエストとして処理されない多数のリクエストを送信したIPアドレスを取得できます。
OSSコンソールでランキング統計を確認し、悪意のあるIPアドレスを特定します。 詳細については、「バケットのリソース使用量の表示」をご参照ください。
バケットACLに基づいて、IPアドレスからの悪意のあるリクエストを防御します。
プライベートバケット: 元のプライベートバケットから新しいプライベートバケットにデータを移行することを推奨します。 次に、バケットのカスタムドメイン名をAnti-DDoS ProおよびAnti-DDoS PremiumまたはWeb Application Firewall (WAF) に追加できます。 これにより、外部サービスを保護できます。 データ移行の詳細については、「概要」をご参照ください。 カスタムドメイン名をマップする方法の詳細については、「カスタムドメイン名のマップ」をご参照ください。
パブリック読み取りバケット: 次のいずれかの方法で悪意のあるリクエストをブロックします。
バケットのACLをprivateに変更し、署名付きURLを使用して外部サービスを提供します。 パブリック読み取りバケットと比較して、プライベートバケットからデータをダウンロードするのはより複雑で、署名が必要です。 署名の詳細については、「署名V1を使用した署名付きURLの作成」をご参照ください。
(推奨) 元のバケットから新しいバケットにデータを移行し、Anti-DDoS ProおよびAnti-DDoS PremiumまたはWAFで保護されたカスタムドメイン名を使用して外部サービスを提供します。 データ移行の詳細については、「概要」をご参照ください。 カスタムドメイン名をマップする方法の詳細については、「カスタムドメイン名のマップ」をご参照ください。
元のバケットから新しいバケットにデータを移行し、新しいバケットのカスタムドメイン名を使用して外部サービスを提供します。 一方、新しいバケットに対してCDNベースのアクセラレーションを有効にし、CDNサービスのIPアドレスブラックリスト機能を使用して、悪意のあるリクエストを送信するIPアドレスをブロックします。 詳細については、「IPアドレスブラックリストまたはホワイトリストの設定」をご参照ください。
説明CDNは、IPアドレスブラックリストに追加できるIPアドレスの数を制限します。
リファラーベースのホットリンク
悪意のあるリファラーを特定します。
方法1: OSSコンソールでのランキング統計の確認
OSS コンソールにログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、ランキング統計を確認するバケットの名前をクリックします。
左側のナビゲーションツリーで、データ使用状況 > ホットスポット統計 を選択します。 表示されるページで、[リファラー /IPアドレスのランキング] タブをクリックします。
上位 10 個の Referer タブで、リファラーからの訪問数が異常であるかどうかを確認します。
方法2: バケットアクセスログの確認
OSSのリアルタイムログクエリ機能を有効にして、バケット内のオブジェクトが悪意のあるリファラーによって要求されているかどうかを検出できます。 次の方法を使用して、バケットへのアクセスのログを確認および分析できます。
ロギング: バケットのロギング機能が有効になっていることを確認します。 詳細は、「ロギングの設定」をご参照ください。 次に、ログ分析を使用してアクセスログを分析します。 たとえば、awkコマンドを使用して、多数のホットリンク要求を送信したRefererのリストを取得します。
説明OSSログのフィールドの詳細については、「Logging」をご参照ください。
リアルタイムログクエリ: リアルタイムログクエリを使用すると、過去7日間に生成されたバケットのアクセスログを無料でクエリできます。 これらのログを分析して、CDNによってback-to-originリクエストとして処理されない多数のリクエストを送信したIPアドレスを取得できます。
ホットリンク保護を設定します。
OSSコンソールまたはOSS APIを使用して、バケットのホットリンク保護を設定します。 詳細については、「ホットリンク保護」をご参照ください。