firewalldコマンドのチートシート:基本操作

firewalldは、Linuxベースのシステムでネットワークのトラフィックを管理するためのダイナミックなファイアウォール管理ツールです。従来のiptablesに代わるものとして設計され、リアルタイムでの設定変更が可能で、ネットワークのセキュリティを柔軟かつ効率的に管理できます。

主に以下のLinuxディストリビューションで使用可能です。
(これらのディストリビューションでは、デフォルトまたは追加インストールとしてfirewalldが利用できます。)


firewalldが使える主なディストリビューション一覧

1. RHEL系ディストリビューション

  • Red Hat Enterprise Linux (RHEL): デフォルトのファイアウォール管理ツールとしてfirewalldが導入されています。
  • CentOS: RHELをベースにしたオープンソースディストリビューションで、firewalldが同様に利用可能です。
  • Rocky Linux: CentOSの後継ディストリビューションとして登場したRocky Linuxでも、firewalldが標準で利用可能です。
  • AlmaLinux: RHEL互換のディストリビューションで、firewalldが使用できます。

2. Fedora

Fedoraは、firewalldがデフォルトのファイアウォール管理ツールとして提供されています。FedoraはRHELの開発版に位置づけられるため、最新機能のテストにも適しています。

3. SUSE系ディストリビューション

  • openSUSE: openSUSE LeapおよびTumbleweedでもfirewalldが利用可能です。SUSE系ではYaSTが主要な管理ツールですが、firewalldもサポートされています。
  • SUSE Linux Enterprise Server (SLES): 商用向けのSUSEディストリビューションでも、firewalldがオプションとして利用できます。

4. Debian系ディストリビューション

  • Debian: デフォルトではiptablesが使われますが、firewalldも公式リポジトリからインストールして使用できます。
  • Ubuntu: Ubuntuではufw(Uncomplicated Firewall)がデフォルトですが、firewalldもインストールして利用できます。サーバー版やデスクトップ版の両方で使用可能です。

5. Arch系ディストリビューション

Arch Linux: インストール後にfirewalldを追加することで、Arch Linuxでもfirewalldを利用することができます。Archではiptablesなど他のファイアウォールツールもよく使われますが、firewalldもサポートされています。

1. Firewalldの基本操作

サービスの状態確認と操作

サービスのステータス確認

systemctl status firewalld

firewalldの開始

systemctl start firewalld

firewalldの停止

systemctl stop firewalld

firewalldの再起動

systemctl restart firewalld

firewalldの有効化(ブート時に自動起動)

systemctl enable firewalld

firewalldの無効化

systemctl disable firewalld

2. ゾーンの管理

ゾーンの一覧表示

firewall-cmd --get-zones

アクティブなゾーンの確認

firewall-cmd --get-active-zones

ゾーンのデフォルト設定

firewall-cmd --set-default-zone=<zone_name>

インターフェースをゾーンに追加

firewall-cmd --zone=<zone_name> --add-interface=<interface_name> --permanent

インターフェースをゾーンから削除

firewall-cmd --zone=<zone_name> --remove-interface=<interface_name> --permanent

3. サービスとポートの管理

※「–permanent」をつけることで設定を永続化します。つけないでコマンドを実行した場合、その設定は一時的なものとなり、再起動などで設定が消えてしまいます。

サービスの追加

firewall-cmd --zone=<zone_name> --add-service=<service_name> --permanent

サービスの削除

firewall-cmd --zone=<zone_name> --remove-service=<service_name> --permanent

ポートの追加

firewall-cmd --zone=<zone_name> --add-port=<port_number>/<protocol> --permanent

ポートの削除

firewall-cmd --zone=<zone_name> --remove-port=<port_number>/<protocol> --permanent

4. 設定の反映と確認

設定の再読み込み

再読み込み時に、–permanentをつけていない設定はリセットされますので注意してください。

firewall-cmd --reload

設定の確認

firewall-cmd --list-all --zone=<zone_name>

直近の設定変更を反映せずにリセット

firewall-cmd --complete-reload

特定のサービスが許可されているかの確認

firewall-cmd --zone=<zone_name> --query-service=<service_name>

特定のポートが許可されているかの確認

firewall-cmd --zone=<zone_name> --query-port=<port_number>/<protocol>

5. その他の便利なコマンド

ファイアウォールの一時的な無効化

firewall-cmd --panic-on

ファイアウォールの再有効化

firewall-cmd --panic-off

ファイアウォールの現在のステータスを確認

firewall-cmd --state