1. そもそも Qubes OS とは
ここへ来た人にこの説明が必要だとは思わないですが
Qubes OS とはXenハイパーバイザの上で多数の軽量VM(= qube)を並べ、作業・データ・デバイスを箱ごとに隔離する“security by compartmentalization”を採るOSです。
ネットワークやUSBコントローラなどシステム部品もVM化してサンドボックス化するのが特徴です。
ま、わかりやすく言えば、PC上で動くサービスをそれぞれ個別の仮想マシンがやってるわけです。
2. 「インスタンス」とは
Qubes公式用語では主に以下を使います。一般に「インスタンス」と言われがちですが、Qubesでは qube(= 1つのVM)と呼ぶのが正確です。(そりゃあQubes OSっていうくらいなので)
2.1 dom0
- 管理ドメイン。GUI・ポリシー・VM管理のみ担当。原則ネット接続しない。←これ超重要です。管理者をこの危ないインターネットに晒してはいけません。
2.2 App qube(旧AppVM)
- 日常アプリを動かす箱。ユーザー作業の単位。名前の通りAppのqubeです。
2.3 TemplateVM
- App qubeの読み取り専用rootを供給する親。ソフトはTemplateに入れて、子に反映。
App qubeを作るときにはここをもとに作るってわけです。
例えば、ふだんzshを使っている人はここにzshを入れとく、といった具合です。
2.4 Disposable(使い捨てVM)
- 閉じたら痕跡ごと消える一次隔離箱。怪しいURL/添付はまずここで開く。
サンドボックス的なことですね。やばかったらqubeごとポイっと捨てれます。
※ほかのqubeもマネージャーからぽちっと消せますが、あくまで緊急時、構成変更時くらいです。Disposableは使い捨て前提のqubeです。
2.5 Service qube
-
sys-net(NIC担当) /sys-firewall(中継・フィルタ) /sys-usb(USB隔離)などの基盤qube。
前述の通り、qubesはサービスもすべてがqubeなんですね。投稿者は、sys-net、sys-firewallの設定でだいぶ手こずり、何日も格闘してました。
また、sys-usbも曲者です。慣れるまでに時間を要するかもしれません。
2.6 Whonix連携
-
sys-whonix経由でTorへ。匿名化が欲しい作業用の経路。これといって特別なことはないです。匿名といってもFingerPrintなんかでまぁまぁばれてます。むしろ、投稿者は変に偽装せずに、「よくあるFingerPrint」のようにふるまっています。
2.7 Split機構(Split GPG / Split SSH)
- 秘密鍵は金庫qubeに置いたまま、別qubeから暗号操作だけを委譲。これもなかなか独特ではあります。qubeを分ければ、物理的に2台のPCを置いているようなものですからね。こんなこともできます。
2.8 qrexec / RPCポリシー
- qube間の通信・操作を最小権限で制御する仕組み。誰が誰に何を許すかをポリシーで定義してます。
3. Qubes で「なにができる?」
-
危険度別の箱分け(ブラウズ/開発/家計/会社/匿名化/USB 等)
これが最大の長所です。ネットワークの学習などで『コリジョンドメインを分割~』なんてやった方もいるかもしれません。それに近い考え方で、脅威に触れる主単位を可能な限り分割することで、事故発生後の被害を最小限に食い止めることができます。 -
明示操作の受け渡し(ファイル・クリップボード)。うっかり横漏れを抑止
-
Windowsワークロードも統合(Qubes Windows Tools)
4. ではどこまで“見える”?(可視性の境界)
- sys-net:パケットは見えるがアプリ中身は見えない。
- App qube同士:デフォルト相互不可視。許可したqrexec/RPCだけ通る。
- dom0:他を管理できるがネット非接続。ここでブラウズ/受け渡しはしない。
-
USB:
sys-usbが受け口。悪意USBはここで止める(それでもUSBは危険物という前提)。
5. ハックされるケース想定 ×3 と、回避運用
ここでは、じゃあどんなことが起きたら、どう有効に働くの?なんてことを軽く説明します。
あまり詳しくない方には「?」かもしれませんし、詳しい方には釈迦説かもしれませんが。
5.1 ケースA:ブラウザ経由のゼロデイ/ドライブバイ
想定リスク:閲覧だけでRCE→セッション・Cookie・ファイル奪取。
なんか変なの見てたらいろいろ奪われた!!
回避運用
- ふだんのリンク/添付は必ず Disposable で開く(“Open in Disposable”)。
- ログイン必要サイト用に**専用App qube(banking/gov/shopping など)**を分離。
- Split GPG/SSHで鍵を別qubeに隔離。奪われる素材を置かない。
- 匿名調査は**
sys-whonix**配下で。
5.2 ケースB:USB/Bluetooth(BadUSB 等)
想定リスク:入力デバイス偽装・ストレージ経由の注入。
このUSB誰のだろう、(挿入).....💀 (こんなことやらかしたらおしまいですよ)
回避運用
-
sys-usb必須。デバイスは必要なqubeへ明示的にアタッチ。 - 可能ならUSBコントローラ別に
sys-usb-trusted/sys-usb-unkを分割。 - dom0へ直結禁止(ポリシーと手順で徹底)。
5.3 ケースC:オフィス文書/PDFのエクスプロイト+横移動
想定リスク:添付開封→持続化→他qubeへコピーで拡大。
なんかPDF必読って来てるな...だれかセキュリティ事故でもやらかしたか?←
回避運用
- メール閲覧専用qube → 受信→Disposableで開く→必要部だけコピー。
- 編集用はネット無し、受信箱はネット有りで役割×ネット接続を二段構え。
-
qrexecポリシーで不用意な経路を閉じ、dom0へは何も持ち込まない。
6. ユースケース別「分け方」プリセット
6.1 最小構成(まずはここから)
-
sys-net/sys-firewall/sys-usb(あれば)
ただし、usb設定については本当に本当に面倒になることがあります。
例えば、 「usbはデフォルトで全部拒否!ホワイトリストにします!ポチ!」 の瞬間にキーボード、マウス全拒否で操作不能...なんて -
vault(ネット無し:パスワードDB・PGP鍵・SSH鍵)※Split GPG/SSH推奨 -
work(会社系) /personal(私用) -
browse(Template軽量化)+Disposable既定 -
sys-whonix+anon-web(必要時のみ)
当然、whonixでアップデートやらなんやらしようものなら、そこそこ時間がかかります。
6.2 開発者向け(鍵とビルドを切る)
-
dev-net(ネット有りIDE) -
dev-build(ネット無しでビルド) -
repo-fetch(ソース取得専用) - 鍵はvaultで管理し、
dev-netからはSplit SSH/GPGのみ実行
6.3 経理/金融を強固に
-
banking(金融サイト専用。クリップボード共有は習慣で抑制) - 通常ブラウズはすべて Disposableへ
6.4 リサーチ / OSINT
-
sys-whonix配下にosint-web/osint-dl/osint-sns等を役割別に箱分け
6.5 USB多用・現場運用
-
sys-usb-trusted/sys-usb-unkの二系統。既定は unk 側に接続
TemplateVM運用のコツ
役割別に Template を分ける(「日常用」「開発用」「軽量閲覧用」など)。親に入れたソフトが子に反映されるため、最小構成を保ちやすいですね。せっかくいろいろなディストリビューション使えますし、テンプレから分けましょう。
7. 実装メモ(最短コマンド例)
※GUIでも可。名称やテンプレは環境に合わせて変更してくださいね。
# 金庫(ネット無し)
qvm-create --class AppVM --label red --prop netvm=none --template fedora-xx-minimal vault
# ブラウザ専用(使い捨て既定)
qvm-create --class AppVM --label yellow --template fedora-xx browse
qvm-prefs browse template_for_dispvms true
# 開発:鍵はvault、作業はdev-net
qvm-create --class AppVM --label green --template fedora-xx dev-net
# Split SSH/GPGの手順は公式ドキュメントを参照
8. 境界運用のゴールデンルール
- dom0でネット・閲覧・添付開封はしない。 これは当然ですね。いうまでもなく。
-
日常はDisposable起点、残す価値のある成果だけを明示コピー。
コピーはqubeをまたぐとやや煩雑ですが、可用性とセキュアさはおおむね反比例します。 - 鍵は常にSplit(アプリと鍵の所在を分離)。
- USBはsys-usb経由がデフォ。 usb経由の感染は本当に本当に多いです。
- qrexec/RPCポリシーを理解して最小権限に。
9. Qubes OSでできないこと
最後にもってきてしまいましたが、ここが大事です。Qubes OSは、作業種類でTemplateを分け、作業単位ごとにqubeを分けていますが、そのqube自体のセキュリティ強度が上がるわけではないです。
干し草が積みあがっているのを、一つかみごとに分けて間に防火壁を建てたようなものです。干し草自体の燃えやすさは変わっていません。
あくまで被害を最小限に抑える、大事なものと外の世界をより隔てるだけです。当然、dom0や金庫qubeをインターネットに晒してしまえば、通常のPCと何ら変わりなくなってしまいます。大事なのは、安全地帯と危険地帯を判断し、適切なqubeに分割して作業を行うことです。
10. 参考リンク
- Overview / Architecture: https://www.qubes-os.org/
- Templates: https://www.qubes-os.org/doc/templates/
- Disposables: https://www.qubes-os.org/doc/disposable/
- qrexec / RPC policy: https://www.qubes-os.org/doc/qrexec/
- Split GPG: https://www.qubes-os.org/doc/split-gpg/
- Split SSH: https://www.qubes-os.org/doc/split-ssh/
- USB qubes: https://www.qubes-os.org/doc/usb-qubes/
- Copy/Move files: https://www.qubes-os.org/doc/how-to-copy-and-move-files/
- Clipboard: https://www.qubes-os.org/doc/how-to-copy-and-paste-text/
- Whonix on Qubes: https://www.qubes-os.org/doc/whonix/
- Windows Tools: https://www.qubes-os.org/doc/windows-tools/