コマンドラインツールを使用してオフラインログファイルを解析し、リクエスト数が上位 10 件の IP アドレス、ユーザーエージェント、リファラーなどの情報を抽出できます。このトピックでは、Linux 環境でコマンドラインツールを使用して CDN オフラインアクセスログを分析する方法について説明します。
ログデータの収集と準備
ログファイル
aliyundoc.com_2018_10_30_000000_010000.gzを取得するには、「クイックスタート」をご参照ください。ログファイルをローカルの Linux サーバーにアップロードします。
ログエントリのサンプル:
[9/Jun/2015:01:58:09 +0800] 10.10.10.10 - 1542 "-" "GET http://www.aliyun.com/index.html" 200 191 2830 MISS "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://example.com/robot/)" "text/html"ローカルの Linux サーバーにログインし、次のコマンドを実行してログファイルを解凍します。
gzip -d aliyundoc.com_2018_10_30_000000_010000.gz解凍により、
aliyundoc.com_2018_10_30_000000_010000という名前のログファイルが作成されます。ログファイルの命名規則:高速化ドメイン名_年_月_日_開始時刻_終了時刻 [拡張フィールド].gz。拡張フィールドはアンダースコア (_) で始まります。例:
aliyundoc.com_2018_10_30_000000_010000_xx.gz。説明特定のログファイルには拡張フィールドが含まれない場合があります。例:
aliyundoc.com_2018_10_30_000000_010000.gz。
異常な動作の特定とフィルタリング
リクエスト数の確認
オフラインアクセスログデータ内の IP アドレスのリクエスト数を分析して、異常なリクエスト数を特定できます。異常なリクエスト数には、通常、次のような特徴があります。
異常に多いリクエスト数:単一の送信元 IP アドレスからのアクセス頻度を詳細に確認します。特定の期間内に、リクエスト数がベースラインから大きく逸脱した IP アドレスが検出された場合、トラフィックスクレイピングが強く疑われます。
短期間での大量のリクエスト:突然のトラフィックスパイクや、異常で周期的なリクエストパターン。
リクエスト数の多い上位 10 件の IP アドレスを一覧表示します。
cat [$Log_Txt] | awk '{print $3}' |sort|uniq -c|sort -nr |head -n 10説明awk '{print $3}':ログファイルの 3 列目 (IP アドレス) を抽出します。列はスペースで区切られています。sort:IP アドレスをソートします。uniq -c:各 IP アドレスの出現回数をカウントします。sort -nr:結果をカウント数の降順でソートします。head -n 10:リクエスト数が最も多い上位 10 件の IP アドレスを取得します。[$Log_Txt]:ログファイルの名前 (例:aliyundoc.com_xxxxxxx) に置き換えてください。
ユーザーエージェント分析
オフラインアクセスログ内のユーザーエージェントを分析して、異常なリクエストを特定します。異常なユーザーエージェントには、通常、次のような特徴があります。
異常または偽装されたユーザーエージェント:多くのスクレイピングツールは、デフォルトまたは偽装されたユーザーエージェントを使用します。一般的でない、疑わしい、または空のユーザーエージェントをフィルタリングすることで、これらを検出できます。
ユーザーエージェントを抽出してカウントします。
grep -o '"Mozilla[^"]*' [$Log_Txt] | cut -d'"' -f2 | sort | uniq -c | sort -nr | head -n 10一般的なユーザーエージェントをフィルタリングして、疑わしいものを特定できます。
grep -v -E "Firefox|Chrome|Safari|Edge" [$Log_Txt]「Mozilla」を含まないユーザーエージェントを持つリクエストの数をカウントします。
awk '!/Mozilla/' [$Log_Txt] | wc -l説明grep -o:マッチした内容のみを出力します。grep -v -E:マッチングを反転させ、指定されたパターンに一致しない行を表示します。wc -l:行数をカウントします。
リクエストパターン分析
オフラインアクセスログ内のリクエスト URL を分析して、異常なリクエストパターンを特定します。異常な URL リクエストには、通常、次のような特徴があります。
URL の類似性が高い:トラフィックスクレイピングでは、類似または同一の URL に対する大量のリクエストが発生することがよくあります。URL パターンを分析することで、これらの異常なリクエストを検出できます。
特定のリソースタイプに対するリクエスト率が高い:画像、CSS、 JS ファイルなどの特定のリソースに対するリクエスト数が異常に多い場合、トラフィックスクレイピングを示している可能性があります。
リクエスト数の多い上位 10 件の URL を一覧表示します。
grep -oP 'https?://[^" ]+' [$Log_Txt] | sort | uniq -c | sort -nr | head -n 10
ステータスコード分析
オフラインログ内のステータスコードを分析して、異常なリクエストを特定します。
4xx または 5xx レスポンスの高い割合を確認:単一の IP アドレスからの 4xx または 5xx ステータスコードの数が多い場合、悪意のあるクローリング試行を示している可能性があります。
さまざまなステータスコードの出現回数をカウントします。
awk '{print $9}' [$Log_Txt] | sort | uniq -c | sort -nr400 ステータスコードを生成した上位 10 件の IP アドレスを一覧表示します。
grep ' 400 ' [$Log_Txt] | awk '{print $3}' | sort | uniq -c | sort -nr | head -n 10リファラー分析
オフラインアクセスログ内の Referer フィールドを分析することで、異常なトラフィックの送信元を特定できます。高速化ドメイン名で異常なトラフィックの急増が発生した場合、リファラー分析により、トラフィックが正当な送信元、ホットリンク、または悪意のある攻撃からのものかどうかを判断できます。異常なリファラー値には、通常、次のような特徴があります。
空のリファラーを持つリクエストの割合が高い:空のリファラーを持つリクエストが大量にある場合、直接アクセスまたはツールによるスクレイピングを示している可能性があります。通常の状況では、画像や動画などの静的リソースへのリクエストには、通常、送信元ページからのリファラーが含まれています。空のリファラーを持つリクエストからのトラフィックが著しく多い場合は、これらのリクエストを調査する必要があります。
リクエスト数の多い上位 10 件のリファラーを一覧表示します。
awk '{print $6}' [$Log_Txt] | sort | uniq -c | sort -nr | head -n 10空のリファラーを持つリクエストをカウントします。
awk '$6=="\"-\"" {count++} END {print count}' [$Log_Txt]空のリファラーを持つリクエストについて、リクエスト数の多い上位 10 件の IP アドレスを一覧表示します。
awk '$6=="\"-\"" {print $3}' [$Log_Txt] | sort | uniq -c | sort -nr | head -n 10説明$6は、ログエントリの 6 番目のフィールドを指し、リファラー値に対応します。空のリファラーは、ログでは"-"として表されます。空のリファラーを持つリクエストが大量のトラフィックを生成する場合は、CDN のリファラーベースのホットリンク防止機能を使用して、許可リストまたは拒否リストを設定し、空のリファラーを持つリクエストからのアクセスを制限することを推奨します。
上位のリファラーが自身のドメインに属していない場合、他のサイトがリソースをホットリンクしている可能性があります。
特定のリファラーからのリクエストをフィルタリングし、対応する IP アドレスをカウントします。
grep 'example.com' [$Log_Txt] | awk '{print $3}' | sort | uniq -c | sort -nr | head -n 10説明example.comを疑わしいリファラードメインに置き換えてください。このコマンドは、そのリファラーを使用してリソースをホットリンクしている IP アドレスを特定します。