「firewalldの設定を変えたいけれど、ゾーンやルールの関係がよくわからない」――そんな声をLinuxサーバーの運用現場でよく耳にします。
RHEL系ディストリビューション(Red Hat Enterprise Linux、CentOS、Rocky Linux、AlmaLinux等)では、firewalldがデフォルトのファイアウォール管理ツールとして採用されています。かつて主流だったiptablesと比べてルール管理が直感的になった一方、「ゾーン」という独自の概念に戸惑う方も少なくありません。
この記事では、firewalldのゾーン・サービス・ポート制御の基本から、実務で使えるコマンド操作までを具体的に解説します。「とりあえず動いているから触らない」を卒業して、意図をもってファイアウォールを管理できるようになりましょう。

firewalldとは?iptablesとの違い
firewalldは、Linux上のパケットフィルタリング(通信の許可・拒否)を管理するサービスです。内部的にはnftables(またはiptables)をバックエンドとして動作しますが、管理者はfirewall-cmdというコマンドラインツールを通じて操作します。
iptablesとの大きな違いは次の3点です。
・ゾーンベースの管理: ネットワークインターフェースごとに「ゾーン」を割り当て、ゾーン単位で許可ルールを定義します
・動的なルール変更: iptablesではルール変更のたびに全ルールを再読み込みする必要がありましたが、firewalldはサービスを停止せずにルールを追加・削除できます
・永続設定と一時設定の分離: --permanentオプションで永続ルールを、オプションなしで一時的なルール(再起動で消える)を明確に使い分けられます
Linuxのネットワーク設定を基礎から学びたい方は、姉妹サイトLinuxMaster.JPもあわせてご覧ください。
firewalldを使わないとどうなるか
firewalldを正しく設定していない、あるいは無効化したままサーバーを公開するとどうなるか。防御を考えるうえで、まずリスクを理解しておきましょう。
1. 不要なポートが外部に露出する
データベース(MySQL: 3306番、PostgreSQL: 5432番)や管理ツール(Webmin: 10000番等)がインターネットから直接アクセスできる状態になります。攻撃者はポートスキャンで開いているポートを自動的に探索しているため、意図しないサービスが外部に見えているだけで攻撃の起点になり得ます。
2. 内部ネットワークとの境界がなくなる
ファイアウォールがなければ、すべてのネットワークからのアクセスが同じ条件で処理されます。社内の信頼できるネットワークと外部のインターネットを区別できないため、万が一内部に侵入された場合の横展開(ラテラルムーブメント)を防ぐ手段がありません。
3. 攻撃の検知が遅れる
firewalldのログ機能を活用すれば、拒否された通信の記録から異常なアクセスパターンを検知できます。ファイアウォールが無効だとこのログ自体が生成されないため、攻撃を受けていること自体に気づきにくくなります。

