Skip to content

Latest commit

 

History

History
272 lines (198 loc) · 19.5 KB

File metadata and controls

272 lines (198 loc) · 19.5 KB

Multiverse Secure Lab(MSL) Setup for Proxmox by Zelogx™

GitHub Discussions Ofiicial Site Release Notes

Zelogx™ MSL Setupは、Proxmox SDN、PVE-Firewall、Pritunlを活用し、L2レベルで完全隔離されたセキュアな開発環境をProxmox上に構築するためのオープンソース・リファレンスです。

公式サイト: https://www.zelogx.com/ja/

⚠️ このリポジトリは、Zelogx™ MSL Setup の「初期バージョン(手動構築手順)」を保存するためのアーカイブです。
この設計が役立つと思ったら、ぜひ ⭐ (Star) や “Watch” をお願いします。

2026年1月25日、完全自動化された最新版「MSL Setup Personal (Free)」がリリースされました。
https://github.com/zelogx/msl-setup
気に入っていただけたら、ぜひ ⭐ を落としていってください。

Hola! Enjoying your self-hosted stack? Why not offer a secure slice of it to your team? Refer to REAMME_en.md for English documents.

English version is here (README.md)

パブリッククラウド開発環境からの脱却

プロジェクトごとにL2レベルで完全分離されたゼロトラスト開発環境の構築とVPNによるチームメンバへの公開

1. 今回作ったものの超概要

開発環境をプロジェクトごとに完全隔離。VPN経由でチームに公開。 ローコスト分散開発、オフショア開発環境構築。

1.1. この手順でできるもの(現場目線で)

Proxmox VEサーバ一台で

  • プロジェクトごとにL2レベルで完全分離されたネットワークに開発用VM構築、プロジェクト別VPN付き開発環境が手に入ります。
  • 既設(企業/家庭)LANは汚さないゼロトラスト構成。既存LANにはVPNトンネル、DNS問い合わせ以外のパケットは通りません。
  • 分離されたPJごとの開発環境をVPNで安全にリモートチームメンバへ公開
  • VPNクライアントユーザの所属、ユーザ管理、VPN接続クライアント証明書生成の自動化。GUI管理。配布も簡単。
  • 各PJ毎のVPNサーバ(起動停止)もGUIから可能。VPNプロトコルはOpenVPNまたはWireGuardを使用。
  • VLAN対応機器は不要

うんちく良いから早く構築方法教えてという方はこちら

1.2. この手順でできること(管理者・経営者目線で)

「本プロジェクトはパブリッククラウドを一切使用せず、オンプレミスのみで完結する自律型セキュア環境です。」

  • 開発パートナー/オフショア/フリーランスにも必要な環境だけ見せて接続させる事でセキュリティ向上、他PJの情報漏洩問題を仕組みで回避
  • 中小企業・ソフトハウス・スタートアップが自前のプライベート開発クラウドを持てる
  • パブリッククラウドを開発者に自由に使用させるより安全で、速くて安い。(仕組みでしばりを入れられる)
  • サーバ1台(NUCクラスのMini PC)+OSSだけでパブリッククラウドで数十万/月クラスの仮想環境を入手可能。クラウド費用ほぼゼロ、必要なのは開発用サーバ+電気代千円程度/月(Mini PCの場合)
  • サーバさえあれば、ほぼ無償でセキュア分散開発環境、砂場(サンドボックス)環境、デモ環境、さらにはステージング環境が手に入る。
  • この手の事を製品で行おうとすると以下のような機器の導入費、保守コスト(数百万、数千万~)が発生しこれらコストの削減が可能。多少語弊があるかもしれませんが参考までに。

1.3. 利用ソフトウェアのライセンス

Pritunl

  • Pritunlは無料でご利用いただけます。追加機能をご利用いただくには月額サブスクリプションをオプションでご購入いただけます。エンタープライズライセンスはクラスター内のすべてのサーバーでご利用いただけます。サーバーごとに個別のライセンスは必要ありません。 参考URL:https://pritunl.com/

Proxmox VE

  • PVE のソフトウェア本体はオープンソースで、GNU Affero General Public License v3 (AGPL v3) のもとでライセンスされています。Proxmox「ライセンス料」を課していない(=ソフト自体を使うための費用は発生しない)という立場が公式に示されています。Proxmox Forum
  • ただし、「サブスクリプション(サポート契約)」は有償です。

