上記の記事でファイアウォールにおけるサービス(http,https,mysql)と任意のポート番号(ssh)の公開を行なっています。これらサービスとポート番号の公開設定は、「さくらのVPS」WordPressサイトを構築するためのもので、公開する作業はさほど難しくありません。すべてCentOS7の初期設定でファイアウォールに登録されているサービスを使用しているためです。
初期設定以外のサービスの公開・登録は設定が必要
ですがCentOS7の初期設定でファイアウォールに登録されている以外のサービスを利用しようとすると、冒頭に挙げた記事のように簡単に公開することはできません。公開する前にそのサービスを登録する必要があるためです。
そこで今回の記事ではサーバー監視ツールのMuninを例として、監視対象サーバーにおいて監視するサーバーからのポート接続ができるようにするための設定方法をご紹介します。なお今回の記事は以下のページを参考とさせていただきました。
firewalldに新規サービスを登録・公開する方法
監視対象サーバーにおいてfirewalldに新規サービスを登録・公開し、監視するサーバーがポート接続ができるようにするためには、具体的には以下の手順で行います。
公開可能なサービスの一覧を確認
# firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp
これから公開したいサービスが本当に登録されていないかどうか、あらかじめ公開可能なサービスを確認しておきましょう。
# firewall-cmd --list-services --zone=public --permanent dhcpv6-client ssh http https mysql
firewalldに登録されているサービスのうち、公開されているサービスも確認しておきましょう。初期設定の状態ではMuninは登録・公開されていません。
新規サービス(Munin)の登録設定
# vi /etc/firewalld/services/munin.xml <?xml version="1.0" encoding="utf-8"?> <service name> <short>Munin</short> <description>Munin Agent</description> <port protocol="tcp" port="4949"/>
firewalldにおいて、xmlファイルを使って新規サービスの設定登録を行います。shortタグとdescriptionタグの内容は、任意です。ですがMuninを使う場合はファイル名・ポートタグのプロパティは上記の通りに記述します。
# cat /usr/lib/firewalld/services/https.xml
ちなみにmunin.xmlはhttps.xmlはhttps.xmlを参考にしています。実際にmunin.xmlを作成するときは、https.xmlの内容をコピペして必要な箇所だけ書き換えします。
新規サービス(Munin)の公開設定
# vi /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="dhcpv6-client"/> <service name="ssh"/> <service name="http"/> <service name="https"/> <service name="mysql"/> <service name="munin"/> ← 追記 <port protocol="tcp" port="YOURPORTNUMBER"/> <port protocol="tcp" port="4949"/>← 追記 </zone>
ファイアウォールにおいて、xmlファイルを使って新規サービスの公開登録を行います。public.xmlファイルはあらかじめ存在していますので、その中で”<service name=”munin”/>”と”<port protocol=”tcp” port=”4949″/>”を追記します。なお、すでにMuninのインストールが完了していると、”<port proprotocol=”tcp” port=”4949″/>”が表示されています。
設定の反映とサービスの再起動
# systemctl restart firewalld # firewall-cmd --permanent --add-service=munin --zone=public Warning: ALREADY_ENABLED: munin success
まずfirewalldで登録、公開できるサービスを変更しましたのでその反映を行います。次に”munin”のサービスが公開されるようにサービスを追加します。赤色で”Warning: ALREADY_ENABLED: munin”と表示されても、”success”が表示されればMuninの公開は完了したことになります。
サービス公開の確認
# firewall-cmd --reload success # firewall-cmd --list-services --zone=public --permanent dhcpv6-client ssh http https mysql munin
再読み込みをしてMuninのサービスが公開されているかどうか確認します。ssh、http、https、mysqlとともにmuninが表示されているばサービスは公開され、当該ポートに接続ができる状態になっています。
つまり今回の例で言うと監視サーバーは監視対象サーバーの4949番ポートを使って接続ができている状態になります。
ポートスキャンによる接続の確認
$ nmap -p 4949 160.×××.×××.×××(監視対象サーバーのIPアドレス) PORT STATE SERVICE 4949/tcp open munin
もしお手元のクライアントPCにNmapがインストールされている方は、監視されるサーバーのIPアドレスと4949番ポートをスキャンするとポート番号とサービスが使える状態になっていることが分かります。