今回はfirewalldで独自のサービスを定義する方法についてご紹介致します。
前提条件は以下となります。
- firewalldがインストールされている
firewalldとは
firewalldはレットハット系のlinuxで採用されているファイヤーウォール管理ツールとなります。
ユーザーが設定したルールに基づいて通信を制御する事が出来ます。
サービス確認
firewalldではデフォルトでいくつかのサービスが定義されております。
下記コマンドを使用する事で現在定義されているサービス一覧を確認する事が出来ます。
firewall-cmd --get-services
上記を実行すると下記のようにサービス一覧が表示されます。
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming submission svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
サービスの追加
それでは実際にサービスの追加を行っていきます。
独自のサービスを追加するには以下のパス内に定義ファイルを作成します。
定義ファイルはxmlファイルで作成する必要がございます。
/etc/firewalld/services
今回は例として「custom」というサービスを作成します。
vi /etc/firewalld/services/custom.xml
先程作成したサービスファイル(xml)内にサービス内容を定義していきます。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>custom</short>
<description>custom service</description>
<port protocol="tcp" port="12345"/>
<port protocol="udp" port="54321"/>
</service>
「short」にはサービス名を入力します。
「description」にはサービス説明を記載します。
「port」にはプロトコル名とポート番号を追記きます。
今回は例としてTCPの12345番ポートとUDPの54321番ポートを定義します。
firewalldのリロード
上記定義ファイルの設定が完了しましたfirewalldをリロードします。
firewalldは下記コマンドでリロード可能です。
firewall-cmd --reload
サービス定義の確認
リロードが問題なく行われたらサービスが定義さております。
先程のサービス一覧確認コマンドにて反映を確認してください。
firewall-cmd --get-services
上記を実行すると下記のようにサービス一覧が表示されます。
RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb custom dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming submission svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
無事にcustomが追記されておりました。
後は他サービスと同様に利用する事が出来ます!