ハマる前に理解する「Firewalld」の設定方法、「iptables」との違い:CentOS 7で始める最新Linux管理入門(4)(4/4 ページ)
システム管理に関する部分が前バージョンから大きく変更された「CentOS 7」は、Linuxに慣れていても「ハマる落とし穴」が幾つかあります。今回は、CentOS 7で採用されたパケットフィルタリングのための新たな仕組みである「Firewalld」の基礎と運用方法を解説します。
XMLファイルで、定義したサービスを「追加」する
サービスの定義ファイルは/usr/lib/firewalld/servicesに、XML形式のファイルで格納されています。CentOS 7では「http」「https」「ssh」などの主要なサービスはあらかじめ定義済みとなっています。
例えば、「sshの定義ファイル(ssh.xml)」の中身は以下の通りです。
# cat /usr/lib/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/> </service>
定義を個別に追加したい場合は、/etc/firewalld/servicesへ、記述フォーマットに沿ったXML形式のファイルを作成します。
例えば、「電子メールクライアントからのメール送信に使うポートである、サブミッションポート(TCP 587番ポート)を、submissionサービスとして登録する」場合は、以下のように作業します。
(1)「submission.xml」ファイルを作成する
/etc/firewalld/services/配下に「submission.xml」ファイルを「#vi /etc/firewalld/services/submission.xml」で作成します。中身は以下の通りです。
<?xml version="1.0" encoding="utf-8"?> <service> <short>submission</short> <description>(サービスについての説明を書きます) </description> <port protocol="tcp" port="587"/> </service>
設定を反映させるためにリロードする
# firewall-cmd --reload success
追加されたかを確認する
正しく追加されたかを確認します。
# 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 submission telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https
sshとtelnetの間に、作業した「submission」が追加されていることが確認できました。
おわりに
これまでのiptablesを用いたパケットフィルタリングでは、INPUT/OUTPUT/FORWARDそれぞれのチェインに対して、厳密な設定をする必要がありました。また、iptablesコマンドは、多くの設定オプションを正しく把握していないと設定が難しい課題がありました。
CentOS 7のFirewalldでは、iptablesでのパケットフィルタリング設定から管理方法が大きく変更されたことで、これまでiptablesでのパケットフィルタリングに慣れていたシステム管理者にとって、移行への障壁となっている部分があります。
しかし、Firewalldは「INPUT方向の制御に特化」していること、そして、ゾーンとサービスの組み合わせによって、「許可/拒否の設定の仕組みが理解しやすく」なり、「設定の確認も容易」になりました。また、ゾーンとサービスを組み合わせた管理の仕組みは、プロトコルやポートやセッションなどの挙動を意識せずに設定できるため、「TCP/IPの深い知識がない管理者であっても管理しやすい」設計になったと言えます。
管理がシンプルになったことで、これまでiptablesでパケットフィルタリング設定の管理を行ってきたシステム管理者にも、煩雑な運用から解放されるメリットがあります。この機会にぜひ覚えて活用していきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- いまさら聞けないLinuxの基礎知識
Linuxを勉強してみたいけど、どこから手を付けてよいか分からない、何だかよく分からないまま使っている……そんな方々のための連載です。まずは、Linuxとはどんなものなのか確認しましょう。 - ステートフルパケットフィルタを使ったサービスの公開
初心者にとって、iptablesは設定が最も困難な機能の1つである。そこで、学習の第1歩としてテンプレートを自分の環境に合わせて修正することから始めよう。(編集部) - CentOS 7のシステム管理「systemd」をイチから理解する
「systemd」は、Linuxの起動処理やシステム管理を行う仕組みです。systemdはinitの限界を克服するために作られた新しいシステム管理アーキテクチャで、CentOS 7でも用います。では、何が違うのでしょう。これまで使われてきた「init」と比較しながら、基礎と課題を解説します。 - NetworkManagerをコマンドラインから操作するには? nmcliコマンド
従来Linuxでは、ネットワークの状態確認やデバイスの設定など機能ごとにコマンドを使い分けていましたが、Red Hat Enterprise LinuxおよびCentOSには、統合ツールとして「NetworkManager」およびCLI版の「nmcli」が用意されています。 - Linux起動の仕組みを理解しよう[init/inittab編]
カーネルが呼び出されてからログインプロンプトが表示されるまでの間に、一体どのような処理が行われているのか。これを理解するには、この部分の全般をつかさどるinitとその設定ファイルであるinittabがカギとなる。 - エンタープライズでもInfrastructure as Code――Chef 12/Chef-Zero/Knife-Zeroの基礎知識とインストール
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。初回は、Chef 12、Chef Solo、Chef Server、Chef-Zero、Knife-Solo、Knife-Zeroの概要と、Chef-ZeroをKnife-Zero経由で利用するCookbook開発環境の構築について解説します。 - Linuxで作るファイアウォール[パケットフィルタリング設定編]
いよいよパケットフィルタリングの設定を始める。しっかりと不要なパケットをブロックできれば、ファイアウォールの内側の安全度はより向上する。パケットの性質やiptablesの動作をここでマスターしてほしい。 - アクセス制限の設定とCentOSのアップデート
前回はsshでVPSにログインして、一般ユーザーを作成しました。今回は、アクセス制限、パケットフィルタリングといった不正アクセス対策の設定をしてから、CentOSをアップデートします(編集部) - 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - 無線LAN接続の設定を操作するには? iwconfigコマンドの使い方
無線LANインターフェースがカーネルまたはモジュールでサポートされていれば、アクセスポイントとIPアドレスを設定する程度で接続できます。「iwconfig」は、アクセスポイントへの接続に必要なESSIDおよび暗号化キーを登録するときに利用するコマンドです。 - NginxをWebサーバー“以外”でも徹底活用する
Nginxは高速化だけではありません。Webサーバー以外への応用事例として、ロードバランサー、HTTPS対応、WAFとしての利用を紹介します。