※本記事にはプロモーションが含まれています。
WordPressサイトを公開した直後のサーバーログを確認してみました。
すると、公開からそれほど時間が経っていないのに、すでにアクセスが記録されていました。
GET / HTTP/2.0
GET /favicon.ico
GET /favicon.png
User-Agent: okhttp/5.3.0公開したばかりなのに、もうアクセスがある。
「誰か見に来たのかな?」と思いましたが、どうも普通のブラウザではなさそうです。
公開直後のWordPressサイトでもBotは見つけてくる
ログのパターンを見ると、アクセスの順番が少し特徴的でした。
GET /
GET /favicon.ico
GET /favicon.pngまずトップページを取得して、そのあと favicon を取りに来ています。
この動き、実はよくあるBotやスキャナーのアクセスパターンです。
インターネット上では常に自動スキャンが行われていて、新しいサイトも比較的早く見つかります。
公開したばかりのサイトでも例外ではありません。
なぜfaviconを取りに来るのか
ここがちょっと面白いところです。
ファビコンはただのサイトアイコンですが、実はサイト識別の手がかりとして使われることがあります。
CMSやサービスによっては、同じファビコンが使われていることがあるからです。
例えば、
- WordPress
- Joomla
- Jenkins
- GitLab
などは、デフォルトのファビコンが決まっていることがあります。
Botはfaviconを取得して、そのデータをもとに「このサイトはどんなシステムを使っているのか」を推測することがあります。
faviconは「サイトの指紋」になることがある
実際には、faviconのデータからハッシュ値を計算して識別する方法が使われることがあります。
ここでいう「指紋」とは、システムやサービスを識別するための特徴的な情報のことです。
例えば、
- faviconのハッシュ
- 特定のHTML構造
- 特徴的なレスポンスヘッダ
などを手がかりに、「このサイトはWordPressっぽい」「このサービスを使っている」と推測されることがあります。
セキュリティ検索エンジンとして有名なShodanなどでは、faviconのハッシュを使って同じシステムを探すこともできます。
つまり、faviconはサイトを識別するための手がかり(指紋のようなもの)として使われることがあるのです。
faviconからCMSを推測できることもある
例えば、CMSやWebサービスにはデフォルトのfaviconが設定されていることがあります。
そのため、faviconのデータ(画像ファイル)からハッシュ値を計算すると、同じシステムを使っているサイトを見つけることができる場合があります。
例えば次のようなケースです。
- WordPressのデフォルトfavicon
- Jenkinsのデフォルトfavicon
- GitLabのデフォルトfavicon
これらはそれぞれ特徴的なfaviconを持っているため、ハッシュ値を比較することで「どのシステムが使われているか」を推測できることがあります。
セキュリティ検索エンジンとして知られるShodanでは、faviconのハッシュ値を使って同じシステムを検索する機能もあります。
このように、faviconは単なるサイトアイコンではなく、サイトの構成を推測する手がかり(指紋のような情報)として使われることもあるのです。
Shodanではfaviconハッシュで検索することもできる
セキュリティ検索エンジンとして知られるShodanでは、faviconのハッシュ値を使ってインターネット上のシステムを検索することができます。
例えば、次のような検索が可能です。
http.favicon.hash:-247388890このような検索を行うと、同じfaviconを使っているサーバーを一覧で確認することができます。
セキュリティ調査では、
- 特定のシステムがどこで使われているか調べる
- 同じ構成のサーバーを探す
といった用途で、このfaviconハッシュ検索が使われることがあります。
そのため、Botやスキャナーがfaviconを取得するのは、サイトの構成を調べるための情報収集の一環と考えられます。
User-Agent「okhttp/5.3.0」とは何か
ログに記録されていた User-Agent は次のようなものでした。
User-Agent: okhttp/5.3.0これは一般的なブラウザ(ChromeやSafariなど)ではなく、HTTP通信ライブラリの名前です。
okhttp は、主に
- Androidアプリ
- 自動スキャンツール
- APIクライアント
などで使われることが多いHTTPクライアントライブラリです。
つまり、このアクセスは、
- 普通のユーザーがブラウザで訪問した可能性は低い
- 何らかの自動処理(Botやスクリプト)の可能性が高い
と考えられます。
サーバーログを見ていると、こうした
- Go-http-client
- python-requests
- okhttp
などのHTTPクライアントがUser-Agentとして記録されることがあります。
こうしたUser-Agentは、自動スキャンやツールによるアクセスの手がかりになることがあります。
小規模サイトでもスキャンは来る
今回ちょっと驚いたのは、公開したばかりでまだ検索にも表示されていないサイトでも、すでにBotがアクセスしてきていたことです。
インターネット上では常に自動スキャンが動いているので、規模の小さなサイトでもアクセスは普通に発生するのです。
小規模サイトでも、こうしたスキャンは日常的に発生するので、最低限でもログ確認ができる環境を用意しておくと安心です。
(参考)私が使っているサーバーでは、ログ確認やセキュリティ設定が管理画面から行えます。
サーバーのログを見るといろいろ分かる
サーバーログを見ていると、
- Botのアクセス
- スキャナーの動き
- 不審なリクエスト
などがそのまま記録されています。
普段はあまり意識しない部分ですが、ログを観察しているとインターネットの裏側の動きが見えてきます。
今回のfaviconのアクセスも、その一例でした。
まとめ
WordPressサイトを公開すると、想像しているより早くBotがアクセスしてきます。
今回のログから分かったことは次の通りです。
- 公開直後でもBotはアクセスしてくる
- Botはトップページとfaviconを取得することが多い
- faviconはサイト識別に使われることがある
ログを観察していると、こうした小さな発見がいろいろ出てきます。
これからも、サーバーログを見ながら気づいたことを少しずつまとめていこうと思います。