firewalldの基本操作と設定手順
ここからは実際のコマンドで操作手順を解説します。以下の操作はroot権限(またはsudo)で実行してください。
1. firewalldの状態確認と起動
まず、firewalldが動作しているか確認します。
# firewalldの状態を確認 sudo systemctl status firewalld # 停止している場合は起動 sudo systemctl start firewalld # OS起動時に自動起動するよう設定 sudo systemctl enable firewalld
Active: active (running) と表示されれば正常に動作しています。
2. ゾーンの概念を理解する
firewalldの最大の特徴は「ゾーン」による管理です。ゾーンとは、ネットワークの信頼度に応じた通信ルールのセットです。各ネットワークインターフェースにゾーンを割り当て、そのゾーンに定義されたルールで通信を制御します。
代表的なゾーンは次のとおりです。
・drop: すべての受信パケットを破棄する。応答も返さない最も厳格なゾーン
・block: すべての受信接続を拒否するが、ICMP拒否メッセージを返す
・public: 公開ネットワーク向け。デフォルトではSSHとDHCPv6クライアントのみ許可
・work: 職場ネットワーク向け。publicより若干緩い設定
・home: 自宅ネットワーク向け。基本的なサービスが許可されている
・trusted: すべての通信を許可する。信頼できるネットワーク専用
現在のデフォルトゾーンと、各インターフェースの割り当てを確認するには次のコマンドを使います。
# デフォルトゾーンを確認 firewall-cmd --get-default-zone # アクティブなゾーンとインターフェースの対応を確認 firewall-cmd --get-active-zones # 利用可能な全ゾーンを一覧表示 firewall-cmd --get-zones
多くの環境ではpublicがデフォルトゾーンに設定されています。外部に公開するサーバーであれば、publicゾーンをベースに必要なサービスだけを許可する運用が基本です。
3. 現在のルールを確認する(–list-all)
設定変更の前に、現在のルールを把握しておくことが鉄則です。
# デフォルトゾーンのルールを全表示 firewall-cmd --list-all # 特定のゾーンを指定して確認 firewall-cmd --zone=public --list-all # 全ゾーンのルールを一括表示 firewall-cmd --list-all-zones
出力には、許可されているサービス、ポート、リッチルール(詳細な制御ルール)等が表示されます。変更前の状態をメモやログとして残しておくと、トラブル時に切り戻しがしやすくなります。
4. サービスを許可・削除する(–add-service / –remove-service)
firewalldでは「サービス」という単位でポートの許可を管理できます。HTTPやHTTPS等のよく使うサービスは事前に定義されているため、ポート番号を覚えなくても設定できます。
# HTTPを一時的に許可(再起動すると消える) sudo firewall-cmd --add-service=http # HTTPSを永続的に許可 sudo firewall-cmd --permanent --add-service=https # 永続設定を反映 sudo firewall-cmd --reload # 不要になったサービスを削除 sudo firewall-cmd --permanent --remove-service=dhcpv6-client sudo firewall-cmd --reload
定義済みサービスの一覧は firewall-cmd --get-services で確認できます。HTTP、HTTPS、SSH、DNS、FTP、MySQL、PostgreSQL等、主要なサービスが登録されています。
5. ポート番号で直接許可する(–add-port)
定義済みサービスに含まれない独自アプリケーション用のポートは、ポート番号を直接指定して許可します。
# TCP 8080番ポートを永続的に許可 sudo firewall-cmd --permanent --add-port=8080/tcp # UDP 514番ポートを永続的に許可(syslog用) sudo firewall-cmd --permanent --add-port=514/udp # ポート範囲を指定して許可(1024〜1030番) sudo firewall-cmd --permanent --add-port=1024-1030/tcp # 設定を反映 sudo firewall-cmd --reload # 許可済みポートを確認 firewall-cmd --list-ports
ポート指定は「ポート番号/プロトコル」の形式です。プロトコルはtcpまたはudpを指定します。
6. 特定のIPアドレスからのアクセスだけ許可する(リッチルール)
「管理画面には社内のIPアドレスからしかアクセスさせたくない」といった要件にはリッチルール(rich rule)を使います。
# 特定IPからのSSHアクセスのみ許可 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' # 特定サブネットからのHTTPアクセスを許可 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" service name="http" accept' # 設定を反映 sudo firewall-cmd --reload # リッチルールの確認 firewall-cmd --list-rich-rules
リッチルールを使うと、送信元IP、ポート、プロトコルを組み合わせたきめ細かい制御が可能です。管理用ポートへのアクセスをIP制限するのは、サーバーセキュリティの基本中の基本です。
7. 設定を永続化する(–permanent と –reload)
firewalldで最も間違えやすいポイントが、一時設定と永続設定の違いです。
・–permanentなし: 即座に反映されるが、firewalld再起動やOS再起動で消える
・–permanentあり: 設定ファイルに書き込まれるが、--reloadするまで反映されない
実務では「–permanentで設定した後に–reloadで反映する」という手順を基本にしてください。テスト目的で一時ルールを追加し、問題がなければ永続化するという使い方もできます。
# 永続設定を反映(ランタイムに適用) sudo firewall-cmd --reload # 現在のランタイム設定を永続設定として保存 sudo firewall-cmd --runtime-to-permanent
--runtime-to-permanentは、一時的に追加した複数のルールをまとめて永続化したいときに便利です。
中小企業でも今日からできること
firewalldの設定は、大規模な予算やセキュリティ専門チームがなくても実施できます。情シス担当者が1人でも、次のステップを踏めばサーバーの防御力は大きく向上します。
・まず現状を確認する: firewall-cmd --list-allで、今どのポートが開いているか把握するところから始めましょう
・不要なサービスを削除する: デフォルトで許可されているが使っていないサービスがあれば、--remove-serviceで閉じます
・SSH等の管理ポートはIP制限する: リッチルールで社内IPからのアクセスのみに絞れば、ブルートフォース攻撃のリスクが大幅に下がります
・設定変更のログを残す: いつ・誰が・何を変更したかを記録する習慣をつけておくと、トラブル時の原因特定が速くなります
よくある誤解と注意点
1. 「firewalldを止めれば通信トラブルが直る」は危険
通信がうまくいかないときにsystemctl stop firewalldで解決しようとする方がいますが、これは全ポートを無防備に開放するのと同じです。原因を切り分けるなら、一時ルールで特定ポートを試験的に開けるほうが安全です。
2. iptablesとfirewalldの併用はトラブルの元
firewalldとiptablesコマンドを同時に使うと、ルールが競合して予期しない挙動を引き起こします。RHEL 7以降の環境ではfirewalldに統一するのが原則です。
3. –permanentを付け忘れて「設定が消えた」
先述のとおり、–permanentなしのルールは再起動で失われます。本番環境では必ず–permanentオプションを付け、–reloadで反映する手順を守りましょう。
4. 「ファイアウォールさえあれば安全」ではない
firewalldはネットワーク層の防御手段の一つであり、アプリケーションの脆弱性やアカウント管理の甘さまではカバーしません。OS・ミドルウェアのアップデート、適切なアカウント管理、ログ監視等と組み合わせた多層防御が重要です。

本記事のまとめ
firewalldの基本操作と、実務で押さえるべきポイントを整理します。
| 操作 | コマンド例 | 用途 |
|---|---|---|
| 状態確認 | firewall-cmd –list-all | 現在のルール一覧を表示 |
| サービス許可 | firewall-cmd –permanent –add-service=https | HTTPS通信を恒久的に許可 |
| ポート許可 | firewall-cmd –permanent –add-port=8080/tcp | 独自ポートを開放 |
| IP制限 | firewall-cmd –permanent –add-rich-rule=… | 特定IPからのみアクセス許可 |
| 設定反映 | firewall-cmd –reload | 永続設定をランタイムに適用 |
| ゾーン確認 | firewall-cmd –get-active-zones | インターフェースのゾーン割り当て確認 |
ファイアウォールの設定は「一度やって終わり」ではなく、サービスの追加・変更に合わせて継続的に見直すものです。まずはfirewall-cmd --list-allで現在の状態を確認するところから始めてみてください。
Linuxサーバーのセキュリティ、自信を持って設定できますか?
firewalldはLinuxセキュリティの入り口です。次のステップとして、SELinuxやログ監視、脆弱性管理まで体系的に学んでみませんか。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。


コメント