1.4. 想定するターゲット

  • うちはもう自由にAWSにインスタンス造らせて、高速分散開発環境構築してやらせてますから。という管理者層、経営層のかた。コストやセキュリティは?と聞かれると担当者にヘルプの視線をおくる管理・経営層の中小ソフトハウス。
  • うちは自宅に開発・ラボ環境あるんで、そこでガンガンVM建てて開発してます。他のチームメンバ?それぞれ工夫してやってるんじゃないですか?
  • 最近はWSLでWindows PCにLinux VM建ててやってますよ。PC落としたときのセキュリティ?Bitlockerで安全対策してます。的な。。。それぞれ異なる環境で開発。結合試験は時間かかる(笑)
  • ラージエンプラでも、そうですね。サーバはサーバルームにあり、厳重に入退室管理。基本開発環境には個人情報入ってないです。個人とはNDAも結んでそこで縛り入れてます。勿論、VDIからしかログインできません。でもVMのrootパスワードは全部一緒。おかれてるセグメントも全部一緒だからログインしようと思えば?出来ちゃいますね笑。的な
  • 同様にラージエンプラ。必要なプロジェクトは個別にVPN建ててますね。VMにログインできれば他のVMにも入れちゃう?確認してないですが、そんな事ないと思いますよ。これまでそういう事故は発生してません。セキュリティ教育も年2回実施してますし。

1.5. 必要性

ターゲットのところで記載してますが、さらに踏み込んで現場が気付いていないかもしれない課題の発掘。

1.5.1. パブリッククラウドの課題、ホームラボ環境の課題

開発環境をパブリッククラウドで行っている場合の典型的"あるある問題"

  • まだVMに直接パブリックIPを振って直接SSHしてる
  • パブリックIP持っちゃったために、まだペネトレーションテストもしてないWEBアプリケーションサーバが実は丸見え。
  • 開発環境が他のプロジェクトメンバーに丸見え
  • 影響範囲考えずに爆インスタンス生成
  • データ転送で帯域死(死語?)
  • 承認→見積→承認→構築…開発スピードとは?
  • "検証用"と称して半年放置インスタンス
  • 貧弱CPUインスタンスでビルド中に寝落ち

セキュリティリテラシーの低いアプリ開発者や"インフラわかってるつもりの人"が自由にクラウド触り続けてて大丈夫でしょうか? 彼らは悪気はない。求められる責任を果たすための"仕組み"が無いだけ。 その結果、コスト膨張、攻撃面増大、権限スパゲッティ、"一周回ってオンプレの方が安全だった"現象

また、ホームラボ環境を持っていて、その一部をチームメンバへ公開したいが、 家庭用LANと共存しており、家庭内LANのデータブリーチ、他社開発プロジェクトのVM丸見え問題が発生するため公開しない人。 簡単に晒せない。という悩みをお持ちの方も多いかと思います。

1.6. コスパ

例えば、AWS EC2 c5d.large (2vCPU) を例に比較をしてみよう。 今回の企画で使ったマシン:Intel NUC pro Core i7 1360P 12コア16スレッド、最大5.0GHz

項目 AWS EC2 (c5d.large) NUC上の2vCPU VM
割り当て vCPU 2 vCPU 2 vCPU
物理CPU Xeon Platinum 8124M Core i7-1360P
物理CPU性能 18C/36T / max 3.5GHz 12C/16T / max 5.0GHz
RAM 4GB 任意
コスト $89/月 (~13,000円) 電気代 200円程度/月 (2vCPU相当)
ストレージ EBS (別課金) NVMeローカル (高速/低遅延)
ネットワーク課金 100GB超で課金 無し(ローカル)
性能指標(2vCPU換算) 基準 ベンチ比 ~3.3〜3.5倍

参考 ベアメタルでのベンチマークスコア

Bench Score(8124M) Score@1360P
PassMark single thread 2.040 3.573
PassMark CPU Mark 22.287 20.824
Geekbench 4 single core 3.954 6.517
Geekbench 4 multi core 35.420 35.803

ベンチマーク値参考元

PassMark/Geekbench の シングルスレッド性能(1.65~1.7倍) × 2 vCPU の単純計算に基づく。
実際の本来マルチスレッド係数等、CPUキャッシュ性能等、メモリ帯域等により変動するが、 CPU性能として約3.3〜3.4倍の差が見られる。 なお、I/O性能はローカルNVMe PCIe4 x 4なので、こちらも爆上がり。
※ただしハイパーバイザーのオーバーヘッドは考慮してない。

