Posts

つきまといアクセスの排除完了

  1. 現状

2025年7月下旬頃から、特定の組織的な挙動に起因する可能性がある不審なアクセスが継続していました。
これに対し、先日新たに攻撃ログ収集用のサーバーを構築したことで、本ブログを含む正規サイトの運用を「国内限定」に制限しつつ、不審な挙動を分離・監視できる体制が整いました。

そもそも、私のサーバーには外部からのアクセスは極めて限定的です。
そのため、攻撃ログの観測・分析そのものが運用上の主要な意義となっていますが、国内限定とした場合、これらのアクセスも同時に遮断されてしまいます。

そこで、攻撃ログの観測・分析専用サーバーを別IPで構築することにより、正規サイトを国内限定とすることによるデメリットを補完する構成としました。

現在の正規サイト用ルーター構成では、iptables を用いて以下のように防御を構築しており、海外VPS経由の「つきまといアクセス」は事実上排除されています。
本運用は、今後も恒久的な措置として継続する予定です。

Chain INPUT (policy DROP 2198 packets, 142K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     114K   19M ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2     4572  519K ACCEPT     0    --  br0    *       0.0.0.0/0            0.0.0.0/0
3      750 34579 DROP       0    --  ppp0   *       0.0.0.0/0            0.0.0.0/0            match-set firehol_level1 src
4      451 22657 DROP       0    --  ppp0   *       0.0.0.0/0            0.0.0.0/0            match-set firehol_level2 src
5     1521 82559 DROP       0    --  ppp0   *       0.0.0.0/0            0.0.0.0/0            match-set firehol_level3 src
6        0     0 ACCEPT     17   --  ppp0   *       0.0.0.0/0            0.0.0.0/0            state NEW udp dpt:500
7        0     0 ACCEPT     17   --  ppp0   *       0.0.0.0/0            0.0.0.0/0            state NEW udp dpt:4500
8        2    80 ACCEPT     17   --  ppp0   *       0.0.0.0/0            0.0.0.0/0            state NEW udp dpt:1194
9        0     0 ACCEPT     0    --  lo     *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     229K  154M ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2       49  2060 DROP       0    --  ppp0   br0     0.0.0.0/0            0.0.0.0/0            match-set firehol_level1 src
3       57  2924 DROP       0    --  ppp0   br0     0.0.0.0/0            0.0.0.0/0            match-set firehol_level2 src
4       66  3448 DROP       0    --  ppp0   br0     0.0.0.0/0            0.0.0.0/0            match-set firehol_level3 src
5        0     0 DROP       6    --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpts:137:139
6        0     0 DROP       17   --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            udp dpts:137:139
7        5   260 DROP       6    --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:445
8        0     0 DROP       17   --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            udp dpt:445
9        0     0 DROP       6    --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:111
10       0     0 DROP       17   --  br0    ppp0    0.0.0.0/0            0.0.0.0/0            udp dpt:111
11    4384 2676K ACCEPT     0    --  br0    ppp0    192.168.1.0/24       0.0.0.0/0
12       0     0 DROP       0    --  ppp0   br0     0.0.0.0/0            192.168.1.1          match-set other_block src
13      22  1320 DROP       0    --  ppp0   br0     0.0.0.0/0            192.168.1.1          match-set gcloud src
14       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:22 match-set jpnet src
15       2   112 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:25
16       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:80 match-set jpnet src
17       2   120 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:80 match-set searchengines src
18       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:443 match-set jpnet src
19     134  7784 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:443 match-set searchengines src
20       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:587 match-set jpnet src
21       0     0 ACCEPT     6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:993 match-set jpnet src
22      10   500 DROP       6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:22
23      47  2764 DROP       6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:80
24      83  4528 DROP       6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:443
25       2    96 DROP       6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:587
26       1    52 DROP       6    --  ppp0   br0     0.0.0.0/0            192.168.1.1          tcp dpt:993

Chain OUTPUT (policy ACCEPT 118K packets, 8744K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     0    --  *      lo      0.0.0.0/0            0.0.0.0/0

・ipset の内容
firehol_level1~3 : FireHOL で公開されているブラックリストを DROP
jpnet : 日本国内からのアクセスのみ許可
searchengines : 主要サーチエンジンのみ許可

天命反転期待

土曜で暇なんで、いつものコース
天命反転地を眺めながら隣の丘を散歩。

養老公園
養老公園

今週も天命が反転した。
今週は腰を痛めたりとイマイチだったんで、来週は期待できるか(笑)

その後、養老で養老

今週もスメタナ定食にした。
今日は少し混雑している。
指定席が空いてない・・・
養老SA
スメタナ定食
生煮え気味のキャベツが美味かったから良しとする。

ついでに、ひげまんじゅうの在庫確認。
相変わらず未入荷。
イラン情勢の影響が出てくるとますますます厳しくなるか?!
ひげまんじゅう

それにしても、最近のイラン情勢は妙にきな臭い。
ニュースを追うほどに、単なる地域紛争というよりは、もう少し大きな流れの一部に見えてくる。

こういう時、ふと思い出すのが旧約聖書のエゼキエル書。
あの中で語られる“北から来る軍勢”や“終末の戦い”の描写は、現代の地政学と奇妙に重なる部分がある。

もちろん、こじつけと言えばそれまでだが、中東という舞台が、何千年も前から同じ意味を持ち続けているのは、偶然とは思えない。

さらに最近では、第三神殿の話題も、表には出にくいものの、確実に進んでいるという話もある。

もしそれが現実のものになれば、宗教・政治・軍事が一気に交差する。
その瞬間、今のイランを巡る緊張も、単なる一局面では済まなくなる可能性がある。

…とまあ、養老でスメタナ定食を食いながら考える話ではないが(笑)

ただ、こういう「遠くの出来事」と、目の前の「ひげまんじゅう未入荷」が、同じ地続きにあるのが今の世界なんだろう。

来週、天命が反転するのは自分の運勢だけであってほしいところだが、どうも世界の方も、静かに何かが反転し始めている気がしないでもない。

聖域の3分間を狙うハイエナたち

導入:午前0時の「呼吸」

SSL証明書の更新(ACME)のため、深夜0時、わずか3分間だけ正規サイト(sky.0t0.jp)のPort 80が開放される。
それは、サーバーが深呼吸をするような、一瞬の隙である。

通常は閉ざされた門。
この3分間のみ、外界との接続が許可される「例外領域」となる。


観測ログ:正規サイトとハニーポット

ハニーポット(pacific.sky.0t0.jp)

43.166.247.82 - - [19/Mar/2026:00:00:18 +0900] "GET / HTTP/1.1" 200 717 "-" "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"

00時00分18秒:未だ執拗にアクセスしてくる13_2_3の獣

状況:
開門から約18秒後、IP直打ちと見られるアクセスがハニーポットに到達。

注視点:
User-Agentに含まれる「iPhone OS 13_2_3」は過去にも観測されているパターンであり、同一系統の自動化クライアントが継続的に動作している可能性が高い。

当該アクセスはハニーポット上で正常処理(200応答)され、以下のメッセージが返却されている。

Welcome to a quiet place.
Are you lost again ?

これは誘導・観測を目的とした意図的な応答である。

正規サイト(sky.0t0.jp)

research2.hadrian.io - - [19/Mar/2026:00:01:48 +0900] "GET / HTTP/1.1" 301 547 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0"

00時01分48秒:Hadrianの影

状況:
開門から約1分48秒後、正規サイトに対してスキャンアクセスを確認。

深淵 迎賓館 閉館

ほんの二日前に深淵 迎賓館を再開したばかりだが・・・

そもそもの経緯は、正規サイト(このブログを含むサイト)に付きまとうように、しつこくアクセスしていた連中を、アクセス制御を工夫することで 深淵 迎賓館という餌を与えて引っ越しさせた というものである。

ポンポンスポポンと手玉に取って弄んだ訳だ。

しかしながら、ろくでもない連中の相手をしていても、不快なだけである。

ということで、LOG収集用サイトを一新。
テーマは「海辺で寛ぐ」。

その名も 「Seaside Lounge」。

ちょっとした気分転換も兼ねて、リゾート風のフロントページに作り替えてみた(笑)

「Seaside Lounge」フロントページ
seaside lounge

ドメイン名(URL)も seaside から始まる構成にしてある。

ただし、彼らとは二度と関わりたくないので、URL は公開しない。

見つけられるものなら、どうぞご自由に。
もっとも、見つけたところで歓迎されるとは限らないが。

ひげまんじゅうの在庫

土曜で暇なんで、いつものコース

天命反転地を眺めながら隣の丘を散歩。
強風で霞が飛ばされ、空が澄んでいる。

養老公園
養老公園

先週に続き、今日も天命が反転した。

さて、来週の運命は如何に・・・先週はデイトレ+スイングがうまく行って泡銭爆益だったが、反転しては期待できないか(笑)

その後、養老で養老

今日はスメタナ定食にした。
養老SA
まだエゼキエル戦争絡みの値上げは見られない。
スメタナ定食

ついでに、ひげまんじゅうの在庫確認
今日も在庫なし。
専用陳列棚と値札が残っているんで、入荷予定はあるようだ。
ひげまんじゅう

帰路、背割堤を散歩。
ウグイスが鳴き出した。
背割堤

風が弱まったと思ったら急激な気温上昇・・・
酷暑の夏が今から思いやられる・・・