TECHLOGICS

HYLOGICS分室。作業メモやガジェットのレビューなど、主に技術系のエントリを取り扱います。

【作業メモ】firewalldに新規サービス(tomcat)を登録してポート開放する

背景

開発機のtomcatにgitbucketやJenkinsを導入して社内からアクセスしたいが、CentOS7からはiptablesの代わりにfirewalldが動いていてポート開放の設定がよくわからないので調べてみた。

(デフォルトでTCP/80,TCP/443は扱えるのでリバースproxy経由してアクセスしても良いのだけど)

firewalldが扱うサービス一覧の確認

[root@infra services]# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https

設定ファイルの書式

man firewalld から man firewalld.service と辿って読むと書式のサンプルがある。

DESCRIPTION
       A firewalld service configuration file provides the information of a
       service entry for firewalld. The most important configuration options
       are ports, modules and destination addresses.

       This example configuration file shows the structure of an service
       configuration file:

           <?xml version="1.0" encoding="utf-8"?>
           <service>
             <short>My Service</short>
             <description>description</description>
             <port port="137" protocol="tcp"/>
             <module name="nf_conntrack_netbios_ns"/>
             <destination ipv4="224.0.0.251" ipv6="ff02::fb"/>
           </service>

これを元にtomcatの設定ファイルを作成する。

ディレクトリ構成

firewalldは以下の二種類のディレクトリを利用している。

  • /usr/lib/firewalld
  • /etc/firewalld
DIRECTORIES
       firewalld supports two configuration directories:

   Default/Fallback configuration in /usr/lib/firewalld

   Default/Fallback configuration in /usr/lib/firewalld
       This directory contains the default and fallback configuration provided
       by firewalld for icmptypes, services and zones. The files provided with
       the firewalld package should not get changed and the changes are gone
       with an update of the firewalld package. Additional icmptypes, services
       and zones can be provided with packages or by creating files.

   System configuration settings in /etc/firewalld
       The system or user configuration stored here is either created by the
       system administrator or by customization with the configuration
       interface of firewalld or by hand. The files will overload the default
       configuration files.

       To manually change settings of pre-defined icmptypes, zones or
       services, copy the file from the default configuration directory to the
       corresponding directory in the system configuration directory and
       change it accordingly.

       For more information on icmptypes, please have a look at the
       firewalld.icmptype(5) man page, for services at firewalld.service(5)
       and for zones at firewalld.zone(5).

追加した設定ファイルは/etc/firewalldに置いたほうがよいようだ。

サービス設定の追加

firewalldにサービスを追加してみる。

今回は/usr/lib/firewalld/services/http.xmlをコピーして/etc/firewalld/services/tomcat.xmlを作成した。

[root@infra services]# cat /etc/firewalld/services/tomcat.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>tomcat</short>
  <description>Tomcat HTTP Server</description>
  <port protocol="tcp" port="8080"/>
</service>

[root@infra services]# firewall-cmd --reload
success

[root@infra services]# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client tomcat transmission-client vdsm vnc-server wbem-https

無事tomcatが追加された。

サービスの追加

追加したtomcatの設定を実際に有効にする。

[root@infra services]# firewall-cmd --list-services
dhcpv6-client dns ssh
[root@infra services]# firewall-cmd --permanent --add-service=tomcat
success
[root@infra services]# firewall-cmd --list-services
dhcpv6-client dns ssh
[root@infra services]# firewall-cmd --reload
success
[root@infra services]# firewall-cmd --list-services
dhcpv6-client dns ssh tomcat

--reloadしないと反映されない点に注意。

稼働確認

実際にアクセスしてページが表示されればOK。

以上