1.7. リスク検討

パブリッククラウドを自前proxmoxサーバにした場合のリスクを想定してみました。

1.7.1. 想定リスク

  • 物理サーバ故障:このリスクは残ります。が、自分でご使用のメーカー製ノートパソコン、数か月で壊れますか?
  • 停電(ビルなどはビルメンテなどで、ホームラボならルンバがケーブルひっかけた!電子レンジとケトル同時使用でブレーカ落ちた!猫がおしっこかけた!)
  • 空調。サーバの温度管理。
  • BCP
  • WiFiからの侵入
  • 物理セキュリティ。つまりサーバルームへの入退室管理。

1.7.2. リスクヘッジ

  • まず故障に関してはもう一台proxmoxを建てて、そこにProxmox Backup Server(PBS)を構築。いつでも故障から復帰。圧縮、重複排除バックアップなのでディスク使用率も低い。
  • 停電に関して、注意すれば日本では事前の停電計画などにより、手動電源OFFで十分。瞬電や上記のような事故にまで備えたければ、UPSの導入。
  • 空調、Intel NUCは35度まで24時間365日連続稼働が保証されてます。真夏、室温が40度超えるなどする場合は、夏の間だけでもエアコン付けましょう。また、定期的にAir dusterで埃の掃除してください。
  • BCP、業務の継続運転は重要です。が、ここまでくるとクラウドとハイブリッド運用が必要です。S3へバックアップする機能もあるので、その辺は有償でコンサルします。
  • WiFiからの侵入/物理セキュリティ。WPA3への切り替え検討。そもそも入退室が自由な会社は、そんな大事な環境作ってはいけません。

2. 構築手順 (Quickstart)

さて、ここからは具体的な構築手順です。 全部オープンなOSS構成で再現可能な手順を載せます。

2.1. 必要なもの

簡単に言うとProxmox VEが入った物理PC一台。 開発用VMを何台も実行することになるのであれば、メモリとディスク容量には余裕がある方が良いです。

構築に必要なHWとSWは全部これだけ

HW

  • インターネットに接続しているルーター
  • サーバ
    • NUCなどのmini PCでも十分。ただし、メモリ最大64GB程度。
    • パブリッククラウドのvCPUよりシングルコア性能が良いもの選ぶなら、12世代以降のCore i5位でも超余裕。あまり世代が低いと最大メモリ搭載量が減る。
    • LLMなどを載せたい場合は、メモリを贅沢に載せられる、GPUを搭載可能なデスクトップも良いかもしれません。(ここではGPUパススルーの方法などは説明しません。)

SW

  • Proxmox VE
  • Pritunl

必要なパッケージ (セットアップスクリプトで自動インストール):

  • ipcalc - ネットワークアドレス計算ユーティリティ
  • jq - JSON処理ツール
  • qemu-guest-agent - Cloud-init完了検出 (Phase 2)
  • wget または curl - Cloud-initイメージダウンロード (Phase 2)
  • sha256sum - イメージ整合性検証 (Phase 2)

Other

  • サーバ用の固定IPアドレス
  • Priutnl用の固定IPアドレス

2.2. ネットワークの検討

以下のネットワークアドレスの入力が必要となります。適切な設定を行う必要があります。
Proxmox VEが接続しているサブネットワーク以外にセグメントがないという場合には、a,b以外は重複がない限り以下の例のままでもよいかと思います。a,bは現在利用中のネットワークを指定すれば問題ありません。

Zelogx MSL Setup Network Overview

(a) MainLan(vmbr0既設): (例:192.168.77.0/24 GW: .254)

  • 会社・自宅ラボのメインのLANのネットワークアドレス。
  • スマートスピーカーやTV, ゲーム機, 従業員, 家族のPC, スマホ, LAB用のVM(webサーバ, Cloudflare, nextcloud,samba, 個人用OpenVPN/WireGuard, Unbound DNSなど)などが接続されていると思いますが、各PJに分離されたVMからは、PVE Firewall, vnetにより完全に分離されるので、安全。
  • 後続の「Pritunlのmainlan側のIP」がこのIPレンジ内でなくてはならない。
  • インターネットルータの多くはLAN側IPにしかポート転送できないので、インターネットルータの直下のLANに接続してあることが望ましい。

