獣たちの引越し - 物理隔離とハニーポットによる静かなサーバー運用
サーバーを運用していると、必ずと言ってよいほど「招かれざる客」が現れる。
特に目立っているのは、特定のUser-Agent(UA: 13_2_3)を用いた海外クローラーが、執拗に記事をスクレイピングするアクセスである。
これまではルーターの iptables による DROP を中心に防御してきたが、終わりのない防衛戦になりがちだった。
そこで今回は発想を少し変え、彼らを排除するのではなく「別の場所へ誘導する」構成を試してみた。
結果として、本丸のサイトからそれらのアクセスをほぼ排除しつつ、別サーバーで観測するという形が成立したため、その構成を記録として残しておく。
空(sky)と深淵(deep)の分離
今回のポイントは、サイトを二つの領域に分けたことである。
本サイト:sky.0t0.jp
- 国内IP帯域からのアクセスを中心に許可
- AWSや海外クラウドなどからのアクセスは
DROP - 80/443ポートも国内向け運用に限定
この結果、ログに残るアクセスは国内検索ボットや通常の閲覧者が中心となり、不要なスキャンや探索はほぼ見られなくなった。
観測用サーバー:deep.0t0.jp(深淵 迎賓館)
- skyとは別のグローバルIPを持つ独立サーバー
- 特定のシグネチャ(UA: 13_2_3 など)を対象にしたハニーポット
- アクセスには 200 OK を返し、ヨハネの黙示録から引用した約1400バイトのページを返す
いわば「観測用の部屋」である。
観測されたアクセスの変化
運用開始後のログを見ると、興味深い変化が確認できた。
かつて sky を叩いていたクローラーが、今度は deep のホスト或いはIPアドレスへ直接アクセスするようになったのである。
43.155.27.244 - - [07/Mar/2026:11:59:57 +0900] "GET /suite/beast-suite.html HTTP/1.1" 200 1713 "http://deep.0t0.jp" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
43.153.122.30 - - [07/Mar/2026:12:14:39 +0900] "GET /suite/beast-suite.html HTTP/1.1" 200 1713 "http://182.171.137.212:80" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
43.157.150.69 - - [07/Mar/2026:15:48:43 +0900] "GET /suite/beast-suite.html HTTP/1.1" 200 1400 "http://182.171.137.212:80" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
43.167.241.46 - - [07/Mar/2026:19:10:29 +0900] "GET /suite/beast-suite.html HTTP/1.1" 200 1399 "http://deep.0t0.jp" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
時間帯も規則的で、まるで決まった巡回ルートを持っているかのように、同じページを繰り返し取得している。
興味深いのは、リファラも deep.0t0.jp を指すようになっており、どうやらこのサーバーを通常の巡回対象として扱い始めたようだ。
なぜこの構成がうまく機能したのか
推測に過ぎないが、こうしたスキャンの多くは何らかの「調査」や「自動巡回」の一部として動いている可能性が高い。
その場合、
- 200 OK が返ること
- ページが存在すること
この二つが満たされれば、巡回対象として扱われ続ける。
結果として、本サイトへの探索は止まり、観測用サーバー側にアクセスが集まる形になったと考えられる。
sky を追っていたはずが、気づけば deep の虜。
ミイラ取りがミイラになる、デジタル版の悲喜劇である。
現在の状態
現在、sky 側のログは非常に静かである。
国内検索ボットや通常の閲覧者が中心となり、以前のような探索的アクセスはほぼ見られなくなった。
一方で deep 側では、今日も黙々と同じページを取得するアクセスが続いている。
本サイトの負荷は減り、観測対象のログは別サーバーに蓄積される。
結果として、運用面でも精神的にも、かなり穏やかな状態が保たれている。
おわりに
サーバー運用では、アクセスを単純に遮断するだけでなく、「どこで受けるか」を設計することも一つの方法である。
空(sky)は静かに保たれ、深淵(deep)では今日も観測が続いている。
それぞれが役割を分けて存在することで、結果として最も平穏な運用環境が生まれたと言えるだろう。