Qubes OS
Z
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Qubes OS のネットワーク分離設計 — 実践的なセキュリティアーキテクチャ
Qubes OS で仕事・個人・匿名通信・バンキングを完全分離するネットワーク設計の実例、VPN+Torの多段構成、sys-net複数化による物理ネットワーク分離を解説します。
一言結論
Qubes OSのネットワーク設計の真価はVMごとに異なる経路(直接・VPN・Tor)を割り当てられる点にあり、sys-vpnをProxyVMとして挟む構成にすればVPN漏洩時の被害範囲を特定のVMだけに限定できる。
なぜネットワーク分離が重要か
ひとつのネットワークスタックを全アプリで共有すると:
- 全アプリが同じIPアドレスから通信される(追跡されやすい)
- マルウェアが他のアプリの通信を盗聴できる可能性がある
- VPN が漏洩するとすべての通信が露出する
Qubes OS では VM ごとに異なるネットワーク経路を設定できます。
基本的なネットワーク設計
インターネット
│
sys-net ←── 物理ネットワークカードを管理
│
sys-firewall ←── ファイアウォール
│
├── work(業務通信)
├── personal(個人通信)
└── untrusted(信頼しない通信)
VPN を組み込んだ設計
インターネット
│
sys-net
│
sys-vpn ←── VPN クライアントが動く ProxyVM
│
sys-firewall-vpn ←── VPN 後のファイアウォール
│
├── work-vpn(VPN 経由の業務通信)
└── personal-vpn(VPN 経由の個人通信)
sys-vpn の作成
# dom0 ターミナルで
qvm-create --template fedora-40 --label green sys-vpn
qvm-prefs sys-vpn provides_network true # ネットワーク提供VMとして設定
qvm-prefs sys-vpn netvm sys-net
# VPN を使う VM の設定
qvm-prefs work netvm sys-vpn
# sys-vpn のターミナルで VPN を設定
sudo dnf install -y openvpn
# /rw/config/rc.local に VPN 起動を追加
echo "sudo openvpn /etc/openvpn/my-vpn.conf &" >> /rw/config/rc.local
Tor + VPN の多段構成
構成1: VPN の中に Tor(Tor over VPN)
インターネット → VPN → Tor
AppVM → sys-whonix → sys-vpn → sys-net → インターネット
利点: VPN プロバイダが Tor を使っていることを知らない
欠点: VPN プロバイダはあなたがTorを使っていることを見る
構成2: Tor の中に VPN(VPN over Tor)
インターネット → Tor → VPN
AppVM → sys-vpn-tor → sys-whonix → sys-net → インターネット
利点: 接続先がTorの出口ノードではなくVPNを見る
欠点: 設定が複雑
# VPN over Tor 設定(sys-vpn-tor)
qvm-create --template fedora-40 --label purple sys-vpn-tor
qvm-prefs sys-vpn-tor provides_network true
qvm-prefs sys-vpn-tor netvm sys-whonix # Whonix 経由でVPN接続
# sys-vpn-tor を使う VM
qvm-prefs anonymous-work netvm sys-vpn-tor
物理ネットワークカードの分離
複数の NIC がある場合、完全に分離できます:
# dom0 ターミナルで NIC を確認
lspci | grep -i network
# 2つ目のNICを管理する sys-net2 を作成
qvm-create --template fedora-40 --label gray sys-net2
qvm-prefs sys-net2 provides_network true
# 2つ目のNICを sys-net2 にアタッチ
qvm-pci attach sys-net2 dom0:02_00.0 --persistent
これにより、業務用ネットワーク(有線)と個人用ネットワーク(Wi-Fi)を完全に分離できます。
バンキング専用の設計
# banking VM を作成(最高のセキュリティ設定)
qvm-create --template fedora-40 --label black banking
# ネットワークを最も信頼できる経路に
qvm-prefs banking netvm sys-firewall # Tor を使わない
# ファイアウォールで銀行のドメインだけ許可
qvm-firewall banking add allow dsthost=mybank.co.jp proto=tcp dstports=443
qvm-firewall banking add deny # それ以外は拒否
ファイアウォールのルール設計
メール専用VMのルール
qvm-firewall email list # 現在のルール確認
# IMAP(993) と SMTP(587/465) だけ許可
qvm-firewall email add allow proto=tcp dstports=993
qvm-firewall email add allow proto=tcp dstports=587
qvm-firewall email add allow proto=tcp dstports=465
qvm-firewall email add deny
開発VM(GitHub だけ許可)
qvm-firewall dev add allow dsthost=github.com proto=tcp dstports=443
qvm-firewall dev add allow dsthost=github.com proto=tcp dstports=22 # SSH
qvm-firewall dev add allow dsthost=api.github.com proto=tcp dstports=443
qvm-firewall dev add deny
DNS over HTTPS(DoH)の設定
# AppVM のターミナルで
sudo dnf install -y dnscrypt-proxy
# /etc/dnscrypt-proxy/dnscrypt-proxy.toml を設定
# listen_addresses = ['127.0.0.1:53']
# server_names = ['cloudflare', 'google']
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
ネットワーク設計のチェックリスト
| 用途 | 推奨ネットワーク経路 |
|---|---|
| 銀行・金融 | sys-net → sys-firewall(直接、ファイアウォールで制限) |
| 業務 | sys-net → sys-vpn → sys-firewall |
| 個人ブラウジング | sys-net → sys-firewall |
| 匿名ブラウジング | sys-whonix(Tor) |
| 開発 | sys-net → sys-firewall(GitHubなど制限) |
| マルウェア解析 | sys-net → sys-firewall(または完全オフライン) |
| 最重要データ | ネットワークなし(vault) |
まとめ
Qubes OS のネットワーク分離は「各VMがどのネットワーク経路を使うか」を個別に設定できる唯一の実用的なシステムです。
最初は複雑に見えますが、一度設定してしまえば自動的に隔離が機能します。セキュリティの要件に合わせて徐々に分離を増やしていくアプローチをお勧めします。