はじめに
JP1/Automatic Job Management System 3 (JP1/AJS3)環境において、firewalldを設定する方法を紹介する。参考: 『JP1/AJS3環境でWindowsファイアウォールを設定する』
JP1/Automatic Job Management System 3 (JP1/AJS3)は、業務を自動化する製品。
詳細は、マニュアルを参照。
JP1/AJS3 を構成する主な要素には、マネージャホスト・エージェントホストがある。
マネージャホストは、エージェントホストを制御し、ジョブを実行させる。
マネージャホストは、エージェントホストの機能を含む。
このため、マネージャホスト自身にジョブを実行させることもできる。
JP1/AJS3 は、企業内ネットワーク内部で使用されることが多い。
このため、各構成要素のパーソナルファイアウォールが無効化されていても、一概に安全でないとは言えない。
しかし、無効化しない方がセキュリティ上より安全である。
RHEL 7/CentOS 7では、firewalld がパーソナルファイアウォール機能を提供する。
JP1/AJS3 環境でのファイアウォール設定要件については、以下を参考にした。
- JP1 Version 11 JP1/Base 運用ガイド
表紙 > 付録 > 付録C ポート番号一覧 > 付録C.2 ファイアウォールの通過方向 - JP1 Version 11 JP1/Automatic Job Management System 3 設計ガイド(システム構築編)
表紙 > 付録 > 付録A 設定するポート番号一覧 > 付録A.2 ファイアウォールの通過方向
ファイアウォールの設定方針
RHEL 7/CentOS 7では、パーソナルファイアウォールとして、firewalld と iptables が利用できる。この iptables は、TCP/UDP ポートを一つづつ追加していくか、連続した TCP/UDP ポートを追加するかのいずれかの方法でルールを定義する。一方、firewalld は、iptables と同様の方法に加えて、複数の TCP/UDP ポートをひとまとめにして扱うことができる。
ひとまとめにした TCP/UDP ポートは、サービスと呼ばれ、名前を付けて扱うことが出来る。
マネージャホストおよびエージェントホストの両方で同じサービスを定義し、必要に応じてサービス単位で通信を許可する。
Firewalldサービスの定義
Firewalld のサービスは、/etc/firewalld/services
以下に XML ファイルを作成することで定義する。Firewalldサービスの定義/設定前状態の確認
マネージャホストおよびエージェントホストで以下の通り実行する。定義したサービスの一覧を
firewall-cmd --get-services
で得ることができる。[root@agent ~]# cd /etc/firewalld/services [root@agent services]# ls *JP1* ls: cannot access *JP1*: No such file or directory [root@agent services]# for SERVICE in $(firewall-cmd --get-services); do [[ $SERVICE = *JP1* ]] && echo $SERVICE; done [root@agent services]#
何も定義されていないことが解る。
Firewalldサービスの定義/設定
マネージャホストおよびエージェントホストで以下の通り実行する。
[root@agent services]# cat <<'EOF' > JP1Base-to-JP1Base.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1Base-to-JP1Base</short> > <description>JP1/Base to JP1/Base</description> > <port protocol="tcp" port="20098"/> > <port protocol="tcp" port="20306"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-to-JP1Base.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-to-JP1Base</short> > <description>JP1/AJS3 (both Manager and Agent) to JP1/Base</description> > <port protocol="tcp" port="20240"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-View-to-Manager.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-View-to-Manager</short> > <description>JP1/AJS3 View to JP1/AJS3 Manaer</description> > <port protocol="tcp" port="20244"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-Agent-to-Manager.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-Agent-to-Manager</short> > <description>JP1/AJS3 Agent to JP1/AJS3 Manaer</description> > <port protocol="tcp" port="20241"/> > <port protocol="tcp" port="20243"/> > <port protocol="tcp" port="20246"/> > <port protocol="tcp" port="20301"/> > <port protocol="tcp" port="22251"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-Manager-to-Agent.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-Manager-to-Agent</short> > <description>JP1/AJS3 Manager to JP1/AJS3 Aent</description> > <port protocol="tcp" port="20242"/> > <port protocol="tcp" port="20247"/> > <port protocol="tcp" port="20300"/> > <port protocol="tcp" port="22251"/> > <port protocol="tcp" port="23139"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-Manager-to-Manager.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-Manager-to-Manager</short> > <description>JP1/AJS3 Manager to JP1/AJS3 Manager</description> > <port protocol="tcp" port="20241"/> > <port protocol="tcp" port="20244"/> > <port protocol="tcp" port="20245"/> > <port protocol="tcp" port="23160"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-SDK-to-Manager.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-SDK-to-Manager</short> > <description>JP1/AJS3 SDK to JP1/AJS3 Manager</description> > <port protocol="tcp" port="22250"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-Agent-to-Agent.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-Agent-to-Agent</short> > <description>JP1/AJS3 Agent to JP1/AJS3 Agent</description> > <port protocol="tcp" port="22251"/> > <port protocol="udp" port="22251"/> > </service> > EOF [root@agent services]# cat <<'EOF' > JP1AJS3-Web-Console-to-Manager.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>JP1AJS3-Web-Console-to-Manager</short> > <description>JP1/AJS3 Web Console to JP1/AJS3 Manager</description> > <port protocol="tcp" port="22250"/> > </service> > EOF [root@agent services]# cat <<'EOF' > Web-Browser-to-JP1AJS3-Web-Console.xml > <?xml version="1.0" encoding="utf-8"?> > <service> > <short>Web-Browser-to-JP1AJS3-Web-Console</short> > <description>Web Browser to JP1/AJS3 Web Console</description> > <port protocol="tcp" port="22252"/> > <port protocol="tcp" port="22253"/> > </service> > EOF [root@agent services]#
Firewalld サービスの定義/設定後状態の確認
マネージャホストおよびエージェントホストで以下の通り実行する。定義されたサービスは、定義を
firewall-cmd --reload
でリロードすることによって反映される。[root@agent services]# ls *JP1* JP1AJS3-Agent-to-Agent.xml JP1AJS3-SDK-to-Manager.xml JP1Base-to-JP1Base.xml JP1AJS3-Agent-to-Manager.xml JP1AJS3-View-to-Manager.xml Web-Browser-to-JP1AJS3-Web-Console.xml JP1AJS3-Manager-to-Agent.xml JP1AJS3-Web-Console-to-Manager.xml JP1AJS3-Manager-to-Manager.xml JP1AJS3-to-JP1Base.xml [root@agent services]# firewall-cmd --reload success [root@agent services]# for SERVICE in $(firewall-cmd --get-services); do [[ $SERVICE = *JP1* ]] && echo $SERVICE; done JP1AJS3-Agent-to-Agent JP1AJS3-Agent-to-Manager JP1AJS3-Manager-to-Agent JP1AJS3-Manager-to-Manager JP1AJS3-SDK-to-Manager JP1AJS3-View-to-Manager JP1AJS3-Web-Console-to-Manager JP1AJS3-to-JP1Base JP1Base-to-JP1Base Web-Browser-to-JP1AJS3-Web-Console [root@agent services]# for SERVICE in $(firewall-cmd --get-services); do if [[ $SERVICE = *JP1* ]]; then echo "### $SERVICE"; firewall-cmd --info-service=$SERVICE; fi; done ### JP1AJS3-Agent-to-Agent JP1AJS3-Agent-to-Agent ports: 22251/tcp 22251/udp protocols: source-ports: modules: destination: ### JP1AJS3-Agent-to-Manager JP1AJS3-Agent-to-Manager ports: 20241/tcp 20243/tcp 20246/tcp 20301/tcp 22251/tcp protocols: source-ports: modules: destination: ### JP1AJS3-Manager-to-Agent JP1AJS3-Manager-to-Agent ports: 20242/tcp 20247/tcp 20300/tcp 22251/tcp 23139/tcp protocols: source-ports: modules: destination: ### JP1AJS3-Manager-to-Manager JP1AJS3-Manager-to-Manager ports: 20241/tcp 20244/tcp 20245/tcp 23160/tcp protocols: source-ports: modules: destination: ### JP1AJS3-SDK-to-Manager JP1AJS3-SDK-to-Manager ports: 22250/tcp protocols: source-ports: modules: destination: ### JP1AJS3-View-to-Manager JP1AJS3-View-to-Manager ports: 20244/tcp protocols: source-ports: modules: destination: ### JP1AJS3-Web-Console-to-Manager JP1AJS3-Web-Console-to-Manager ports: 22250/tcp protocols: source-ports: modules: destination: ### JP1AJS3-to-JP1Base JP1AJS3-to-JP1Base ports: 20240/tcp protocols: source-ports: modules: destination: ### JP1Base-to-JP1Base JP1Base-to-JP1Base ports: 20098/tcp 20306/tcp protocols: source-ports: modules: destination: ### Web-Browser-to-JP1AJS3-Web-Console Web-Browser-to-JP1AJS3-Web-Console ports: 22252/tcp 22253/tcp protocols: source-ports: modules: destination: [root@agent services]#
Firewalld ルールの定義
Firewalld ルールの定義/設定前状態の確認
マネージャホストおよびエージェントホストで以下の通り実行する。[root@agent services]# firewall-cmd --get-default-zone public [root@agent services]# firewall-cmd --info-zone=public public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: dhcpv6-client http https ntp smtp ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: [root@agent services]#
Firewalld ルールの定義/設定
エージェントホストで以下の通り実行する。[root@agent services]# firewall-cmd --permanent --zone=public --add-service=JP1Base-to-JP1Base --add-service=JP1AJS3-to-JP1Base success [root@agent services]# firewall-cmd --permanent --zone=public --add-service=JP1AJS3-Manager-to-Agent --add-service=JP1AJS3-Agent-to-Agent success [root@agent services]#
マネージャホストでは、これらのサービスの他に、JP1AJS3-Agent-to-Manager、JP1AJS3-Manager-to-Manager、JP1AJS3-SDK-to-Manager、JP1AJS3-View-to-ManagerおよびJP1AJS3-Web-Console-to-Managerを追加する。
Firewalld ルールの定義/設定後状態の確認
マネージャホストおよびエージェントホストで以下の通り実行する。[root@agent services]# firewall-cmd --reload success [root@agent services]# firewall-cmd --info-zone=public public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: JP1AJS3-Agent-to-Agent JP1AJS3-Manager-to-Agent JP1AJS3-to-JP1Base JP1Base-to-JP1Base dhcpv6-client http https ntp smtp ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: [root@agent services]#