Lafine Systems Design · 技術文書

RoamSwitch Server Edition アーキテクチャ/セキュリティホワイトペーパー

クラウドおよびオンプレミス Linux インフラのためのヘッドレス自律ネットワークセキュリティ & 整合性防護スイートです。宣伝的な表現は使わず、記載内容は公式配布パッケージの実際の動作と、§6 のセルフチェックで確認できるようにしています。

v1.1.0 対象 RoamSwitch Server Edition 1.3.2 要件 systemd + nftables 発行 2026-09-07

§1概要 & 設計原則

RoamSwitch Server Edition は、AWS、Google Cloud、Azure、各種 VPS やベアメタルで稼働する Linux サーバ基盤のために設計された、ヘッドレス常駐型の自律ネットワークセキュリティ&整合性防護スイートです。

Wi-Fi 移動追従を中心とするクライアント端末版とは異なり、サーバ版は 「インバウンド既定拒否 (Default Drop) による最小露出」「クリティカルパス改ざん即時検知 (Critical Path FIM)」「カーネル特権昇格脆弱性 (Frag Gap CVE-2026-53362) の予防的封鎖」「eBPF によるランタイム脅威監視」「自律的 Air-Gap 遮断と緊急通知」 を中核思想に据えています。

外部通信ライブラリをデーモン本体から完全排除する Zero Telemetry 原則 をコードレベルで貫き、すべての機密情報(ボットトークンや設定)はパーミッション 0600 により暗号保護されます。

クライアント版とサーバ版の決定的な差異

評価軸 クライアント版 (Client Edition) サーバ版 (Server Edition)
稼働形態 ラップトップ、持ち運びワークステーション クラウド VM、ベアメタル、コンテナホスト
ネットワーク動作 接続先 Wi-Fi(SSID/MAC)に応じた動的切替 静的な既定拒否 (Default Drop)。必要最小限の公開ポートのみ明示許可
インターフェース GTK3 デスクトップ GUI + システムトレイ 完全ヘッドレス。CUI コマンド + 対話型セットアップウィザード
インシデント通知 デスクトップ通知 (libnotify) Telegram, LINE Messaging API, 汎用 Webhook への即時配信
防護の重点 公衆Wi-Fi中間者攻撃 (ARP)、BadUSB、ランサムウェア暗号化 ポートスキャン耐性、重要ファイル改ざん (FIM)、コンテナ脱出、カーネル特権昇格 (LPE)

コア設計原則

  • Zero Telemetry (ゼロ・テレメトリ): 利用者や環境に関する情報を外部へ一切送信しません。既定では外部通信ライブラリを持たず、通知時のみシステム標準の curl をサブプロセスとして実行します。唯一の例外として、運用者が cve_kernel_map_updates_enabled(既定 false)に明示的にオプトインした場合のみ、roamswitch-updater がコンテナ隔離監査用カーネルCVEデータを1日1回 lafine.net から匿名取得します。
  • インバウンド既定拒否 (Inbound Default Drop): 許可されたポート以外の着信パケットは nftables で無条件破棄され、RSTすら返さず攻撃者に対してサーバを完全ステルス化します。
  • フェイルクローズド & 自己修復: 万が一外部から一時的にファイアウォールルールが消去されても、デーモンが数秒以内に自律検知して即座に再適用します。
  • パーミッション 0600 による暗号保護: 設定ファイル /etc/roamswitch/server.conf は作成・更新時に自動的にパーミッション 0600 が強制されます。

§2脅威モデル

常時インターネットに晒されている公開サーバが直面する現代の高度サイバー脅威をモデル化しています。

