2017/05/29

JP1/AJS3環境でWindowsファイアウォールを設定する

はじめに

JP1/Automatic Job Management System 3 (JP1/AJS3)環境において、「セキュリティが強化された Windows ファイアウォール」を Windows Powershell を用いて設定する方法を紹介する。

参考: 『JP1/AJS3環境でRHEL7/CentOS7ファイアウォールを設定する

JP1/Automatic Job Management System 3 (JP1/AJS3)は、業務を自動化する製品。
詳細は、マニュアルを参照。

JP1/AJS3 を構成する主な要素には、マネージャホスト・エージェントホストがある。
マネージャホストは、エージェントホストを制御し、ジョブを実行させる。
マネージャホストは、エージェントホストの機能を含む。
このため、マネージャホスト自身にジョブを実行させることもできる。

JP1/AJS3 は、企業内ネットワーク内部で使用されることが多い。
このため、各構成要素のパーソナルファイアウォールが無効化されていても、一概に安全でないとは言えない。
しかし、無効化しない方がセキュリティ上より安全である。

Windows Serverでは、「セキュリティが強化された Windows ファイアウォール」がパーソナルファイアウォール機能を提供する。
これをGUIで設定する方法もあるが、今回はPowershellを用いて設定する。

JP1/AJS3 環境でのファイアウォール設定要件については、以下を参考にした。

ファイアウォールの設定方針

「セキュリティが強化された Windows ファイアウォール」の流儀に従い、マネージャホストおよびエージェントホストの両方で同じルールを定義し、必要に応じてルールを有効化して使うことにする。
JP1/Base、JP1/AJS3 - ManagerおよびJP1/AJS3 - Agent必要となるファイアウォールルールをグループ化し、グループ名をぞれぞれ、JP1Base、JP1AJS3-ManagerおよびJP1AJS3-Agentとする。
エージェントホストでは、JP1BaseおよびJP1AJS3-Agentに属するルールのみを有効化する。
マネージャホストでは、JP1Base、JP1AJS3-ManagerおよびJP1AJS3-Agentすべてのグループに属するルールを有効化する。
これは、前述の通り、マネージャホストがエージェントホストの機能も併せ持つためである。

なお、以下の実行例では、Powershell のリモート処理機能を用いて作業した。
このため、実行例中のコマンドプロンプトには、[ホスト名]の様にホスト名が含まれている。
マネージャホストのホスト名をmanager、エージェントホストのホスト名をagentとしている。

ルールの定義

Powershellでは、「セキュリティが強化された Windows ファイアウォール」を操作するコマンドレットが提供されている。
新規にルールを作成するためには、New-NetFirewallRuleコマンドレットを使う。
このコマンドレットをそのまま使うとコマンドが長くなるため、作業に先立って、ヘルパ関数fwrhelperを定義する。

このヘルパ関数で定義されるルールは、一旦無効化(-Enabled False)されていることに注意。
従って、定義に続いて、必要なルールのみを有効化する必要がある。

また、適用対象のプロファイルは、Public以外のDomainおよびPrivateとしている。
Publicプロファイルは、信頼性の低い接続の場合に使われるため、JP1/AJS3環境には適切でない場合が多いだろう。

ヘルパ関数fwrhelperの定義

マネージャホストおよびエージェントホストで以下の通り実行する。

