はじめまして!デジタルペンテストサービス部のbooooomです。
私は入社2年目で、いつも話題になっているようなPoCはもちろんまだ書けていません。また、それらを理解するのにタブ100個くらいを開きながら調べ続けないとダメです。今はmetasploitableやVulnHubからの仮想マシンを使ったり少しずつ勉強しています。
最近Active Directory環境についても勉強し始めました。そのすべてがProxmox VEという仮想化OSが入っているPC上にあります。Proxmox VEの管理インターフェースとVulnHub等からの仮想マシンやAD環境を別のネットワークにきちんと分けた方がいいと思いますので、調べて実際にやってみました。pfSenseというファイアウォールに関する情報が多かったので、とりあえずそれを採用してみました。
今回はやったことを紹介します。
Proxmox VEとは
Proxmox VEとはDebianベースの仮想化プラットフォームです。Web GUIを通して操作可能です。
pfSenseとは
FreeBSDベースのファイアウォールとルータのソフトウェアです。Web GUIがあり設定が簡単にできます。
以下の図のように、2つのサブネットを分けます。作った後、サブネットを増やす場合は仮想NICを作って、pfSense上のインターフェース設定を行うだけです。
また、ここに示したpfSenseのWAN側も実はプライベートネットワーク内です。
※pfSenseはルータとしても機能できますので、本来であればWAN側はインターネットに接続するインターフェースです。
pfSenseの仮想マシンの作成
まずはProxmox VE上の仮想マシンを作ります。仮想NICを準備した後、このマシンにpfSenseをインストールします。また、Proxmox VEが動いている間にこの仮想マシンを動作させますので、「Start at boot」にチェックを付けます。
メモリやディスク容量はpfSenseの公式ドキュメントを参考しました。勉強用の小規模の環境ですので、必要最小限にしました。
仮想NICの準備
ノード上のNetworkタブで仮想NICを作ります。
Linux Bridgeを選択し、Bridgeの名前だけを記入して他の項目は空欄のままでNICを作成します。これらの項目は後でpfSense側で設定します。
その後、「Apply Configuration」で設定を反映させます。
pfSenseのインストール・設定
pfSenseを仮想マシンにインストール後、初回の起動時にインターフェースの設定をする必要があります。pfSenseのWAN側をvmbr0(vtnet0、実際のNIC)にし、LAN側を作成したvmbr5とvmbr6に設定します。
すべてが完了すると、以下のようなプロンプトが表示されます。表示しているWAN側のIPアドレスでWeb GUIにアクセスできます。
Web GUIにアクセスする前に、自動的に有効になっているフィルタリング機能を無効にする必要があります。(pfSenseシェルに入ってpfctl -d)
はじめてのWeb GUIへのログインの場合、「Setup Wizard」が表示されます。その手順に従って、基本情報、インターフェースの初期設定ができます。
ここで、pfSenseのWAN側はプライベートネットワーク内にあるため、以下のようにチェックを外します。
ファイアウォールルール
ファイアウォールルールを以下のように設定すれば、簡単なサブネットの隔離ができます。LAN2も同様に、LANとWANへのアクセスをブロックすれば良いです。
Kali LinuxやWindowsなどのホストマシンは、所属させるLANの仮想NICだけを与えます。
各LAN内のホストVMを起動した後サブネットの接続確認でネットワークの隔離を確認してみてください。pfSense上のDHCPサーバを設定しない場合は、ホストマシンに手動でIPアドレスを割り当ててください。
感想
一回やってみたら、技術的にはそこまで難しくはないと思います。設計時の方が、それぞれの環境や目的が異なりますので、事例を読んで自分にも通用できそうなものを真似した形です(今でも結構シンプルですが...)。
後ほどで見つけましたが、Proxmox VEの他のネットワーク機能も気になります。Linux Bridgeを作るときに「VLAN aware」にすれば、複数の空Bridgeを作る必要がなくpfSense上でVLANを設定すれば済むそうです。今は使う必要がないと思いますが、OVS Bridgeを使った構成も試してみたいともいます。