CentOS 8 は既に通常の CentOS Linux としてはサポートが終了しています。このページは新規構築を推奨するものではなく、過去環境の保守、移行前調査、設定の読み解きに使うためのレガシー Linux 手順です。新規構築では、現在サポートされているディストリビューションを利用してください。
この記事では、CentOS 8 の firewalld で zone とサービス許可を確認する基本を扱います。firewalld は単なるポート開放コマンドではなく、通信をどの zone に所属させ、どのサービスやポートを許可するかを管理する仕組みです。既存環境を読むときは、runtime と permanent の差分も確認します。
zone と service の考え方
| 項目 | 意味 |
| zone | インターフェイスや送信元に対する信頼レベル |
| service | ポート番号とプロトコルを名前でまとめた定義 |
| permanent | 再起動後も残る永続設定 |
| runtime | 現在動いている一時設定 |
現在の状態を確認する
最初に firewalld が動いているか、どの zone が有効か、インターフェイスがどの zone に所属しているかを確認します。--list-all-zones は情報量が多いため、既存環境を棚卸しするときに使います。
firewall-cmd --state
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
firewall-cmd --list-all
firewall-cmd --list-all-zonesruntime と permanent の差分を見る
firewalld では、現在だけ有効な runtime 設定と、再起動後も残る permanent 設定が分かれています。作業後に --reload すると runtime が permanent に寄るため、変更前後の差分を見ておくと意図しない開放を見つけやすくなります。
firewall-cmd --list-all
firewall-cmd --permanent --list-allサービスを許可する
SSH や HTTP など、firewalld に service 定義があるものは、ポート番号を直接指定するより service として許可した方が読みやすくなります。どの zone に追加するかを明示すると、後から設定を追いやすくなります。
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
firewall-cmd --zone=public --list-servicesポートを直接許可する場合
service 定義がない独自アプリケーションでは、ポート番号を直接許可します。ただし、後で見た時に用途が分かりにくいため、運用では設計メモや構成管理側にも用途を残しておく方が安全です。
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-ports許可を取り消す
不要になったサービスやポートは削除します。削除後は reload して、runtime と permanent の両方で消えていることを確認します。
firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-allインターフェイスと zone を確認する
複数 NIC や VLAN を使う環境では、どのインターフェイスがどの zone に入っているかが重要です。意図しない zone に入っていると、許可したつもりの通信が通らなかったり、逆に想定外の通信を許可したりします。
nmcli connection show
firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-interfaces確認するポイント
- default zone と active zone が期待通りか。
- runtime と permanent に意図しない差分がないか。
- service で許可できるものを、無理に port 指定にしていないか。
- 不要になった許可を削除しているか。
- SSH など管理入口を閉じる変更を行う前に、代替経路を確認しているか。
まとめ
firewalld は、通信許可を zone と service で管理する仕組みです。CentOS 8 の既存環境でも、何となくポートを開けるのではなく、どの zone で何を許可しているか、runtime と permanent に差分がないかを確認すると、後から構成を読みやすくなります。
関連する記事
参考書籍
書籍
Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

