はじめに
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 環境でのファイアウォール設定要件については、以下を参考にした。
- JP1 Version 11 JP1/Base 運用ガイド
表紙 > 付録 > 付録C ポート番号一覧 > 付録C.2 ファイアウォールの通過方向 - JP1 Version 11 JP1/Automatic Job Management System 3 設計ガイド(システム構築編)
表紙 > 付録 > 付録A 設定するポート番号一覧 > 付録A.2 ファイアウォールの通過方向
ファイアウォールの設定方針
「セキュリティが強化された 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:\>