firewalldの操作やルールの設定法などについて紹介していく。

 まず、firewalld自体を起動/終了したり、有効化/無効化したりする方法を示そう。RHEL 7では、サービス管理機構がSysVinitからsystemdに変わった(本連載の[起動処理編]を参照)。それに伴い、firewalldの起動や終了といった操作には、他のサービスと同様にsystemctlコマンドを用いる。

【起動】
# systemctl start firewalld [Enter]

【終了】
# systemctl stop firewalld [Enter]

【有効化】
# systemctl enable firewalld [Enter]

【無効化】
# systemctl disable firewalld [Enter]

設定で大切な2つのポイント

 firewalldの設定は、GUIとCUIのいずれの環境でも実施可能である。どちらの環境で作業しても、編集される設定ファイルは同じだ。設定におけるポイントは2つある。一つは、firewalldが設定ファイルを参照する順序だ。以下の順に参照していく。

(1)/etc/firewalldディレクトリー以下の設定ファイル。ユーザーが作成・変更した内容が保存されている

(2)/usr/lib/firewalldディレクトリー以下の設定ファイル

 (1)に設定ファイルが存在しない場合に、(2)のファイルが参照される。(2)のファイルはテンプレートなので、直接編集してはいけない。もし誤って削除してしまった場合には、図2に示す手順でfirewalldのRPMパッケージから抜き出せばよい。

# mkdir /tmp/firewalld/ [Enter]
# cd /tmp/firewalld/ [Enter]
# yumdownloader firewalld [Enter]
# rpm2cpio firewalld | cpio -id [Enter]
# tree usr/lib/firewalld/ [Enter]
usr/lib/firewalld/ 
├── icmptypes
│   ├── destination-unreachable.xml
│   ├── echo-reply.xml
│   ├── echo-request.xml
│   ├── parameter-problem.xml
│   ├── redirect.xml
│   ├── router-advertisement.xml
│   ├── router-solicitation.xml
│   ├── source-quench.xml
│   └── time-exceeded.xml
├── services
│   ├── amanda-client.xml
│   ├── bacula-client.xml
......
図2●firewalldのRPMパッケージから設定ファイルを抜き出す手順

 もう一つのポイントは、ルールを変更する際にその変更が一時的なものなのか、それとも恒久的なものなのかを明確にしておくことである。

 従来のiptables/ip6tablesで恒久的な変更を行う場合は、serviceコマンドにsaveオプションを指定し、メモリー上の設定内容全体をディスクに保存していた。firewalldでは、個々のルールに対して一時的なものか、あるいは恒久的なものかを個別に指定できる。また、あるルールに対して指定した時間だけ有効にすることも可能である。ファイアウォールのルールをテストする際などに、指定した時間だけ有効に設定する機能を利用すると、トライ&エラーで設定を突き詰めていく作業の効率が高まるだろう。