RoamSwitch Server Edition 運用マニュアル
クラウド VPS(AWS, GCP, Azure, さくらのVPS, ConoHa 等)、データセンター、コンテナホスト環境のための公式導入・設定・運用リファレンスです。
1. 概要 & システム要件
RoamSwitch Server Edition は、常時インターネットに晒される Linux サーバー向けに特化した完全ヘッドレス(GUI 依存ゼロ)の自律型セキュリティ&整合性防護スイートです。
Wi-Fi 接続先の切り替えに応じた動的プロファイル切替を行うクライアント版とは異なり、サーバー版は「インバウンド既定拒否 (Default Drop)」「クリティカルパス改ざん監視 (FIM)」「カーネル LPE (Frag Gap) の予防的封鎖」「eBPF ランタイム脅威監視」「SSH 締め出し防止フェイルセーフ」「Telegram / LINE / Webhook への自律緊急通報」を中核機能とします。
動作要件
- 対応 OS: Ubuntu 22.04 / 24.04 LTS, Debian 12+, AlmaLinux / Rocky Linux / RHEL 9+, Fedora 39+, openSUSE Leap 15.5+, Raspberry Pi OS (64-bit)
- アーキテクチャ:
x86_64(amd64) またはaarch64(arm64) - カーネル要件: Linux 5.10 以降(
nftables、cgroups v2、eBPF BTF 推奨) - リソース消費: 常駐メモリ 20〜30MB、アイドル時 CPU 負荷 0.1% 未満
2. インストール手順
公式の署名付きパッケージリポジトリを利用することで、依存関係の自動解決とシステム更新コマンドでの安全な自動アップデートが可能になります。
2.1 APT(Ubuntu / Debian / Raspberry Pi OS)
# 1. リポジトリ署名鍵の登録
curl -fsSL https://lafine.net/apt/roamswitch-archive-keyring.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/roamswitch-archive-keyring.gpg
# 2. リポジトリの追加
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/roamswitch-archive-keyring.gpg] https://lafine.net/apt stable main" \
| sudo tee /etc/apt/sources.list.d/roamswitch.list
# 3. インストール
sudo apt update && sudo apt install roamswitch-server
2.2 DNF / RPM(Fedora / RHEL / AlmaLinux / Rocky Linux)
# 1. GPG 鍵のインポート
sudo rpm --import https://lafine.net/rpm/RPM-GPG-KEY-roamswitch
# 2. リポジトリ設定ファイルの追加
sudo curl -fsSL -o /etc/yum.repos.d/roamswitch.repo https://lafine.net/rpm/fedora/roamswitch.repo
# 3. インストール
sudo dnf install roamswitch-server
2.3 openSUSE(zypper)
sudo rpm --import https://lafine.net/rpm/RPM-GPG-KEY-roamswitch
sudo zypper addrepo https://lafine.net/rpm/opensuse/roamswitch.repo
sudo zypper refresh && sudo zypper install roamswitch-server
roamswitch)とサーバー版(roamswitch-server)は同一ホストへの重複導入を防ぐため、パッケージマネージャのメタデータで排他指定(Conflicts)されています。サーバー用途では必ず roamswitch-server を指定してください。3. 初期設定 & サービス確認
3.1 サービス起動状態の確認
インストールが完了すると、roamswitch-server.service が即座に起動し、自動起動(enabled)に設定されます。
sudo systemctl status roamswitch-server.service
3.2 対話型セットアップウィザード
以下のコマンドを実行すると、初回セットアップウィザードが起動し、公開ポートや通知設定を対話形式で構成できます。
sudo roamswitch setup --server
- 公開ポートの指定: Web サーバーなら
22, 80, 443などをカンマ区切りで入力します。 - 保守元 IP の指定: 管理者自身の固定 IP や VPN 踏み台 IP(例:
203.0.113.50/32)を指定します(空欄で全 IP からの SSH 許可)。 - 緊急通知先の設定: Telegram Bot、LINE Messaging API、または Slack/Discord Webhook URL を登録します。
- FIM ベースライン生成: 現在のシステム重要ファイルの SHA-256 スナップショットを生成します。
3.3 25項目 サーバーセキュリティ診断の実行
roamswitch status --server
現在のファイアウォール状態、Frag Gap (CVE-2026-53362) 対策、Yama LSM メモリ保護、重要ファイルパーミッション、Docker 露出など 25 項目を一括監査し、0〜100 のセキュリティスコアと評価等級(S〜C)を表示します。
4. ファイアウォール & ポート設定
設定ファイル /etc/roamswitch/server.conf は、機密情報保護のためパーミッション 0600(root のみ読み書き可能)が強制されます。
[network]
# インバウンドで開放する TCP/UDP ポート一覧
allowed_ports = 22, 80, 443
# 保守用 SSH 接続元 IP(CIDR 表記)
# 指定がある場合、これ以外の送信元からの SSH (Port 22) はすべて DROP されます
admin_source_ips = 203.0.113.10/32, 198.51.100.0/24
# Docker ポートバイパス抑止 (DOCKER-USER チェーンへのフィルタ挿入)
protect_docker_ports = true
# 緊急隔離発動時でも SSH 管理セッションを維持するか
preserve_ssh_on_isolation = true
設定変更後は、以下のコマンドでデーモンへ即時反映します:
sudo systemctl reload roamswitch-server
5. SSH 締め出し防止フェイルセーフ
リモートサーバーの運用で最も重大な事故は「ファイアウォール誤設定による SSH ロックアウト」です。RoamSwitch Server Edition は多重の防御策を備えています:
- ESTABLISHED / RELATED の絶対維持: ルール適用中も既存の接続セッションは一切切断されません。
- Air-Gap 隔離時の SSH 温存: 異常を検知して全通信を緊急遮断する場合でも、
preserve_ssh_on_isolation = trueにより管理元 IP からの SSH セッションは維持され、現地対応なしで原因調査・復旧が可能です。 - 自動ロールバック機能: 不正な設定構文や nftables のロード失敗時は、直前の稼働ルールへミリ秒で自動フォールバックします。
6. コンテナ保護 (Docker / Podman)
Docker は標準でコンテナのポート公開時(-p 8080:8080 等)に独自の iptables ルールを作成し、ホストの標準ファイアウォールをバイパス(貫通)して全世界へ直接ポートを露出させる既知の問題があります。
RoamSwitch は DOCKER-USER チェーンの先頭に検査ルールを挿入し、コンテナ宛てのトラフィックも allowed_ports および admin_source_ips のポリシーに準拠させます。意図しない開発用データベースコンテナ等の外部露出を確実に防ぎます。
7. クリティカルパス FIM (改ざん監視)
150 以上の重要バイナリ(/bin/login, /usr/bin/sudo, /usr/sbin/sshd 等)や認証設定(/etc/shadow, /etc/pam.d/, /etc/sudoers 等)、systemd ユニットを SHA-256 で監視します。
7.1 手動整合性検証
roamswitch fim verify
7.2 OS パッケージ更新時の自動ベースライン同期
Debian / Ubuntu 環境では、パッケージインストール時に /etc/apt/apt.conf.d/99roamswitch-fim の DPkg::Post-Invoke フックが自動構成されます。
これにより、管理者が sudo apt upgrade を実行してバイナリが正規に更新された際は、RoamSwitch が自動で検知してハッシュベースラインを静かに再同期します(誤報アラートの発生を防止)。手動で更新を反映する場合は以下を実行します:
sudo roamswitch fim update
8. eBPF ランタイムガード & Falco 連携
カーネル空間で動作する eBPF プローブ(Falco / Tetragon)と連携し、カーネル特権昇格脆弱性(Frag Gap: CVE-2026-53362)やリバースシェル、コンテナ脱出を検知します。
8.1 ログ肥大化・I/O 負荷の徹底排除
従来のセキュリティツールで問題となる「syslog の爆発的肥大化」「ディスク容量圧迫」を防ぐため、RoamSwitch は Falco と UNIX ドメインソケット /run/roamswitch/events.sock で直結します。
- パッケージ同梱の
/etc/falco/config.d/99-roamswitch-optimized.yamlにより、ディスク書き込みなしでデーモンへ直接アラートをストリーミング。 - 日次ローテーションと圧縮保持(
/etc/logrotate.d/roamswitch-falco)により、万が一のファイル出力時もディスクを保護。
8.2 自律リアクション(検知即プロセス凍結)
悪性コードの実行や不審通信を検知した瞬間、デーモンは該当プロセスの PID へ即座に SIGSTOP を発行して実行を凍結し、nftables ルールで通信を遮断(Air-Gap)します。
9. 緊急アラート通知 (Telegram / LINE / Webhook)
重大なインシデント(ポート不正露出、FIM 改ざん、eBPF 脅威検知、緊急隔離発動)が発生した際、外部の通知プラットフォームへ即座に状況を配信します。
[notifications]
language = ja
# Telegram: Bot Token と Chat ID
telegram_bot_token = "123456789:ABCdefGHIjklMNOpqrSTUvwxYZ"
telegram_chat_id = "-1001234567890"
# LINE: Messaging API チャネルアクセストークン と ユーザーID
line_channel_access_token = "YOUR_LINE_ACCESS_TOKEN"
line_user_id = "U1234567890abcdef1234567890abcdef"
# 汎用 Webhook (Slack, Discord, Teams, 自社監視基盤)
webhook_url = "https://hooks.slack.com/services/T00/B00/XXXXX"
10. AI エージェント / MCP 連携運用
RoamSwitch Server Edition は、Claude、Gemini、Cursor 等の AI エージェントからサーバーのセキュリティ診断を実行できる roamswitch-mcp(Model Context Protocol サーバー)を標準内蔵しています。
設定例(Claude Desktop / AI クライアント)
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp",
"args": []
}
}
}
11. CLI コマンド早見表
| コマンド | 必要権限 | 機能概要 |
|---|---|---|
roamswitch status --server |
一般 | 25項目のサーバーセキュリティ診断スコアとステータスを表示 |
roamswitch ports |
一般 | 現在外部露出しているポートおよびバインドプロセスの一覧 |
roamswitch fim verify |
一般 | クリティカルパス重要ファイルの SHA-256 整合性検査 |
sudo roamswitch setup --server |
root | 対話型の初期セットアップウィザードを実行 |
sudo roamswitch fim update |
root | 現在のファイル状態を元に FIM ベースライン DB を再生成 |
sudo roamswitch emergency-allow |
root | トラブルシューティング用に一時的に通信制限を全解除(15分間) |
sudo roamswitch isolate |
root | 手動でホストを Air-Gap 緊急隔離(SSH セッションは維持) |
sudo roamswitch un-isolate |
root | 緊急隔離を解除し、通常の Default Drop 防護ルールへ復帰 |
12. トラブルシューティング & FAQ
Q1. SSH 接続が突然切断される可能性はありますか?
ありません。RoamSwitch は既知の ESTABLISHED/RELATED 接続ステートおよび allowed_ports(デフォルト 22)を無条件に許可します。また、重大攻撃による Air-Gap 緊急隔離発動時でも preserve_ssh_on_isolation = true により管理セッションは温存されます。
Q2. 誤設定で自分自身がアクセス不能になった場合は?
クラウド事業者の Web 管理コンソール(VNC / シリアルコンソール)からログインし、sudo roamswitch emergency-allow を実行して一時解除するか、sudo systemctl stop roamswitch-server を実行してサービスを停止してください。
Q3. Nginx や Apache、Node.js などの Web サーバーを後から追加した場合は?
/etc/roamswitch/server.conf の allowed_ports に該当ポート(例: 80, 443, 3000)を追記し、sudo systemctl reload roamswitch-server を実行してください。