2017/06/06

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

はじめに

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 環境でのファイアウォール設定要件については、以下を参考にした。


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

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]#