(b) Proxmox PVEのmainlanのIP: (例:192.168.77.2)

  • インターネットルータへのstatic route追加時、宛先IPとなる。

(c) vpndmzvn(新設): (例:192.168.80.0/24 GW: 192.168.80.1)

  • VPNクライアントが各開発PJ用サブネットへアクセスするための経路
  • 最低/30のネットワークアドレスが必要。

(d) クライアントへの配布IP: (例:192.168.81.0/24)

  • wgとovpnで分けられる。例:192.168.81.2-126/25, 192.168.81.129-254/25
  • これを更に「作成する開発用分離セグメントの作成数」で分割し/28とする。
  • 各PJ用にVPNできるクライアント数は最大13人となる。オフショア分散開発などはもっと多目に確保するとよい。

(e) 作成する開発用分離セグメントの作成数(PJ数): (例:8)

  • 最低2で2のn乗2,4,8,16などになっている必要がある。
  • PJ数が8個の場合:PJ-IDは01-08で作成されます。セグメントもvnetpj01~vnetpj08で作成されます。

(f) 各PJ(vnetpjxx)に割り当てるネットワークアドレス(新設): (例:172.16.16.0/20)

  • Project用セグメント。このIPレンジを「作成する開発用分離セグメントの作成数」で分割する。
  • 例:vnetpjxxに割り当てるネットワークアドレスが172.16.16.0/20、作成する開発用分離セグメントの作成数:8の場合、以下のように分割される
  • vnetpjxx内のVM群(172.16.16.0/24)は、上記セグメント内で通信は自由。
  • PVE firewallのノードレベルFWルールでこれらのセグメントのeast-westトラフィックは隔離される。
  • Pritunlのorgに対応

(g) Pritunlのmainlan側のIP: (例:192.168.77.9)

  • インターネットルータへのポートフォワード追加時の転送先IPとなる。

(h) Pritunlのvpndmzvn側のIP: (例:192.168.80.2)

  • Pritunlのクライアントが各PJ用サブネットに出ていくときのサブネットです。最低/30あれば間に合いますがここでは大きく/24で取ってます。

(i) UDP ports

  • 作成する開発用分離セグメントの作成数(PJ数) x 2 (OpenVPN+WireGuard分):(合計16ポート 11856-11863, 15952-15959)

注意: ルーターによっては、ポートフォワードできる数に制限がある。Buffaloルータでは最大32個でした。なので、eを決める際にはルータの最大ポートフォーワード数も念頭に置いて決定すること。 また、IPoEでNDプロキシ/MAP-E/DS-Liteなどを使用している場合は使用できるポートに制限があるので、あらかじめ確認する必要がある。

2.3. Proxmox VE 9.0 インストール

本ドキュメントはPVE 9.0.11で動作の確認を取っております。 PVEには固定IPを振ってください。

2.4. Quickstart

build-instructions-vxlan_jp.mdに従って設定してください

3. ライセンス・制限事項・EULA

  • 本リポジトリに含まれる ドキュメント、図面、構成手順、設定知識 は、 「Zelogx Basic Edition EULA」(使用許諾契約) によって保護・管理されています。
  • 本リポジトリを クローン・使用・参照した時点で、 「Zelogx Basic Edition EULA」に同意したものとみなされます。
  • EULA では以下を明確に禁止しています:
  • 本ドキュメントおよび構築手順の 再配布
  • 派生物の作成(改変版・翻案・二次利用)
  • 本ドキュメントを基にした 自動化スクリプトの生成
  • 競合製品の開発・商用利用 ^ 本リポジトリに含まれる ソフトウェア断片(スクリプト例やコード例) は MIT License に基づき利用可能ですが、 ドキュメントおよびアーキテクチャ情報は EULA により保護されます。

ご利用の前に、必ず EULA をご確認ください。 詳細は以下をご確認ください:EULA_Zelogx_Basic_jp.md

4.あとがき

適切に設計されたパブリッククラウドは強いし、 冗長電源、空調、マルチAZ、SLA、責任分界、フィジカルセキュリティ…など叶わない点はあります。 ある意味自由を奪ってセキュリティとコストの自由度を担保してみた結果、こうなったという一例です。

なお、この記事は家庭LABおじさんも出来るレベルで記載してますが、中小ソフトハウス、少人数SaaS開発、SIer、SES会社向けです。