§1概述與核心原則
RoamSwitch 伺服器版 是一款無頭、常駐自主網路安全性和完整性保護套件,專為跨雲端供應商(AWS、GCP、Azure、裸機 VPS)和本地資料中心的 Linux 伺服器基礎架構而建置。
與專注於移動性和 Wi-Fi 週邊適應的客戶端工作站版本不同,伺服器版本建立在五個毫不妥協的原則之上:入站預設丟棄、關鍵路徑檔案完整性監控 (FIM)、搶權限佔式核心 LPE 和增強功能增測、eBPF 運行時威脅遙測和帶有斷線前緊急警報的自主氣隙主機隔離。
軟體以嚴格的零遙測保證構建,包含零外部HTTP/TLS分析或追蹤庫。所有管理機密和令牌均在嚴格的 0600 權限下以加密方式受到保護。
1.1 比較:客戶端版與伺服器版
| 尺寸 | 客戶端版(桌面/行動) | 伺服器版(無頭/基礎設施) |
|---|---|---|
| 部署 | 筆記型電腦、行動開發者工作站 | 雲端虛擬機器、裸機節點、容器主機 |
| 網路行為 | 基於 Wi-Fi SSID/網關 MAC 的動態設定檔切換 | 靜態入站預設丟棄。僅公開明確允許的端口 |
| 用戶介面 | GTK3 桌面 GUI + 托盤指示器 | 純無頭 CUI。 CLI 指令 + 互動式精靈 |
| 事件通知 | 桌面通知 (libnotify) | 直接推送到 Telegram Bot、LINE Messaging API 和 Webhooks (Slack/Discord) |
| 主要防禦 | 公共 Wi-Fi ARP 欺騙、BadUSB、勒索軟體文件加密 | 外部偵察投放、FIM 竄改偵測、容器逃脫、核心 LPE (CVE-2026-53362) |
1.2 核心架構原則
- 零遙測:該軟體從不將遙測、指標或遙測傳輸到外部伺服器。外部網路呼叫嚴格針對透過子程序
curl執行的使用者配置的事件警報發生。 預設情況下不包含任何外部通訊函式庫。唯一的例外是:僅當維運人員明確啟用cve_kernel_map_updates_enabled(預設 false)後,roamswitch-updater才會每天一次從 lafine.net 匿名擷取容器隔離稽核所需的核心 CVE 資料庫。 - 入站預設丟棄:未發送至明確聲明的服務連接埠或管理 SSH 維護連接埠的入站封包將在
nftables核心層級被丟棄,而不產生 ICMP RST 封包。 - 故障關閉自主遏制:緊急氣隙規則在守護程序重新啟動和進程崩潰後仍然存在。如果外部參與者嘗試刷新 nftables 表,守護程式會偵測到偏差並在幾秒鐘內恢復隔離。
- 0600 加密秘密保護:
/etc/roamswitch/server.conf在建立和每次更新時強制執行嚴格的0600權限(僅可由 root 讀取)。
§2威脅格局與對手模型
現代面向互聯網的伺服器面臨無情的自動掃描、容器突破向量和零日核心權限升級。
- 自動偵察和資料庫暴露:網際網路範圍內的掃描器定位無意暴露的內部資料庫連接埠(MySQL 3306、Redis 6379、Postgres 5432).
- 關鍵路徑竄改與後門插入:入侵者透過修改核心身分驗證二進位檔案(
/bin/login、/usr/bin/sudo、/etc/pam.d/*、/etc/shadow)建立持久性。 - 核心權限升級 (CVE-2026-53362 Frag Gap):非特權攻擊者武器化使用者命名空間 (
unshare -U -r) 以觸發核心記憶體損壞並升級到 root. - Container Socket Breakout:設定錯誤的容器,已安裝
/var/run/docker.sock或--privileged標誌,在主機作業系統上執行 root 操作. - 進程記憶體窺探:攻擊者跨進程附加
ptrace或讀取/proc/$pid/mem以提取私鑰或憑證。
§3系統架構
RoamSwitch 伺服器版作為本機 Rust 二進位檔案運行,旨在實現最小記憶體和零 CPU 開銷。
┌─────────────────────────────────────────────────────────────┐
│ 使用者與管理員空間 │
│ │
│ 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) │
│ 完整性資料庫: /var/lib/roamswitch/fim_baseline.db │
└─────────────────────────────────────────────────────────────┘
§4核心防衛機制
4.1 邊界安全(入站預設丟棄)
nftables 對入站流量套用 policy drop,允許建立連接、環回以及明確配置的 ssh_ports 和 allowed_ports。
保留 SSH 管理連接埠可防止操作員在緊急氣隙狀態下意外鎖定。
4.2 關鍵路徑檔案完整性監控(FIM)
監控 150 多個關鍵作業系統驗證和管理檔案(/bin/login、/usr/sbin/sshd、/etc/pam.d/* 等)。根據 /var/lib/roamswitch/fim_baseline.db 計算 SHA-256 雜湊值。套件管理器掛鉤 /etc/apt/apt.conf.d/99roamswitch-fim 在授權的 apt upgrade 作業之後自動更新基線。
4.3 內核與容器強化
Frag Gap (CVE-2026-53362) 緩解:透過 sysctl 強制執行 user.max_user_namespaces = 0,中和 LPE 向量。 Yama LSM 保護 強制執行 kernel.yama.ptrace_scope = 2,防止未經授權的記憶體檢查。容器工作負載經過 docker.sock 暴露審計。
Docker 的公開連接埠(-p)存在繞過主機標準防火牆的已知問題,因此 protect_docker_ports=true(預設)會始終在 DOCKER-USER 鏈中插入檢查規則,封鎖未被明確允許的外部流量。此外,還配備一個始終運作的防護,透過 docker events 即時偵測 --privileged 容器的啟動或 /var/run/docker.sock 的掛載(容器逃逸風險)並立即通知(無需設定,僅通知不自動封鎖)。對於處理郵件中繼、共用資料夾等他人檔案的主機,可選擇啟用的 File Scan Guard(內建 YARA + 可選 ClamAV)提供定期掃描與自動隔離。
4.4 eBPF 運轉時威脅遙測和防膨脹調整
利用現代 eBPF (CO-RE / BTF) 偵測器在幾毫秒內攔截權限升級和容器突破嘗試。為了消除 Falco 的標準痛點 — 日誌膨脹、磁碟耗盡和 CPU 開銷 —RoamSwitch 標準化了最佳化設定檔 (/etc/falco/config.d/99-roamswitch-optimized.yaml):
- 严重性过滤 (
priority: warning):将嘈杂的操作遥测(信息/通知)抑制 95%,暴露严格可操作的安全事件。 - 核心層級預先刪除 (
drop_failed_exit: true):直接在核心偵測中丟棄失敗的系統呼叫退出,將 CPU 上下文切換減少 50% 以上。 - 内存占用优化 (
cpus_for_each_buffer: 2):将环形缓冲区从 8MB 压缩到 2MB,将内存使用严格限制在 30–50MB。 - Direct UNIX Domain Socket IPC:直接流式传输到
/var/run/roamswitch/events.sock完全消除了磁盘 I/O 抖动。 - 自动日志上限 (
/etc/logrotate.d/roamswitch-falco):每天轮换maxsize 50M和 7 个压缩周期,永久防止磁盘容量耗尽。
4.5 帶有預先切斷警報的緊急氣隙隔離
在發生嚴重篡改時切斷網路介面之前,守護程式會同步向 Telegram、LINE 和 Webhooks 發送緊急警報。警报会自动附加服务器 主机名 和 主 IP 地址。
🚨 [RoamSwitch IMMINENT AIR-GAP] CRITICAL: IMMINENT AIR-GAP HOST ISOLATION (cve_2026_53362_lpe)
🚨 CRITICAL SECURITY INCIDENT DETECTED: cve_2026_53362_lpe
Host: production-node-01 (IP: 192.168.1.10)
Process: exploit_payload (PID: 4921)
ACTION: Initiating host Air-Gap network isolation (SSH preservation active).
WARNING: Outbound internet connectivity will be cut immediately after this message.
Timestamp: 2026-09-06 18:00:00§530 檢查安全診斷套件
伺服器版執行 30 項專門的安全健康審核:
| # | 類別 | 檢查標題 | 標準與邏輯 |
|---|---|---|---|
| 1 | 授權和存取 | SSH Root 登入和密碼驗證 | 驗證 PermitRootLogin no 和密碼驗證已停用 |
| 2 | 授權和存取 | 空密碼帳戶 | 確保 /etc/shadow 中沒有使用者俱有空白密碼雜湊 |
| 3 | 授權和存取 | Sudoers 特權衛生 | 驗證不存在未經授權的 NOPASSWD 指令 |
| 4 | 網路 | 入站預設拒絕 | 審核 nftables 的預設入站丟棄策略 |
| 5 | 核心與完整性 | 非特權使用者命名空間(碎片間隙) | 确保 user.max_user_namespaces = 0 (CVE-2026-53362) |
| 6 | 核心與完整性 | eBPF BTF 支持 | 通过 /sys/kernel/btf/vmlinux 验证内核 BTF 类型信息 |
| 7 | 核心與完整性 | eBPF LSM 活動 | 检查内核 lsm= 启动参数中的 bpf |
| 8 | 核心與完整性 | eBPF 运行时安全代理 | 验证与 Falco / Tetragon 代理的遥测链接 |
| 9 | 貨櫃 | Docker Socket 安装审核 | 检测 /var/run/docker.sock 的容器安装 |
| 10 | 貨櫃 | Docker 特權容器 | 高風險 --privileged 容器工作負載的審核 |
| 11 | 誠信 | 關鍵路徑檔案完整性 (FIM) | 驗證 150 多個核心作業系統二進位檔案的 SHA-256 雜湊值 |
| 12 | 核心與完整性 | Yama過程保護 | 驗證 kernel.yama.ptrace_scope = 2 |
| 13 | 網路 | IP 轉送已停用 | 驗證 net.ipv4.ip_forward = 0 |
| 14 | 網路 | TCP SYN Cookie 保護 | 驗證 net.ipv4.tcp_syncookies = 1 |
| 15 | 網路 | 反向路徑過濾(rp_filter) | 驗證嚴格的反向路徑過濾 (rp_filter = 1) |
| 16 | 核心與完整性 | 核心轉儲限制 | 透過 fs.suid_dumpable = 0 防止進程記憶體洩漏 |
| 17 | 營運 | 自動安全性更新 | 驗證 unattended-upgrades 的配置 |
| 18 | 營運 | NTP時間同步 | 透過 chrony 或 systemd-timesyncd 檢查同步 |
| 19 | 營運 | SSH 暴力保護 | 透過 fail2ban 或 crowdsec 驗證主動監控 |
| 20 | 核心與完整性 | 禁用非特權 eBPF | 檢查kernel.unprivileged_bpf_disabled = 1 |
| 21 | 網路 | 忽略 ICMP 重定向 | 透過 accept_redirects = 0 防止路由中毒 |
| 22 | 網路 | 忽略 ICMP 回顯廣播 | 緩解 Smurf 放大器 DoS 攻擊 |
| 23 | 核心與完整性 | 共享記憶體強化 | 確保 /dev/shm 具有 nodev,nosuid 安裝選項 |
| 24 | 授權和存取 | 不存在遺留的不安全協議 | 驗證是否有明文守護程式(telnet、rsh、tftp) |
| 25 | 核心與完整性 | SUID 進程核心轉儲受限 | 防止 SUID 二进制崩溃时的凭证泄漏 |
§6自我檢查(Docker 環境下的可重現驗證)
RoamSwitch Server Edition 的各項防護機制(輸入方向預設拒絕、Critical Path FIM、基於 guard.yaml 的嚴重度分級封鎖、受保護程序安全機制、安全計時器、核心 LPE 強化等),針對從官方 APT 儲存庫安裝的真實 roamswitch-server v1.3.2 套件(並非本地建置),透過讓另一個 Docker 容器擔任外部攻擊者,您可以在自己的機器上完全重現並驗證。以下是這 8 個驗證情境,以及各自應觀察到的行為(判定標準)。詳細步驟與指令碼請參閱下方 6.3。
| # | 場景 | 攻擊向量 | 通過標準 |
|---|---|---|---|
| PENT-S1 | Nmap SYN 隱形掃描 | 跨連接埠 22、80、443、3306、8080 進行探測 | PASS(100% 隱密) |
| PENT-S2 | 不允許的連接埠偵測 | 卷曲直接连接到端口 3306 和 8080 | 透過 |
| PENT-S3 | Egress / C2 封鎖清單 | 嘗試向惡意 IP 情資中登記的位址發起出站連線 | 通過 僅封鎖已登記的位址;與未登記主機的通訊不受影響(並非一律封鎖) |
| PENT-S4 | FIM 竄改攻擊 | 將後門有效負載注入 /bin/login |
PASS(即時偵測) |
| PENT-S5 | guard.yaml 依嚴重程度分級的圍堵 |
注入引用真實處理程序的 Falco Critical 事件 | 通過 將相關處理程序進行網路隔離後再執行 SIGKILL |
| PENT-S6 | 受保護處理程序安全機制 | 注入引用真實 sshd PID 的同類事件 |
通過sshd 持續執行;僅記錄一則拒絕日誌作為誤判 |
| PENT-S7 | 安全計時器 | 讓 Air-Gap 事件保持未確認狀態(無操作員 ACK) | 通過 無回應時自動復原;一旦已確認(ACK),隔離將持續至執行 emergency-restore |
| PENT-S8 | 內核 LPE 碎片間隙 | 以非特權使用者身分執行 unshare -U -r |
PASS(拒絕) |
SSH 鎖定防護機制
即使在觸發主機層級 Air-Gap(on_emergency)期間,得益於 preserve_ssh_on_isolation=true(預設值),管理員的 SSH 工作階段也不會被切斷。這項設計從結構上杜絕了因誤判導致伺服器被完全隔離、且在沒有實體/主控台存取的情況下無法觸及的事故。您可以透過上方 Docker 測試套件中相當於 PENT-S7 的步驟自行驗證此行為。
驗證範圍的侷限性(誠實揭露)
核心強化(停用非特權 User Namespace、提升 Yama ptrace_scope)無法在容器內進行端對端驗證。由於這些 sysctl 並非按容器命名空間隔離,特權容器(--privileged)中的寫入操作影響的並非驗證用的沙箱,而是正在執行本次驗證的真實機器本身。因此,本次驗證僅確認該 sysctl 寫入操作在(面對唯讀檔案系統時)能夠優雅降級而不當機,至於其數值是否真正生效,則需要在本產品實際運作的真實機器或虛擬機上進行確認。
自行重現
上述所有驗證結果,均可透過官方支援儲存庫(roamswitch-support)中公開的 Docker 測試套件,僅使用官方發行套件在您自己的機器上 100% 重現(無需存取原始碼,也無需信任我們)。
# 取得並重現驗證套件(從官方 APT 儲存庫自動安裝 roamswitch-server)
git clone https://github.com/lafine1211/roamswitch-support.git
cd roamswitch-support/test/docker/server
./run.sh
在 Docker 的預設橋接網路上建立 Target、Attacker、C2 誘餌共 3 個一次性容器,自動驗證全部 18 個項目並輸出報告。完整執行結果已公開於 RESULTS-PENTEST-SERVER-2026-09-07.md(基於透明原則,亦記載了建置過程中發現並修正的測試工具本身問題)。
§7營運、部署和生命週期
7.1 無頭 CUI 工具和設定精靈
透過 CLI 完成遠端管理:
roamswitch server status:完整 30 個檢查診斷輸出 (JA/EN)。roamswitch server setup:連接埠和通知的互動式終端精靈。roamswitch server config show / set <key> <val>:Ansible/Terraform 的可編寫腳本的自動化。roamswitch server test-notify [all|telegram|line|webhook]:端對端通知探測。
7.2 包裝
透過官方 Debian/Ubuntu .deb 儲存庫、RHEL/Fedora .rpm 儲存庫和 Arch Linux AUR (roamswitch-server-bin) 分發。
§8結論
RoamSwitch 伺服器版為 Linux 伺服器基礎架構提供了不折不扣的防禦邊界:零遙測隱私、入站預設丟棄、關鍵路徑 FIM 和主動核心權限升級緩解,為現代雲端節點提供統一的自主防禦。
針對網路攻擊者瞄準的攻擊向量全階段(初期偵察、入侵、權限提升、持久化),實現多層防禦與自主封鎖(Air-Gap)的次世代 Linux 伺服器安全標準。