アクセス観測

翻弄の手仕舞い

2025年7月から一年近く続いている執拗なつきまといアクセスのおかげで、様々な実験を行うことができた。
その過程で、ルーターのIPフィルター構成も、以前とは比べ物にならないほど高度化している。

皮肉なことに、すべてはこの「つきまとい」の副産物である。

その集大成が、下記の記事で触れている「未知のアクセス=自動的に観測対象」とする構成だ(笑)
パラレルワールド作戦
正規サイトとハニーポット切り替え詳細

その経緯の中で、「深淵 迎賓館」と名付けた歓迎ムードのサイトも生まれた。
ネーミングからして我ながら傑作で、思い出すたびに少し笑ってしまう。

ただし、そこで得られるLOGの大半は、実質的に“ノイズ”でしかない。
ラズパイの消費電力が小さいとはいえ、サーバーを2台稼働させ続けるコストに見合う価値があるかと言われると疑問が残る。

ゴミLOGを収集し続ける意味はあるのか・・・
そう自分に言い聞かせ、今回はひとまず手仕舞いとすることにした(笑)


正規サーバーは、以下の2系統をバーチャルホストで構成している。

・正規ドメイン:sky.0t0.jp
・非正規アクセス受け口(IP直打ち等):pacific.sky.0t0.jp(ハニーポット)

この前提で、iptablesの構成を以下のように整理し、しばらく運用してみる。

●PREROUTINGチェイン

smtp(ポート25)およびhttp(ポート80)は、DNAT段階では制限を設けない。

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        1    60 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:ssh match-set jpnet src to:192.168.1.1:22
2        3   140 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:smtp to:192.168.1.1:25
3       49  2524 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:http to:192.168.1.1:80
4        8   460 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:https match-set jpnet src to:192.168.1.1:443
5       22  1244 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:https match-set searchengines src to:192.168.1.1:443
6        0     0 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:submission match-set jpnet src to:192.168.1.1:587
7        0     0 DNAT       tcp  --  ppp0   any     anywhere             anywhere             tcp dpt:imaps match-set jpnet src to:192.168.1.1:993

・jpnet:日本国内からのアクセスを Main Server(192.168.1.1)へ
・searchengines:主要検索エンジンのクローラを Main Server(192.168.1.1)へ

パラレルワールド作戦

先日実施した、「深淵 迎賓館 仕様変更」の内容につき、フロントページを変更した。

当初は下記イメージの「深淵 迎賓館」をフロントページとし、別の世界に引き込む構成としていた。
深淵 迎賓館

これはこれで雰囲気があって面白いのだが、ふとこう考えた。

