記事検索

検索ワードを入力してください。
Sky Tech Blog
Windows Server を​模擬的な​ファイアウォールに​して​ネットワークを​分離する

Windows Server を​模擬的な​ファイアウォールに​して​ネットワークを​分離する

Windows Serverの機能を利用して仮想環境で模擬的なファイアウォールを構築し、特定の通信のみを許可するネットワーク分離環境を作成する方法について詳しく説明します。

弊社商品のサポートを行うにあたって検証用に仮想環境を利用していますが、次のような確認をしたいケースがあります。

  • ネットワーク分離環境で、特定通信だけ通した場合にアプリケーションが正常に動作するのか

ネットワーク分離(論理分離)を行う場合、一般的にはファイアウォール(FW)を2つのネットワークの間に入れて通信を制御しますが、検証用の仮想環境でFWを入れられないケースも多々あります。

今回紹介するのは、そんなときにWindows Serverの機能だけで模擬的なFWを作成する方法です。

別ネットワークにあるpc1から、sv1に用意したWebサーバーに対して、今回作成する模擬FWを通して、http:80 https:443 でそれぞれアクセスできるかどうかを試すというシナリオで記載します。

事前準備

登場マシン

gw
今回主題となる、模擬FWにするWindows Server
IPアドレス:(NIC1)192.168.1.254/24 ・ (NIC2):192.168.2.254/24
OS:Windows Server 2022 Standard

sv1
アクセス先Webサーバー
IPアドレス:192.168.1.1/24
IIS 有効化 SSLサーバー証明書(証明書A)用意 http(80) https(443) バインド
OS:Windows Server 2022 Standard

pc1
アクセス元端末
IPアドレス:192.168.2.11/24
証明書Aに対するルート証明書を信頼されたルート証明機関に登録(httpsアクセスのための準備)
OS:Windows 11 Pro

※Windows Firewall対策として、すべてのネットワークをプライベートネットワークに設定しておきます。

仮想マシンと​仮想スイッチ割り​当て

  • gw はvswitch1とvswitch2両方に接続

  • sv1はvswitch1へ接続

  • pc1はvswitch2へ接続

NW構成

上記を簡単に図にまとめると下記になります。

この​時点での​疎通確認

  • sv1 → gw ping通る

  • pc1 → gw ping通る
  • pc1 → sv1 ネットワークが違うので当然ながらタイムアウト

模擬 FW の​作成

gwで​サーバーマネージャーから​「ルーティングと​リモートアクセス」の​機能を​有効化

※スクリーンショットは要所のみ掲載します。

  • サーバーマネージャーの「役割と機能の追加」から、「リモートアクセス」にチェックして次へ

  • 「ルーティング」にチェック

  • 「機能の追加」クリック

  • あとは次へ次へと進んで「閉じる」

ルーティングと​リモートアクセスの​設定

  • スタートメニュー→「Windows 管理ツール」から「ルーティングとリモートアクセス」起動

  • サーバー名を右クリック→「ルーティングとリモートアクセスの構成と有効化」を選択

  • 次へ

  • 「カスタム構成」を選択して次へ

  • 「LANルーティング」を選択して次へ

  • 完了→サービスの開始

この​時点で​疎通確認

  • pc1 → sv1 の疎通ができるように
    トレースからもgwを経由して通信していることを確認

  • ブラウザからの http / https アクセスも成功します。

(http)

(https)

ネットワークを​分離

このままだとすべての通信が通るので、特定通信(https)のみを通すように設定します。

  • ルーティングとリモートアクセスの設定画面で左ペインを展開し、「IPv4」→「全般」→「イーサネット 2」(pc1 が接続されている側のインタフェース)をダブルクリック

  • 入出力に対してフィルタが利用できますが、ここでは入力フィルタを使って制御

  • 「新規」をクリック

  • 「イーサネット 2」への入力は、HTTPS要求(pc1(ANY)→sv1(443)の通信)なので、宛先がTCP 443(https)の通信を許可

※発信元・宛先のIPアドレスを限定することもできますが、今回はIPアドレスはANYで設定しています

  • 宛先TCP 443以外はすべて破棄にして、OKをクリック

  • インターフェースごとに設定が必要なので「イーサネット」(sv1が接続されている側のインタフェース)をダブルクリック

※「イーサネット」側は通信を制限しないままでも今回の検証はできますが、他にも許可する通信を追加するケースも想定し設定します。
※一般的なFWは行きの通信の設定を行えば暗黙的に戻りの通信も許可されるものもありますが、本機能を利用する場合は行きと戻り両方考慮した設定を行う必要があります。

  • 「入力フィルター」をクリック

  • 「イーサネット」への入力は、HTTPS応答(sv1(443)→pc1(ANY)の通信)なので、発信元がTCP 443(https)の通信をコンピュータ特定せず許可

  • 発信元TCP 443以外はすべて破棄にして、OKをクリック

疎通確認

  • https は変わらず開ける

  • http でアクセスするとタイムアウト

特定通信として https だけ通すネットワーク分離環境が出来上がりました。

通信制御を​テキストで​処理する​方​法

毎回設定ツールを立ち上げて、UI上から1件1件許可設定を打ち込むのが面倒、という場合はテキストファイルから設定を取り込むこともできます。

現状の​設定の​エクスポート

下記のコマンドを実行

> netsh routing ip dump > 出力先ファイルパス

このように出力されます。

出力した​ファイルの​編集

  • 通信許可の設定だけを目的とする場合、「DNSプロキシ構成」以降は不要なので削除します

  • 日本語環境で出力すると、「filtertype=入力」や「action=切断」と日本語交じりで出力されますがこの日本語部分が取り込む際にエラーになるので、一括置換で英語に直します。

  • 行をコピーして、追加したい設定を増やします
    ここでは「イーサネット 2」にTCP 80(http)の許可設定を追加しています。
    ※記述順に意味があるので、設定を増やす場合は既存行の隣に追加するのが安全です。

設定の​反映

  • 次のコマンドでファイルから設定を取り込みます。
    いくつかエラーが表示されますが無視しても特に動作に問題はないようです。
> netsh -f 入力ファイルパス

設定ツール上で​確認

  • TCP 80 の設定が追加されています。
    ※必要に応じて「イーサネット」側も設定を追加してください。

以上です。


XFacebookLINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム