翻弄の手仕舞い

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)へ

●FORWARDチェイン

ルール9以降がサーバー向けの転送処理となる。
PREROUTING(DNAT)で振り分けられたパケットに対し、不審アクセスを事前にDROPした上で転送する。

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     131K  110M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
2        0     0 DROP       tcp  --  br0    ppp0    anywhere             anywhere             tcp dpts:137:netbios-ssn
3        0     0 DROP       udp  --  br0    ppp0    anywhere             anywhere             udp dpts:netbios-ns:139
4        5   260 DROP       tcp  --  br0    ppp0    anywhere             anywhere             tcp dpt:microsoft-ds
5        0     0 DROP       udp  --  br0    ppp0    anywhere             anywhere             udp dpt:445
6        0     0 DROP       tcp  --  br0    ppp0    anywhere             anywhere             tcp dpt:sunrpc
7        0     0 DROP       udp  --  br0    ppp0    anywhere             anywhere             udp dpt:sunrpc
8     1375  922K ACCEPT     all  --  br0    ppp0    192.168.1.0/24       anywhere
9       11   472 DROP       all  --  ppp0   br0     anywhere             anywhere             match-set firehol_level3 src
10      33  1716 DROP       all  --  ppp0   br0     anywhere             anywhere             match-set firehol_level2 src
11       1    40 DROP       all  --  ppp0   br0     anywhere             anywhere             match-set firehol_level1 src
12       1    40 DROP       all  --  ppp0   br0     anywhere             anywhere             match-set other_block src
13       1    40 DROP       all  --  ppp0   br0     anywhere             anywhere             match-set gcloud src
14      38  2224 ACCEPT     all  --  ppp0   br0     anywhere             192.168.1.1

・firehol_level1~3:FireHOL公開のブラックリストIPをDROP
・gcloud:スパム傾向の強いGoogle Cloud発をDROP
・other_block:独自に不審と判断したアクセス(主に国内)をDROP

http(ポート80)は、本来であれば国内限定としたいところだが、Let’s Encrypt のACMEチャレンジ対応のため、定期的に開放が必要となる。

また、完全に閉じてしまうと観測対象そのものが消えてしまうため、あえて“最低限の緩和”という形に落ち着いた。

正規ホスト名(sky.0t0.jp)でアクセスされた場合は、httpsへ301リダイレクトされる。
その結果、海外からのアクセスはHTTPS段階で自動的にDROPされる。

一方、IP直打ちなどホスト名不一致のアクセスは、ハニーポット(pacific.sky.0t0.jp)側に誘導されるため、スパムアクセスのLOGを“適度に”収集して楽しめる構成となっている(笑)

ちなみに、ハニーポットのコンテンツは下記メッセージと画像のみ。

Welcome to a quiet place.
Are you lost again ?
honey_img

早速、例のつきまといメンバーからアクセスがあったが、正規サイトへのリクエストは301リダイレクト後に遮断されている。

ec2-35-79-233-72.ap-northeast-1.compute.amazonaws.com (35.79.233.72) - - [18/Apr/2026:06:32:31 +0900] "GET / HTTP/1.1" 301 345 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
43.155.129.131 (43.155.129.131) - - [18/Apr/2026:06:52:28 +0900] "GET / HTTP/1.1" 301 345 "-" "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"

これでしばらくは固定運用としたいところだが、また気まぐれで構成をいじり始める可能性も否定できない(笑)

観測という名の遊びは、なかなかやめ時が難しい。