2019年11月5日火曜日

Windows ファイアウォールで特定のアプリケーションのみインターネット通信を許可する

WSUSの更新ファイルの取得や、ウイルス対策ソフトの定義ファイル更新などで、Windowsサーバをインターネットと通信させる要件がある場合、単純にインターネット通信をすべて許可してしまうと、ブラウザ等でもインターネット閲覧ができてしまうため、セキュリティ的に問題となる場合がある。

インターネット通信を行うソフトウェアの実行ファイルを特定できる場合は、Windowsファイアウォール (Windows Defenderファイアウォール)にて通信制御を行うことができる。

ただし、Windowsファイアウォールは若干癖のある設定が必要となるので、今回はその設定方法を記載する。

今回の通信要件

以下通信をできるようWindowsファイアウォールを構成する。
  • 対象はWSUSサーバ
  • ドメインに所属
  • WSUSのみインターネットから更新ファイルの取得を許可 (WsusService.exeはインターネット通信を許可)
  • その他の通信はインターネット接続をブロック
それでは、上記を満たすようWindowsファイアウォールを構成してみよう。

Windowsファイアウォールのデフォルトの許可・拒否の動作

Windowsファイアウォールは「受信の規則」と「送信の規則」で分かれており、それぞれのデフォルトの動作は以下の通りとなる。
  • 受信の規則はデフォルト「ブロック」 (変更可)
  • 送信の規則はデフォルト「許可」 (変更可)
  • 規則の中に「許可」と「ブロック」がある場合は、「ブロック」が優先される (変更不可)
拒否が優先して処理される仕様があり、一部許可ルールを書いてからその他をすべて拒否するといった使い方はできないので注意が必要。今回はWSUSのみインターネット通信を許可する必要があるため、送信の規則のデフォルトの動作を「ブロック」に変更する。


デフォルト「ブロック」にするとドメインコントローラとの通信もできなくなる

しかし、送信の規則に対して、デフォルト「ブロック」に変更すると、もともと通信が必要なものまでブロックされてしまうため、サーバ動作に支障をきたしてしまう。ドメイン環境の場合はドメインコントローラとの通信もブロックされてしまう。
以下、送信の規則をデフォルト「ブロック」にした際のドメインコントローラとの通信確認 (ログイン認証及びNTP) の通信を確認した結果となる。どちらもエラーになっていることがわかる。
PS C:\> nltest.exe /SC_QUERY:intrat.local
フラグ: 0
信頼された DC 名
信頼された DC 接続状態 Status = 1311 0x51f ERROR_NO_LOGON_SERVERS
コマンドは正常に完了しました
PS C:\> w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。

PS C:\> w32tm /query /status
閏インジケーター: 3 (同期未実行)
階層: 0 (未指定)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.0004561s
ルート分散: 14.3052780s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 2019/11/02 20:17:15
ソース: t1061w216.intrat.local
ポーリング間隔: 6 (64s)
上記も考慮し、Windowsファイアウォールの規則の追加を行う。

Windowsファイアウォールの規則の追加

今回の通信要件を満たすためには、以下2つの規則を追加すればよい。

ルール1:WSUSのインターネット通信を許可

  • 操作:接続を許可する
  • 名前:WSUSダウンロード
  • プログラム:%ProgramFiles%\Update Services\Services\WsusService.exe
  • スコープ:リモートIPアドレスにて「事前定義されたコンピューターセット」を選択し、「インターネット」を指定 (下図参照)

ルール2:ドメインコントローラとの通信を許可

  • 操作:接続を許可する
  • 名前:Active Directory
  • スコープ:リモートIPアドレスに「ドメインコントローラのIPアドレス」を指定

以下の通り2つの規則が追加




インターネット通信の確認

まず、ブラウザでインターネット通信を試みると以下の通りエラーとなって接続できないことがわかる (プロキシ環境となるため、プロキシ通信がエラーとなる)。


一方、WSUSは以下の通りインターネット通信が成功することがわかる (プロキシ環境となるが、問題なく成功した)。


ドメインコントローラとの通信確認

先ほどエラーとなったドメインコントローラの通信も確認しておこう。
ドメインコントローラの認証はSuccessになっていることがわかる。
PS C:\> nltest.exe /SC_QUERY:intrat.local
フラグ: 30 HAS_IP  HAS_TIMESERV
信頼された DC 名 \\t1061w216.intrat.local
信頼された DC 接続状態 Status = 0 0x0 NERR_Success
コマンドは正常に完了しました
NTPによる時刻同期の状況も問題なし。
PS C:\> w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。

PS C:\> w32tm /query /status
閏インジケーター: 0 (警告なし)
階層: 2 (二次参照 - (S)NTP で同期)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.0010275s
ルート分散: 18.2840513s
参照 ID: 0xC0A80B3D (ソース IP:  192.168.11.61)
最終正常同期時刻: 2019/11/02 20:20:14
ソース: t1061w216.intrat.local
ポーリング間隔: 6 (64s)
以上でWindowsファイアウォールを使って、特定のアプリケーションのみインターネット接続を許可することができた。

0 件のコメント:

コメントを投稿

人気の投稿