MukenVault
クイックスタート (Founding 50 パートナー向け)
承認メールでお受け取りいただいたライセンスキーを使って、5 分で nginx のメモリ保護を有効化するガイドです。
0. はじめに
Founding 50 Technical Preview Program はパートナーに研究開発段階のソフトウェアを 評価環境で試していただくプログラムです。本ソフトウェアは 評価環境でのみご利用ください。本番環境・商用環境での利用は 想定していません (利用規約 §5.4)。
1. 動作要件 (preflight で自動チェックされます)
| 項目 | 要件 |
|---|---|
| OS | Ubuntu 22.04 LTS / 24.04 LTS (x86_64) |
| Kernel | 5.7 以上 (userfaultfd サポート) |
| CPU | AES-NI 対応 |
| nginx | インストール済み (本ソフトウェアは nginx に LD_PRELOAD される) |
| OpenSSL | 3.x 推奨 |
| 権限 | root (sudo) |
⚠ 自前 KVM / libvirt / Proxmox で運用される場合: hypervisor 側で per-VM の SMBIOS UUID + serial を設定する必要があります (cloud VPS では自動)。 詳細は 自前 KVM partner ガイド を参照してください。
2. 環境チェック
インストール前に、要件が満たされているか確認します。
curl -fsSL https://install.mukenvault.com/preflight.sh | sudo bash
スクリプトは自身を実行するだけで、何もインストールも変更もしません。 OS、Kernel、CPU、nginx、OpenSSL、curl、systemd、mukenvault ホスト到達性を確認します。
2.5. 必要パッケージの一括インストール (preflight が FAIL したとき)
クリーンな Ubuntu VPS で nginx・gdb 等が入っていない場合の救援策です。 nginx 等が既に入っている場合はスキップして §3 へ。
2.5.1 ワンライナー (推奨)
curl -fsSL https://install.mukenvault.com/bootstrap.sh | sudo bash
apt update + apt install -y nginx curl openssl gdb libbpf1 ca-certificates +
systemctl enable --now nginx を一括で実行し、nginx の動作確認まで行います。
Ubuntu 22.04 / 24.04 以外で実行すると停止します (パッケージ名が違うため)。
2.5.2 手動 apt
中身を確認してから実行したい場合:
sudo apt update
sudo apt install -y nginx curl openssl gdb libbpf1 ca-certificates
sudo systemctl enable --now nginx
| パッケージ | 用途 |
|---|---|
nginx | 保護対象本体 (Founding 50 は nginx のみ対応) |
curl | heartbeat + setup.sh + preflight で使用 |
openssl | libkeyless が OpenSSL 3.x をフック、CLI で証明書操作にも |
gdb | gcore 経由で §4 の verify スクリプトが使用 |
libbpf1 | BPF ランタイム (プロセス検出・メモリアクセス検知に使用) |
ca-certificates | TLS 信頼ストア (fresh VPS で古い場合がある) |
2.5.3 TLS 証明書 (別途必要、検証フェーズに影響)
verify スクリプトが「実際に TLS 鍵が保護されているか」を確認するには、 nginx で SSL listener が稼働している必要があります。Let's Encrypt なら:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com
ドメイン名を持っていない場合は self-signed でも構いません:
sudo openssl req -x509 -nodes -days 30 -newkey rsa:2048 \
-keyout /etc/ssl/private/mukenvault-test.key \
-out /etc/ssl/certs/mukenvault-test.crt \
-subj "/CN=mukenvault-test.local"
§4 の検証は SSL listener が無くても install 自体は完了します
(mukenvault status で FULL 表示可能)。本物の TLS 鍵が
メモリ上にないので gcore 検索が「保護証明」を構造的にできない点だけご注意ください。
3. インストール
3.1 推奨: ワンライナー
受領メールに記載のライセンスキーを YOUR-KEY-HERE に置き換えてください。
curl -fsSL https://install.mukenvault.com/setup.sh | sudo bash -s -- --license YOUR-KEY-HERE
setup.sh が tarball をダウンロード → sha256 検証 → 展開 → インストーラー実行を行います。 全工程ログは標準出力に流れます。
3.2 慎重派: ダウンロードしてから検証
tarball を一度ファイルに落として、目視確認してから実行する場合:
wget https://install.mukenvault.com/mukenvault-v5.0.0-entry.tar.gzwget https://install.mukenvault.com/mukenvault-v5.0.0-entry.tar.gz.sha256sha256sum -c mukenvault-v5.0.0-entry.tar.gz.sha256(OK が表示されること)tar xzf mukenvault-v5.0.0-entry.tar.gz && cd mukenvault-v5.0.0-entrysudo bash installer/nginx-entry-install.sh --license YOUR-KEY-HERE
インストーラーが行うこと:
- Phase A: 環境再チェック (OS、OpenSSL、AES-NI、UFFD、curl)
- Phase B:
/usr/lib/mukenvault/libkeyless.so、/usr/local/bin/mukenvault、systemd ユニットの配置 - Phase C: ライセンスキー検証 (Keygen API
license.mukenvault.com) - Phase D: nginx 用 systemd ドロップイン (
/etc/systemd/system/nginx.service.d/mukenvault.conf) - Phase E: nginx 再起動
- Phase F: heartbeat タイマー有効化 +
mukenvault status動作確認
各 phase に失敗すると自動 rollback されます。インストールが完了すると
mukenvault status が Status: FULL を返します。
4. 動作確認
sudo mukenvault status
期待される出力:
| 項目 | 期待値 |
|---|---|
| Status | FULL (exit code 0) |
| Target | nginx (PID xxx, workers: N) |
| Protection | TLS key memory protection |
| License | valid (expires YYYY-MM-DD…) |
| Heartbeat | 初回 boot 後 5 分以内に最初の heartbeat が走ります |
保護効果の検証 (推奨)
保護が実際に効いていることを確認するには、インストール後に以下を実行します:
sudo mukenvault verify
nginx worker プロセスをコアダンプし、メモリ上に TLS 秘密鍵パターンが
0 件であることを確認します (verdict=protected)。
verify を実行するには nginx で SSL listener が稼働している必要があります (§2.5.3 参照)。
SSL listener が無い場合、verify は verdict=skip を返します (保護自体は有効です)。
5. 運用
5.1 heartbeat
ライセンスは mukenvault-heartbeat.timer によって 6 時間ごとに
自動更新されます。最初の heartbeat は boot 後 5 分前後に実行されます。
手動実行は sudo mukenvault heartbeat。
5.2 ライセンス期限
Founding 50 Preview ライセンスは発行から 91 日間有効です。
期限が近づくと当社からメールでご連絡いたします。何もご返信がない場合、
期限切れ後の heartbeat で License: UNLICENSED に遷移し、
nginx の動作は継続しますが新規アクティベーションは停止します。
5.3 失敗通知 (オプション)
Slack incoming-webhook を /etc/mukenvault/nginx-entry.env に
設定すると、heartbeat 失敗時に当該チャネルへ通知が飛びます。
KEYLESS_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXX/YYY/ZZZ
設定後、sudo systemctl daemon-reload。
5.4 DNA 認証モード
Founding 50 では default で observe モードです。 各 heartbeat で MukenVault サーバーが端末のハードウェア指紋を検証しますが、 失敗してもログのみで運用継続します。プログラム成熟後に enforce モードへの 切替をご案内する予定です (詳細は受領メールに同封)。
6. アンインストール
CLI コマンドで完全に除去できます:
sudo mukenvault uninstall
libkeyless.so / mukenvault CLI / systemd ユニット / ライセンスキャッシュが除去され、nginx は LD_PRELOAD なしの素の状態に戻ります。
7. トラブルシュート
| 症状 | 確認 / 対処 |
|---|---|
preflight FAIL: Kernel … (need >= 5.7) | OS をアップグレードするか、新しい kernel package を導入してください。 |
preflight FAIL: AES-NI missing | 本ソフトウェアは AES-NI 必須です。別 VPS / 別ホストでお試しください。 |
libbpf runtime missing | sudo apt install -y libbpf1 を実行してからインストールを再実行してください。 |
activate: HTTP 422 / 404 | ライセンスキーの誤入力。受領メール記載のキーを再確認してください。 |
MACHINE_LIMIT_EXCEEDED | 同一キーの登録台数上限に到達。旧マシンで sudo mukenvault deactivate を実行してから再試行してください。 |
mukenvault status が UNLICENSED | 有効期限切れ、または license suspend の可能性。当社にご連絡ください。 |
| nginx が起動しない | journalctl -u nginx --since "5 minutes ago" をご共有ください。sudo mukenvault uninstall で素の状態に戻せます。 |
8. お問い合わせ
- 導入・運用に関する質問: support@mukenvault.com
- 脆弱性報告 (公開前): security@mukenvault.com
- その他: info@superasystem.net