ラック・セキュリティごった煮ブログ

セキュリティエンジニアがエンジニアの方に向けて、 セキュリティやIT技術に関する情報を発信していくアカウントです。

【お知らせ】2021年5月10日~リニューアルオープン!今後はこちらで新しい記事を公開します。

株式会社ラックのセキュリティエンジニアが、 エンジニアの方向けにセキュリティやIT技術に関する情報を発信するブログです。
(編集:株式会社ラック・デジタルペンテスト部)

pfSenseを使って、Proxmox VE上のラボ環境構築をしてみた

はじめまして!デジタルペンテストサービス部の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側はインターネットに接続するインターフェースです。

f:id:lac_devblog:20220208162918p:plain

pfSenseの仮想マシンの作成

まずはProxmox VE上の仮想マシンを作ります。仮想NICを準備した後、このマシンにpfSenseをインストールします。また、Proxmox VEが動いている間にこの仮想マシンを動作させますので、「Start at boot」にチェックを付けます。

メモリやディスク容量はpfSenseの公式ドキュメントを参考しました。勉強用の小規模の環境ですので、必要最小限にしました。

仮想NICの準備

ノード上のNetworkタブで仮想NICを作ります。

Linux Bridgeを選択し、Bridgeの名前だけを記入して他の項目は空欄のままでNICを作成します。これらの項目は後でpfSense側で設定します。

その後、「Apply Configuration」で設定を反映させます。

f:id:lac_devblog:20220208142642p:plain

仮想NICの作成

作ったpfSenseの仮想マシンに仮想NICを与えます。

f:id:lac_devblog:20220208143353p:plain

pfSenseファイアウォール仮想マシンにNetwork Deviceを追加

pfSenseのインストール・設定

pfSenseを仮想マシンにインストール後、初回の起動時にインターフェースの設定をする必要があります。pfSenseのWAN側をvmbr0(vtnet0、実際のNIC)にし、LAN側を作成したvmbr5とvmbr6に設定します。

f:id:lac_devblog:20220208143759p:plain

初回のインターフェース設定

すべてが完了すると、以下のようなプロンプトが表示されます。表示しているWAN側のIPアドレスでWeb GUIにアクセスできます。

Web GUIにアクセスする前に、自動的に有効になっているフィルタリング機能を無効にする必要があります。(pfSenseシェルに入ってpfctl -d)

f:id:lac_devblog:20220208131727p:plain

はじめてのWeb GUIへのログインの場合、「Setup Wizard」が表示されます。その手順に従って、基本情報、インターフェースの初期設定ができます。

ここで、pfSenseのWAN側はプライベートネットワーク内にあるため、以下のようにチェックを外します。

f:id:lac_devblog:20220208150403p:plain

WANはPrivate Addressなのでチェックを外す

ファイアウォールルール

ファイアウォールルールを以下のように設定すれば、簡単なサブネットの隔離ができます。LAN2も同様に、LANとWANへのアクセスをブロックすれば良いです。

f:id:lac_devblog:20220208150320p:plain

ファイアウォールルール

Kali LinuxWindowsなどのホストマシンは、所属させるLANの仮想NICだけを与えます。

各LAN内のホストVMを起動した後サブネットの接続確認でネットワークの隔離を確認してみてください。pfSense上のDHCPサーバを設定しない場合は、ホストマシンに手動でIPアドレスを割り当ててください。

感想

一回やってみたら、技術的にはそこまで難しくはないと思います。設計時の方が、それぞれの環境や目的が異なりますので、事例を読んで自分にも通用できそうなものを真似した形です(今でも結構シンプルですが...)。

後ほどで見つけましたが、Proxmox VEの他のネットワーク機能も気になります。Linux Bridgeを作るときに「VLAN aware」にすれば、複数の空Bridgeを作る必要がなくpfSense上でVLANを設定すれば済むそうです。今は使う必要がないと思いますが、OVS Bridgeを使った構成も試してみたいともいます。