[agent]: PS C:\> function fwrhelper($Group,$Name,$DisplayName,$Protocol,$LocalPort){
>>     New-NetFirewallRule -Profile Domain,Private -Action Allow -Enabled False -Direction Inbound `
>>         -Group $Group `
>>         -Name $Name `
>>         -DisplayName $DisplayName `
>>         -Protocol $Protocol `
>>         -LocalPort $LocalPort | ft
>> }
[agent]: PS C:\>

JP1/Base 用ルールの定義

JP1/Base 用のルールを定義する。
マネージャホストおよびエージェントホストで以下の通り実行する。

[agent]: PS C:\> fwrhelper JP1AJS3-Manager JP1AJS3-Agent-to-Manager 'JP1/AJS3 Agent to JP1/AJS3 Manaer' TCP @(20241,20243,20246,20301,22251)

Name                     DisplayName                       DisplayGroup    Enabled Profile         Direction Action
----                     -----------                       ------------    ------- -------         --------- ------
JP1AJS3-Agent-to-Manager JP1/AJS3 Agent to JP1/AJS3 Manaer JP1AJS3-Manager False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Agent JP1AJS3-Manager-to-Agent 'JP1/AJS3 Manager to JP1/AJS3 Aent' TCP @(20242,20247,20300,22251,23139)

Name                     DisplayName                       DisplayGroup  Enabled Profile         Direction Action
----                     -----------                       ------------  ------- -------         --------- ------
JP1AJS3-Manager-to-Agent JP1/AJS3 Manager to JP1/AJS3 Aent JP1AJS3-Agent False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Manager JP1AJS3-Manager-to-Manager 'JP1/AJS3 Manager to JP1/AJS3 Manager' TCP @(20241,20244,20245,23160)

Name                       DisplayName                          DisplayGroup    Enabled Profile         Direction Actio
                                                                                                                  n
----                       -----------                          ------------    ------- -------         --------- -----
JP1AJS3-Manager-to-Manager JP1/AJS3 Manager to JP1/AJS3 Manager JP1AJS3-Manager False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Manager JP1AJS3-SDK-to-Manager 'JP1/AJS3 SDK to JP1/AJS3 Manager' TCP @(22250)

Name                   DisplayName                      DisplayGroup    Enabled Profile         Direction Action
----                   -----------                      ------------    ------- -------         --------- ------
JP1AJS3-SDK-to-Manager JP1/AJS3 SDK to JP1/AJS3 Manager JP1AJS3-Manager False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Agent JP1AJS3-Agent-to-Agent-TCP 'JP1/AJS3 Agent to JP1/AJS3 Agent (TCP)' TCP @(22251)

Name                       DisplayName                            DisplayGroup  Enabled Profile         Direction Actio
                                                                                                                  n
----                       -----------                            ------------  ------- -------         --------- -----
JP1AJS3-Agent-to-Agent-TCP JP1/AJS3 Agent to JP1/AJS3 Agent (TCP) JP1AJS3-Agent False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Agent JP1AJS3-Agent-to-Agent-UDP 'JP1/AJS3 Agent to JP1/AJS3 Agent (UDP)' UDP @(22251)

Name                       DisplayName                            DisplayGroup  Enabled Profile         Direction Actio
                                                                                                                  n
----                       -----------                            ------------  ------- -------         --------- -----
JP1AJS3-Agent-to-Agent-UDP JP1/AJS3 Agent to JP1/AJS3 Agent (UDP) JP1AJS3-Agent False   Domain, Private Inbound   Allow


[agent]: PS C:\> fwrhelper JP1AJS3-Manager JP1AJS3-Web-Console-to-Manager 'JP1/AJS3 Web Console to JP1/AJS3 Manager' TCP @(22250)

Name                           DisplayName                              DisplayGroup    Enabled Profile         Directi
                                                                                                                on
----                           -----------                              ------------    ------- -------         -------
JP1AJS3-Web-Console-to-Manager JP1/AJS3 Web Console to JP1/AJS3 Manager JP1AJS3-Manager False   Domain, Private Inbound


[agent]: PS C:\> fwrhelper JP1AJS3-Web-Console Web-Browser-to-JP1AJS3-Web-Console 'Web Browser to JP1/AJS3 Web Console' TCP @(22252,22253)

Name                               DisplayName                         DisplayGroup        Enabled Profile         Dire
                                                                                                                   ctio
                                                                                                                   n
----                               -----------                         ------------        ------- -------         ----
Web-Browser-to-JP1AJS3-Web-Console Web Browser to JP1/AJS3 Web Console JP1AJS3-Web-Console False   Domain, Private I...


[agent]: PS C:\>

定義されたルールの確認

定義されたルールを確認してみよう。
マネージャホストおよびエージェントホストで以下の通り実行する。

[agent]: PS C:\> Get-NetFirewallRule -Group JP1* | ft

Name                               DisplayName                              DisplayGroup        Enabled Profile
----                               -----------                              ------------        ------- -------
JP1Base-to-JP1Base                 JP1/Base to JP1/Base                     JP1Base             False   Domain, Private
JP1AJS3-to-JP1Base                 JP1/AJS3 to JP1/Base                     JP1Base             False   Domain, Private
JP1AJS3-Agent-to-Manager           JP1/AJS3 Agent to JP1/AJS3 Manaer        JP1AJS3-Manager     False   Domain, Private
JP1AJS3-Manager-to-Agent           JP1/AJS3 Manager to JP1/AJS3 Aent        JP1AJS3-Agent       False   Domain, Private
JP1AJS3-Manager-to-Manager         JP1/AJS3 Manager to JP1/AJS3 Manager     JP1AJS3-Manager     False   Domain, Private
JP1AJS3-SDK-to-Manager             JP1/AJS3 SDK to JP1/AJS3 Manager         JP1AJS3-Manager     False   Domain, Private
JP1AJS3-Agent-to-Agent-TCP         JP1/AJS3 Agent to JP1/AJS3 Agent (TCP)   JP1AJS3-Agent       False   Domain, Private
JP1AJS3-Agent-to-Agent-UDP         JP1/AJS3 Agent to JP1/AJS3 Agent (UDP)   JP1AJS3-Agent       False   Domain, Private
JP1AJS3-Web-Console-to-Manager     JP1/AJS3 Web Console to JP1/AJS3 Manager JP1AJS3-Manager     False   Domain, Private
Web-Browser-to-JP1AJS3-Web-Console Web Browser to JP1/AJS3 Web Console      JP1AJS3-Web-Console False   Domain, Private


[agent]: PS C:\>

すべてのルールが無効化されていることに注意。

必要なルールの有効化

マネージャホストおよびエージェントホストそれぞれで、その役割に必要となるルールを有効化する。

必要なルールの有効化 @ エージェントホストt

ファイアウォールグループ JP1Base および JP1AJS3-Agent を有効化する。

[agent]: PS C:\> Enable-NetFirewallRule -Group JP1Base,JP1AJS3-Agent
[agent]: PS C:\> Get-NetFirewallRule -Group JP1* | ft

Name                               DisplayName                              DisplayGroup        Enabled Profile
----                               -----------                              ------------        ------- -------
JP1Base-to-JP1Base                 JP1/Base to JP1/Base                     JP1Base             True    Domain, Private
JP1AJS3-to-JP1Base                 JP1/AJS3 to JP1/Base                     JP1Base             True    Domain, Private
JP1AJS3-Agent-to-Manager           JP1/AJS3 Agent to JP1/AJS3 Manaer        JP1AJS3-Manager     False   Domain, Private
JP1AJS3-Manager-to-Agent           JP1/AJS3 Manager to JP1/AJS3 Aent        JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Manager-to-Manager         JP1/AJS3 Manager to JP1/AJS3 Manager     JP1AJS3-Manager     False   Domain, Private
JP1AJS3-SDK-to-Manager             JP1/AJS3 SDK to JP1/AJS3 Manager         JP1AJS3-Manager     False   Domain, Private
JP1AJS3-Agent-to-Agent-TCP         JP1/AJS3 Agent to JP1/AJS3 Agent (TCP)   JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Agent-to-Agent-UDP         JP1/AJS3 Agent to JP1/AJS3 Agent (UDP)   JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Web-Console-to-Manager     JP1/AJS3 Web Console to JP1/AJS3 Manager JP1AJS3-Manager     False   Domain, Private
Web-Browser-to-JP1AJS3-Web-Console Web Browser to JP1/AJS3 Web Console      JP1AJS3-Web-Console False   Domain, Private


[agent]: PS C:\>

必要なルールの有効化 @ マネージャホストt

ファイアウォールグループ JP1Base、JP1AJS3-Manager および JP1AJS3-Agentを有効化する。
Manager は、Agent の機能も併せ持つため、Agent 用のルールも有効化する必要がある。

[manager]: PS C:\> Enable-NetFirewallRule -Group JP1Base,JP1AJS3-Manager,JP1AJS3-Agent
[manager]: PS C:\> Get-NetFirewallRule -Group JP1* | ft

Name                               DisplayName                              DisplayGroup        Enabled Profile
----                               -----------                              ------------        ------- -------
JP1Base-to-JP1Base                 JP1/Base to JP1/Base                     JP1Base             True    Domain, Private
JP1AJS3-to-JP1Base                 JP1/AJS3 to JP1/Base                     JP1Base             True    Domain, Private
JP1AJS3-Agent-to-Manager           JP1/AJS3 Agent to JP1/AJS3 Manaer        JP1AJS3-Manager     True    Domain, Private
JP1AJS3-Manager-to-Agent           JP1/AJS3 Manager to JP1/AJS3 Aent        JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Manager-to-Manager         JP1/AJS3 Manager to JP1/AJS3 Manager     JP1AJS3-Manager     True    Domain, Private
JP1AJS3-SDK-to-Manager             JP1/AJS3 SDK to JP1/AJS3 Manager         JP1AJS3-Manager     True    Domain, Private
JP1AJS3-Agent-to-Agent-TCP         JP1/AJS3 Agent to JP1/AJS3 Agent (TCP)   JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Agent-to-Agent-UDP         JP1/AJS3 Agent to JP1/AJS3 Agent (UDP)   JP1AJS3-Agent       True    Domain, Private
JP1AJS3-Web-Console-to-Manager     JP1/AJS3 Web Console to JP1/AJS3 Manager JP1AJS3-Manager     True    Domain, Private
Web-Browser-to-JP1AJS3-Web-Console Web Browser to JP1/AJS3 Web Console      JP1AJS3-Web-Console False   Domain, Private


[manager]: PS C:\>