firewalldの概要
RHEL7の公式ドキュメントからfirewalldの概要を引用します。
firewalldは、ゾーン および サービス の概念を使用して、トラフィック管理を簡素化します。ゾーンは、事前定義したルールセットです。ネットワークインターフェイスおよびソースをゾーンに割り当てることができます。許可されているトラフィックは、コンピューターが接続するネットワークと、このネットワークが割り当てられているセキュリティーレベルに従います。ファイアウォールサービスは、特定のサービスに着信トラフィックを許可するのに必要なすべての設定を扱う事前定義のルールで、ゾーンに適用されます。

firewalldの設定をする際は、firewalld.serviceをsystemctl restart firewalldコマンドで再起動せずともfirewalldコマンドを実行して設定を読み込むだけで問題ありません。
firewalldは、D-Busインターフェイスを使用して動的にカスタマイズ可能なホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。
firewalldのサービス起動
firewalldの起動状態を確認します。
systemctl status firewalld
起動していなければ以下のコマンドでfirewalldを起動します。
systemctl start firewalld
停止する場合は以下。
systemctl stop firewalld
再起動する場合は以下。
systemctl restart firewalld
firewalldの通信許可設定を確認する
firewall-cmd --list-all-zones
| zone名 | 説明 |
|---|---|
| public | デフォルトで使用されるルール |
| work | 会社のネットワークで想定されるルール (信頼できるネットワーク用) |
| home | 家庭内での利用を想定したルール (workより緩い) |
| internal | ファイアウォールを構築するのに使うルール。内側のインタフェース用 |
| external | ファイアウォールを構築するのに使うルール。外側のインタフェース用 |
| dmz | ファイアウォールを構築するのに使うルール。DMZのインタフェース用 |
| block | 送信の戻りパケットだけを許可して、受信パケットを全て拒否するルール |
| drop | 送信の戻りパケットだけを許可して、受信パケットを全て破棄するルール |
| trusted | 全ての通信を許可するルール |
以下のコマンドでアクティブになっているゾーンを確認します。
# firewall-cmd --get-active-zones
以下のコマンドでデフォルトのゾーンを確認します。
# firewall-cmd --get-default-zone
httpとhttpsの通信をfirewalldで許可する
以下のコマンドを実行してfirewalldでhttpとhttpsの通信を許可します。–zoneにはpublicを指定します。–permanentをつけることで永続的に設定できます。–permanentオプションをつけない場合は再起動した場合に設定が削除されます。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload
なお、systemctl restart firewalldコマンドでfirewalldを再起動する必要はありません。
firewalldは、D-Busインターフェイスを使用して動的にカスタマイズ可能なホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。
httpが許可されていることを以下のコマンドで確認します。以下のコマンドの出力結果にhttpとhttpsが含まれていれば問題なくhttpとhttpsの通信がfirewalldで許可されています。
# firewall-cmd --list-services
httpとhttpsの通信をfirewalldで許可しない状態に戻すに配下のコマンドを実行します。
# firewall-cmd --remove-service=http --zone=public --permanent
# firewall-cmd --remove-service=https --zone=public --permanent
# firewall-cmd --reload
以下のコマンドを実行して出力結果にhttpとhttpsが存在していないことを確認します。
# firewall-cmd --list-services
ポート番号を指定してfirewalldで通信を許可する
以下のコマンドを実行して特定の通信のポート番号を許可します。
以下2コマンドは/udpと/tcpの違いがあります。
# firewall-cmd --add-port=80/udp --zone=public --permanent
# firewall-cmd --add-port=80/tcp --zone=public --permanent
ポート番号の範囲を指定して通信を許可するには以下のようにコマンドを実行します。
# firewall-cmd --add-port=138-139/udp --zone=public --permanent
追加した設定を削除するには–add-portを–remove-portに変更します。
# firewall-cmd --remove-port=80/udp --zone=public --permanent
# firewall-cmd --remove-port=80/tcp --zone=public --permanent
参考資料
本記事の作成に使用した参考資料を掲載します。