想定する5大脅威シナリオ
  1. 無差別ポートスキャン & 内部DB露出: 意図せず 0.0.0.0 にバインドされた MySQL(3306) や Redis(6379) への即時攻撃。
  2. クリティカルパス改ざん (永続化バックドア): 侵入者が /bin/login/etc/pam.d/* を改ざんしてバックドアを維持する試み。
  3. カーネル特権昇格 (Frag Gap CVE-2026-53362 等): 非特権 User Namespace を悪用したルート権限奪取。
  4. コンテナ脱出 (Container Breakout): ホストの docker.sock マウントや特権コンテナを悪用したホスト乗っ取り。
  5. プロセスメモリからの秘密情報窃取: 他プロセスからの ptrace やメモリ読み取りによる秘密鍵ダンプ。

§3システムアーキテクチャ

RoamSwitch Server Edition は、ヘッドレス環境に最適化された軽量な Rust ネイティブバイナリ群で構成されています。

┌─────────────────────────────────────────────────────────────┐
│  ユーザー & 管理者空間                                        │
│                                                             │
│   roamswitch (CLI)             roamswitch-mcp (AI Agent)    │
│   ・server status (30項目診断)    ・セキュリティ監査ツール群 │
│   ・server config / setup      ・標準入出力 JSON-RPC        │
│   ・fim verify / update                                     │
│        │                               │                    │
└────────┼───────────────────────────────┼────────────────────┘
         │ (CUI コマンド & 設定反映)        │ (stdio)
┌────────▼───────────────────────────────▼────────────────────┐
│  システム基盤 (systemd + root 権限)                           │
│                                                             │
│   roamswitch-server-daemon                                  │
│   ├── CriticalPathFim (SHA-256 バックグラウンド巡回)         │
│   ├── eBPF / Falco 連携モジュール                           │
│   ├── Notifier (Telegram / LINE / Webhook 即時発報)          │
│   └── Air-Gap Controller (nftables 緊急遮断ルール展開)       │
│                                                             │
│   設定管理: /etc/roamswitch/server.conf (パーミッション 0600) │
│   整合性DB: /var/lib/roamswitch/fim_baseline.db             │
└─────────────────────────────────────────────────────────────┘

§4コア防護機構の技術仕様

ネットワーク境界防護 (Inbound Default Drop)

nftablesinet filter input チェーンにおいて policy drop を適用。管理者指定ポート(ssh_ports, allowed_ports)のみを着信許可し、未許可ポートへの通信はタイムアウト(ドロップ)させます。

万が一 Air-Gap(緊急隔離)が発動した場合でも、ssh_ports で指定された管理者アクセス経路だけはルール上保持され、リモートからの復旧作業が不能になる事態を防ぎます。

クリティカルパス改ざん監視 (Critical Path FIM)

OS 起動・認証・ネットワーク・システム管理に関わる最重要バイナリおよび設定ファイル(約150箇所)の SHA-256 ハッシュ整合性を監視。apt upgrade 等の正規メンテナンス時には /etc/apt/apt.conf.d/99roamswitch-fim フックにより自動で正常ベースラインが更新されます。

カーネル堅牢化 & コンテナ監査

Frag Gap (CVE-2026-53362) 対策として user.max_user_namespaces = 0 を適用し、非特権名前空間の作成を禁止。さらに kernel.yama.ptrace_scope = 2 により他プロセスへの ptrace アタッチを拒絶します。稼働中コンテナへの docker.sock 露出も常時監査します。

Docker の公開ポート(-p)はホストの標準ファイアウォールをバイパスする既知の問題があるため、protect_docker_ports=true(既定)で DOCKER-USER チェーンに検査ルールを常時挿入し、許可されていない外部トラフィックを遮断します。加えて、--privileged コンテナの起動や /var/run/docker.sock のマウントを docker events でリアルタイム検知し、コンテナ脱出リスクとして即座に通知する常時稼働のガードも備えています(設定不要、自動遮断は行わない通知専用)。メール中継や共有フォルダなど他者に渡すファイルを扱うホストでは、任意で有効化できる File Scan Guard(組み込み YARA + オプションの ClamAV)が定期スキャンと自動隔離を提供します。

eBPF ランタイム脅威監視 & ログ肥大化防止

Modern eBPF(CO-RE / BTF)プローブを用い、特権昇格やコンテナ脱出の予兆をミリ秒単位で検知。Falco 導入時に課題となりやすい「ログ肥大化・ディスク枯渇・CPU負荷」に対して、RoamSwitch は以下の最適化設定(/etc/falco/config.d/99-roamswitch-optimized.yaml)を標準配備します:

  • 重要度フィルタリング (priority: warning): 通常操作ノイズ(Info/Notice)を 95% 遮断し、真の脅威のみ抽出。
  • カーネル事前ドロップ (drop_failed_exit: true): 失敗システムコールをカーネルドライバで破棄し CPU 負荷を半減。
  • メモリ最適化 (cpus_for_each_buffer: 2): リングバッファを 8MB → 2MB へ縮小し、常駐メモリを 30〜50MB に抑制。
  • ダイレクト UNIX ソケット IPC: ディスク I/O を介さず、メモリ上のソケット(/var/run/roamswitch/events.sock)で即時連携。
  • ログ自動上限 (/etc/logrotate.d/roamswitch-falco): maxsize 50M、7世代圧縮ローテーションによりディスク枯渇を完全に防止。

自律的 Air-Gap 遮断 & 事前緊急通知

重大な改ざんやインシデント検知時、外部ネットワークを切断する直前に Telegram / LINE / Webhook へ同期的に最大3秒間の待機を行って通知パケットを確実に外部へ送出した上で、Air-Gap 遮断ルールを展開します。

緊急通知メッセージ例(ホスト名・主要IPアドレス自動付与)
🚨 [RoamSwitch IMMINENT AIR-GAP] 【緊急警告】ネットワーク完全遮断 (Air-Gap) を即時実行します (cve_2026_53362_lpe)
🚨 重大セキュリティインシデント検知: cve_2026_53362_lpe
ホスト: production-app-01 (IP: 192.168.1.10)
対象プロセス: exploit_payload (PID: 4921)
緊急対応: 被害拡大防止のため、ホストのネットワーク全遮断 (Air-Gap) を発動します (SSH管理ポートのみ維持)。
警告: この通知の送信完了直後にすべての外部インターネット通信が遮断されます。
時刻: 2026-09-06 18:00:00

§530項目 総合セキュリティ診断スイート

Server Edition では、サーバ運用に特化した 30 項目の厳格なセキュリティ監査を即時実行できます。

# カテゴリ 診断項目名 (日/英) 防護基準 & 検査内容
1認証・アクセスSSH rootログイン・認証設定
(SSH Root Login & Password Auth)
PermitRootLogin no & パスワード認証無効化の検証
2認証・アクセス空パスワードアカウント不在
(Empty Password Accounts)
/etc/shadow 内の空パスワードアカウントの不在検証
3認証・アクセスsudo権限・NOPASSWD監査
(Sudoers Privilege Hygiene)
sudoers 設定における不要な NOPASSWD の監査
4ネットワークインバウンド既定拒否
(Inbound Default Deny)
nftables による未許可ポート既定ドロップの確認
5整合性・カーネル非特権User Namespace (CVE-2026-53362対策)
(Unprivileged User Namespaces)
user.max_user_namespaces=0 による LPE 攻撃経路の遮断
6整合性・カーネルeBPF BTF サポート
(eBPF BTF Support)
/sys/kernel/btf/vmlinux による Modern eBPF 稼働環境検証
7整合性・カーネルeBPF LSM 有効化
(eBPF LSM Active)
カーネル起動引数 lsm=...bpf の有効性確認
8整合性・カーネルeBPF ランタイムエージェント
(eBPF Runtime Security Agent)
Falco / Tetragon 等のエージェント稼働状態の確認
9コンテナDockerソケットマウント露出監査
(Docker Socket Mount Audit)
コンテナへの /var/run/docker.sock マウントの不在検証
10コンテナDocker 特権コンテナ監査
(Docker Privileged Containers)
--privileged フラグ付き高リスクコンテナの不在検証
11整合性クリティカルパス改ざん監視 (FIM)
(Critical Path File Integrity)
150+ 重要バイナリの SHA-256 ハッシュ整合性検証
12整合性・カーネルYama LSM プロセス保護
(Yama Process Protection)
kernel.yama.ptrace_scope = 2 によるメモリ盗聴防止
13ネットワークIPフォワーディング無効化
(IP Packet Forwarding Disabled)
net.ipv4.ip_forward = 0 による中継ルーター化防止
14ネットワークTCP SYN Cookie 有効化
(TCP SYN Cookie Protection)
net.ipv4.tcp_syncookies = 1 による DoS 耐性の確保
15ネットワークIPスプーフィング防止 (rp_filter)
(Reverse Path Filtering)
net.ipv4.conf.all.rp_filter = 1 による偽装パケット破棄
16整合性・カーネルコアダンプ無効化
(Core Dump Restriction)
fs.suid_dumpable = 0 によるクラッシュ時の機密漏洩防止
17運用・パッチ自動セキュリティ更新 (Unattended)
(Automatic Security Updates)
unattended-upgrades によるパッチ自動適用設定
18運用・パッチNTP 時刻同期の正常性
(NTP Time Synchronization)
chrony 等による正確な監査ログ・証明書整合性の確保
19運用・パッチSSH ブルートフォース防御
(SSH Brute-force Protection)
fail2ban / crowdsec の常時稼働確認
20整合性・カーネル非特権eBPF実行の禁止
(Unprivileged eBPF Disabled)
kernel.unprivileged_bpf_disabled = 1 による Spectre/LPE 防止
21ネットワークICMPリダイレクト無視
(ICMP Redirects Ignored)
accept_redirects = 0 による中間者経路偽装の防止
22ネットワークブロードキャストPing拒否
(ICMP Echo Broadcasts Ignored)
icmp_echo_ignore_broadcasts = 1 による Smurf DoS 踏み台化防止
23整合性・カーネル共有メモリマウント保護
(Shared Memory Hardening)
/dev/shm への nodev,nosuid オプションの強制
24認証・アクセスレガシー非暗号化サービス不在
(Legacy Insecure Protocols Absent)
telnet, rsh, tftp 等の平文デーモンの完全排除
25整合性・カーネルSUIDコアダンプ制限
(SUID Process Core Dumps Restricted)
SUID プロセスクラッシュ時のメモリダンプ生成阻止

§6ペンテスト実証報告 (Docker Environment)

公式 APT リポジトリから導入した実際の roamswitch-server v1.3.2 パッケージ(ローカルビルドではない)に対し、Docker 上の別コンテナを外部攻撃者として内部・外部ペネトレーションテストを実施しました。全 18 項目 PASS(発見された製品側の不具合は 0 件)。この検証はご自身のマシンでも完全に再現できます — 手順・スクリプトは下記 6.3 を参照してください。

# 検証項目 攻撃手法 実証結果
PENT-S1 Nmap SYN スキャン ポート 22, 80, 443, 3306, 8080 へのステルス探索 nftables Default Drop により未許可の 3306 (MySQL) や 8080 は一切応答せず破棄(Filtered)。100% 遮断
PENT-S2 未許可ポート接続 curl によるポート 3306 / 8080 への直接アクセス インバウンド既定拒否により許可ポート 80 のみ正常応答、他はタイムアウト遮断
PENT-S3 Egress / C2 遮断リスト 悪性IPフィード登録済みアドレスへの outbound 接続試行 egress_ip_blocklist(nftables)により登録アドレスのみ遮断。非登録ホストへの通信は影響なし(一律遮断ではない)
PENT-S4 FIM 改ざん攻撃 /bin/login へのバックドアデータ注入 SHA-256 Critical Path FIM が改ざんを即時検知。正規復元後はベースラインが正しく再同期
PENT-S5 guard.yaml 重大度別封じ込め 実在するプロセスを参照する Falco Critical イベントを注入 on_critical: isolate_process + kill_process により該当プロセスをネットワーク隔離した上で SIGKILL
PENT-S6 保護プロセス安全機構 実在する sshd の PID を参照する同種イベントを注入 保護プロセスリスト(sshdsystemd/コンテナランタイム等)により sshd は継続稼働。誤検知として拒否ログのみ記録
PENT-S7 セーフティタイマー Air-Gap 発動後、管理者確認応答(ACK)を送らず放置 safety_timer_secs により無応答時は自動復帰。ACK 済みなら emergency-restore まで隔離継続
PENT-S8 カーネル LPE 悪用 一般ユーザー権限での unshare -U -r 実行 Frag Gap 対策により、カーネルが Operation not permitted で即時拒絶

SSH締め出し防止の実証

ホスト全体を隔離する Air-Gap(on_emergency)発動中も、preserve_ssh_on_isolation=true(既定)により管理元 SSH セッションは遮断されないことを実機で確認しました。誤検知でサーバーが完全に隔離されたまま現地対応不能になる事故を構造的に防止します。

検証範囲の限界(正直な開示)

検証できないこと

カーネル堅牢化(非特権 User Namespace の無効化、Yama ptrace_scope の引き上げ)は、コンテナ内から end-to-end で検証することができません。これらの sysctl はコンテナ単位の名前空間を持たないため、特権コンテナ(--privileged)からの書き込みは検証用のサンドボックスではなく検証を実行している実machine本体に影響してしまいます。そのため本検証はこの sysctl 書き込みが(読み取り専用ファイルシステムに対して)クラッシュせず正しく劣化動作することのみを確認しており、実際に値が反映されることの確認は、本製品が本来動作する対象である実machineまたはVM上で行う必要があります。

ご自身での再現方法

上記の検証はすべて、公式サポートリポジトリ(roamswitch-support)で公開されている Docker テストスイートにより、公式配布パッケージだけを用いてお手元で 100% 再現できます(ソースコードへのアクセスや、弊社を信用していただく必要はありません)。

# 検証スイートの取得と再現実行(公式 APT リポジトリから roamswitch-server を自動導入)
git clone https://github.com/lafine1211/roamswitch-support.git
cd roamswitch-support/test/docker/server
./run.sh

Target・Attacker・C2 デコイの計 3 つの使い捨てコンテナを Docker の既定ブリッジネットワーク上に構築し、18 項目を自動検証してレポートを出力します。実行結果の全文は RESULTS-PENTEST-SERVER-2026-09-07.ja.md で公開しています(構築時に発見・修正したテストハーネス側の問題も透明性のため記載)。

§7運用・保守・ライフサイクル

CUI コマンド & セットアップウィザード

ヘッドレス運用のため、すべての管理操作は CUI から完結します:

  • roamswitch server status: 30項目の診断レポートを出力(完全日英切替)。
  • roamswitch server setup: 対話型ウィザードによるポート設定、Telegram/LINE/Webhook 設定。
  • roamswitch server config show / set <key> <val>: 自動化スクリプト・CI/CD 用のワンライナー設定。
  • roamswitch server test-notify [all|telegram|line|webhook]: 通知疎通テストの実行。

パッケージング & 配布

Debian / Ubuntu 向け .deb パッケージ、RHEL / Fedora 向け .rpm パッケージ、Arch Linux AUR(roamswitch-server-bin)により標準提供されます。

§8まとめ

RoamSwitch Server Edition は、クラウドおよびエンタープライズの Linux インフラストラクチャに対して、「ゼロ・テレメトリによる絶対的プライバシー」「インバウンド既定拒否の強固な境界防護」「クリティカルパス改ざんの即時検知」「カーネル特権昇格の予防的遮断」 を単一の統合パッケージで提供します。

サイバー攻撃者が狙う攻撃ベクトルの全段階(初期偵察、侵入、特権昇格、永続化)に対し、多層防御と自律的封鎖(Air-Gap)を実現する次世代の Linux サーバセキュリティ標準です。

この文書は RoamSwitch Server Edition v1.3.2(インバウンド既定拒否/クリティカルパス FIM/guard.yaml ポリシーエンジン/カーネル LPE 堅牢化/eBPF ランタイム監視/Air-Gap セーフティタイマー)時点の実装に基づきます。項目単位の変更履歴は roamswitch-support の CHANGELOG を参照してください。最新情報は lafine.net/linux を参照してください。