転送された先が、見かけ上まったく正規サイト (https://sky.0t0.jp/) と同じであれば、彼らは「正規サイトに侵入できた」と認識するのではないか、と。

というわけで、深淵サーバー(192.168.1.2)の index.html を、正規サーバー(192.168.1.1)のものと完全に同一にした。

リンク先のページも同様に配置し、見かけ上は正規サイトと同様の記事遷移が可能な状態にしてある。

ブログについては、Hugoのarchivesインデックスのみを配置。
一覧はそれらしく見えるが、実際にリンクを辿ると 404(Not Found)になる仕掛けだ。

当初の、「シュレディンガーのサーバー」作戦に続き、今回は言わば・・・
「パラレルワールド作戦」である(笑)

同じ構造、同じ見た目、しかし中身は別世界。
さて、彼らはどこまで“気づかずに歩き続ける”のか。
しばらくは、この世界線のログを眺めて楽しむことにしよう(笑)

シュレディンガーのサーバー

先日実施した、「深淵 迎賓館 仕様変更」の内容が、なかなか秀逸だと自覚したので記事にした(笑)

同一IPアドレスで、国内からだと正規サイト、海外からだと深淵。

……冷静に考えて、ちょっと頭おかしい構成である(褒め言葉)。


観測者によって変わる世界

同じIPを叩いているはずなのに、

  • 日本国内 → 本尊(192.168.1.1)
  • 海外 → 深淵(192.168.1.2)

という分岐が発生する。

つまりこれはもう、

「シュレディンガーのサーバー」

観測するまで中身が確定しない、量子的なWebサーバーであるw


地理的二重構造という名の罠

普通の人は「海外からのアクセス? DROPでいいでしょ」で終わる。

しかし今回は違う。

あえて通す。
そして、別の世界へ案内する。

属性 ゲートウェイ 到着地 体験
国内(jpnet) Rule 19/21/22 192.168.1.1 3,000記事の静寂
海外(その他) Rule 15 (DNAT) 192.168.1.2 2178バイトの虚無

拒否ではない。
歓迎している(ように見せかけて奈落に落とす)。

この「偽りの表札」こそが今回のキモ。


デイトレに例えると

日本人には本物の板を見せる。

海外のボットには──
見せ板(しかも約定しないやつ)を握らせる。

完全にハンデ戦であるw


なぜこんな構成は珍しいのか

普通はこうなる:

  • WAF(Web Application Firewall)
  • CDN(Geo-IP機能)
  • 高価なロードバランサー

で、きっちり振り分ける。

しかし今回は違う。

iptables + ipset だけ。

家のルーター感覚で
「世界を二分」している。

この雑さと完成度の同居がたまらないw


犯人(獣)視点の悲劇

昨夜の配送スパムの送り主(たぶん海外)はこうなる:

テスト(自分)
「よし、サイト生きてるな(深淵が表示される)」

獲物(国内)
「……普通に記事読めるけど?」

犯人
「?????」

「本尊」と「深淵」の圧倒的格差

昨日、深淵 迎賓館 仕様変更を実施し、深淵サーバーでLOGを集めてるけど、深夜のわずか5時間で、この数字の差……!
iptablesのパケットカウンタが、あまりにも残酷なまでの「格差」をリアルに映し出しています。

間違いなく、「深淵 迎賓館」がメインサイトであると言って良いでしょう(笑)

Chain FORWARD (policy DROP 1 packets, 44 bytes)
num   pkts bytes target     prot opt in     out      source               destination 
12    7235  296K ACCEPT     6    --  ppp0   br0      0.0.0.0/0            192.168.1.2          multiport dports 25,80,443
...
17       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:80 match-set jpnet src
18       2   120 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:80 match-set searchengines src
...
19       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:443 match-set jpnet src
20      31  1812 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:443 match-set searchengines src

もはや「本尊(192.168.1.1)」がゴーストタウンで、「深淵(192.168.1.2)」が超巨大都市のような状態ですw

深淵 迎賓館 仕様変更

別ホストの攻撃LOG収集用サーバー、名付けて「深淵 迎賓館」について、これまでは正規サイトからの転送などは行わず、ルーターも専用に用意し、別IPによる完全独立構成で運用していた。

しかし、実際に流れてくるのはこの程度の“ありふれた”アクセスばかりで、専用ルーターを用意するほどのメリットは見当たらない(笑)

59.146.94.167.censys-scanner.com - - [26/Mar/2026:05:25:34 +0900] "\x16\x03\x01" 400 489 "-" "-"
59.146.94.167.censys-scanner.com - - [26/Mar/2026:05:25:34 +0900] "GET / HTTP/1.1" 200 2159 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)"
・・・
46.101.82.104 - - [26/Mar/2026:05:49:15 +0900] "GET / HTTP/1.1" 200 5273 "-" "-"
204.76.203.206.ptr.pfcloud.network - - [26/Mar/2026:05:53:35 +0900] "GET / HTTP/1.1" 200 2215 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"

いわゆるスキャナ系、既知クラウド、そして正体不明の汎用クローラ。
“観測対象としての価値”という意味では、特に目新しさはない。

そこで本日より、グローバルIPは正規サイトと同一とし、ルーターも常時稼働している一台に統合、以下の構成で運用を開始した。

●物理的イメージ

Internet
   |
   v
+----------------------------+
|        Router              |
|     iptables / NAT         |
+----------------------------+
   |                      |
   |                      |
 Normal                 Suspicious
 / Allowed              / Unknown
   |                      |
   v                      v
+----------------+   +----------------+
| 192.168.1.1    |   | 192.168.1.2    |
| Main Server    |   | Honeypot       |
+----------------+   +----------------+

●ルーターの iptables 振り分けイメージ