安全な入口は、製品名より「どの端末が、どの経路で、どの管理面へ届いてよいか」で決まります。この記事はVLAN・SSH防御・VPN・MQTT ACLの長い手順を連結せず、入口を選ぶ判断表と、元検証で確認できた範囲だけを残します。
入口を一つずつ減らす判断表
| 目的 | 許可する主体 | 最初の検証 | 失敗時の戻し方 |
|---|---|---|---|
| 家庭内の管理画面 | 管理端末だけ | 一般端末から届かず、管理端末から届く | 管理端末をつないだまま変更前ルールへ戻す |
| 外出先からの管理 | 認証済みVPN端末だけ | VPNなしでは管理面が公開されていない | VPN経路を停止し、家庭内管理へ戻す |
| SSH | 決めた送信元だけ | 拒否と許可を別セッションで確認 | 既存セッションを残してbanを解除する |
| MQTT publish/subscribe | topic単位の利用者 | 許可topic成功、拒否topic失敗 | 既知のACLへ戻しretainを点検する |
VLAN:SSIDの数より管理面への到達表を先に作る
決めるのはネットワーク名ではなく通信方向
管理端末、一般端末、IoT、サーバーの4役について、DNS、管理UI、SSH、インターネットへの到達可否を表にします。元記事のVLAN部分は設計一般論で、隔離後のパケット実測はありません。したがって「分離できた」とはせず、導入前の判断表として範囲を限定します。
変更中も戻る経路を一つ残す
ルール変更と同時に管理端末まで切り離すと、正しい設定へ戻せません。有線の管理経路か既存セッションを残し、許可側と拒否側を別端末から確認します。
SSH:Fail2banでは自分をbanする失敗から戻した
banリストと復旧操作を対にする
隔離環境では誤banした想定を作り、手動のunbanip後にbanリストから対象が消えることを確認しました。公開SSHを推奨する根拠ではなく、ロックアウト時の復旧操作を先に持つための検証です。
VPN:4方式の比較は入口を増やさないために使う
一つの管理用途に複数の常設入口を重ねない
元検証は使い捨てVMとDockerで4方式の到達を比べましたが、実家庭回線での長期運用値ではありません。選定時は、管理対象、クライアント対応、鍵の失効、停止方法を比較し、採用しなかった方式を常設したまま残さないことを結論にします。
回線側で通信が不安定な場合は、帯域だけでなくMAP-Eの外側ポート枯渇も別の故障として切り分けます。
MQTT:認証成功とtopic認可を分ける
許可topic、拒否topic、retain残留を別々に観測する
Mosquittoの隔離検証では、認証拒否とACL拒否を作り、検証後に元へ戻しました。接続できることは全topicへの権限を意味しません。また、送信者を止めてもretain済みメッセージは購読時に現れます。古い値を現在の送信と誤読しないため、retainの削除も撤去手順に含めます。
入口を開ける前の検収
- 管理対象と許可する端末を一行で書く。
- 許可側の成功と、拒否側の失敗を別端末で確認する。
- ログに送信元・時刻・拒否理由が残るか確認する。
- 鍵の失効、ban解除、ACL復元のいずれかを実行する。
- 採用しない入口を停止し、外部から管理面が見えないことを読む。
観測を中央へ集めるときも、管理入口そのものを増やす必要はありません。流れない場合の切り分けはOpenTelemetry Collectorの失敗と復旧を参照してください。
この検証を回している環境
この検証は、自宅の常設ラボ(使い捨てVM/LXCを回す母艦+GPU+VLAN分離ネットワーク)で動かしています。使っている機材と選定理由、全体構成は1本にまとめています。
ラボ構成のまとめを見る →