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 対話型セットアップウィザード
以下のコマンドで対話型セットアップウィザードを起動し、ポート・保守元 IP・通知先・封じ込め動作を対話形式で構成します(Enter で既定値を採用)。
sudo roamswitch server setup
- ポートの指定: SSH メンテナンスポート(既定
22)と公開サービスポート(既定80,443)をそれぞれカンマ区切りで入力します。 - 保守元 IP の指定: SSH 踏み台や監視元の IP / CIDR(例:
203.0.113.50/32)を指定します(空欄で全 IP からの SSH 許可)。 - 緊急通知先の設定: Telegram Bot、LINE Messaging API、汎用 Webhook(Slack / Discord / Teams)をそれぞれ有効化します。
- eBPF 重大イベント時の動作:
isolate(ホスト隔離)/freeze(当該プロセス凍結)/alert_only(通知のみ)を選択。保存後、テスト通知の送信とサービス再起動を確認します。
-100 で始まる負の数値です(例 -1001234567890)。curl -s "https://api.telegram.org/bot<token>/getUpdates" のレスポンス中の "chat":{"id":...} で正しい値を確認できます。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 のみ読み書き可能)が強制されます。
# --- ファイアウォール ---
ssh_ports=22 # SSH 管理用ポート(緊急隔離時も維持)
allowed_ports=80,443 # 公開サービス用ポート
whitelist_ips=203.0.113.10/32 # 保守元 IP / CIDR(空 = 全許可、旧名 admin_source_ips 可)
protect_docker_ports=true # DOCKER-USER 保護(コンテナの FW 迂回を阻止)
preserve_ssh_on_isolation=true # 緊急隔離時も SSH 管理経路を温存(false で完全遮断)
# --- eBPF ランタイムガード ---
action_on_critical=isolate # isolate | freeze(SIGSTOP+ネット遮断) | alert_only
ebpf_socket_path=/run/roamswitch/events.sock
# --- 通知 ---
telegram_enabled=false
telegram_bot_token=
telegram_chat_id=
line_enabled=false
webhook_enabled=false
webhook_url=
# --- システム ---
language=ja
fim_check_interval_secs=300 # 旧名 scan_interval 可
設定を直接編集した場合は、サービスを再起動して反映します(roamswitch-server は reload 非対応):
sudo roamswitch server restart
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 ルールを作成し、ホストの標準ファイアウォールをバイパス(貫通)して全世界へ直接ポートを露出させる既知の問題があります。
protect_docker_ports=true(既定)のとき、RoamSwitch は DOCKER-USER チェーンの先頭に検査ルールを挿入し、コンテナ宛てのトラフィックも allowed_ports および whitelist_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 server setup |
root | 対話型の初期セットアップウィザードを実行 |
sudo roamswitch fim update |
root | 現在のファイル状態を元に FIM ベースライン DB を再生成 |
sudo roamswitch server config set <key> <値> |
root | 設定キーを 1 つ変更して保存(一覧は §4) |
roamswitch airgap enable / disable |
root | 手動での Air-Gap 緊急遮断 / 解除 |
sudo roamswitch emergency-restore |
root | eBPF・ファイアウォールの緊急隔離を全解除し、初期ベースラインへ復帰 |
12. トラブルシューティング & FAQ
Q1. SSH 接続が突然切断される可能性はありますか?
ありません。RoamSwitch は既知の ESTABLISHED/RELATED 接続ステートおよび ssh_ports(既定 22)を無条件に許可します。また、重大攻撃による Air-Gap 緊急隔離発動時でも preserve_ssh_on_isolation=true(既定)により管理セッションは温存されます。
Q2. 誤設定で自分自身がアクセス不能になった場合は?
クラウド事業者の Web 管理コンソール(VNC / シリアルコンソール)からログインし、sudo roamswitch emergency-restore で緊急隔離を解除するか、sudo systemctl stop roamswitch-server を実行してサービスを停止してください。
Q3. Nginx や Apache、Node.js などの Web サーバーを後から追加した場合は?
sudo roamswitch server config set allowed_ports 80,443,3000(または /etc/roamswitch/server.conf を直接編集)し、sudo roamswitch server restart を実行してください。