以下の内容はhttps://blog.hapins.net/entry/2025/03/27/161425より取得しました。


RHEL 10 : ファイアウォール設定(Firewalld)の基本的な使い方

こんにちは!

今日は、RHEL 10環境でFirewalldの基本的な使い方についてご紹介します。

まず、ちょっとした個人的なニュースから。8年ほど使い続けたパソコンがついに壊れてしまいました。これを機に新しいデスクトップを購入!勉強のためにVMware Workstation Proをインストールし、RHEL10(開発者サブスクリプション)を使い始めました。しばらくはこの環境で記事を書いていこうと思います。

ちなみに、RedHat Subscription Managerに登録すれば、RHELを一生無料で使えるようですが、私の場合はなぜか登録が失敗続き。もし解決したら、その方法も記事にしたいですね。

それでは、本題に入ります!

1. Firewalldのインストールとステータス確認

まず、Firewalldがインストールされていることを確認します。

$ sudo systemctl status firewalld

active (running)と表示されているので、Firewalldはすでに実行中です。

Firewalldがインストールされていない場合・実行中ではない場合は以下を参考してください。

※① インストールされていない場合

$ sudo dnf install firewalld

※② Firewalldが起動していない場合

$ sudo systemctl start firewalld

※③ システム起動時に自動的に起動させたい場合

$ sudo systemctl enable firewalld

2. ゾーンの確認と変更

Firewalldは「ゾーン」を使って、異なるネットワークに対して異なるルールを適用します。

デフォルトで使用されるゾーンはpublicです。

$ sudo firewall-cmd --get-active-zones

現在有効なゾーンがpublicということが確認できました。

※publicゾーンに変更したい場合

$ sudo firewall-cmd --set-default-zone=public

3. サービスの許可

特定のサービス(ここではHTTPやSSHについて説明します)を許可するには、以下のコマンドを使用します。

● HTTP(ポート80)の許可:

$ sudo firewall-cmd --zone=public --add-service=http --permanent

SSH(ポート80)の許可:

$ sudo firewall-cmd --zone=public --add-service=ssh --permanent

--permanentオプションを使うことで、変更を永続化します。

設定の確認のため、以下のコマンドを実行してみます。

$ sudo firewall-cmd --zone=public --list-services

先ほど許可したhttpとsshが見えますよね。

ちなみに、ここのcockpitとdhcpv6-clientという出力について調べてみたんですが、

cockpitはLinuxシステムを管理するためのウェブベースのインターフェースを提供するツールです。

dhcpv6-clientはIPv6アドレス専用 のDHCPクライアントらしいです。IPv6アドレスを自動設定してくれたり、デフォルトゲートウェイDNSサーバーの設定も自動的に取得してくれるようです。

4. サービスの削除と確認

許可したサービスを後で削除したい場合は、以下のコマンドを使います。

ここでは、httpサービスだけを削除してみます。

$ sudo firewall-cmd --zone=public --remove-service=http --permanent

その後、設定を反映させるためにリロードする必要があります。

(リロードなしで--list-servicesコマンドで確認してみましたが、やはり反映されていませんでした🥲)

firewall設定のリロードには以下のコマンドを使います。

$ sudo firewall-cmd --reload

リロードが終わったので、--list-servicesでhttpサービスが削除されたか確認してみます。

$ sudo firewall-cmd --zone=public --list-services

httpサービスが削除されたことが確認できます😊。

5. 特定のポートの解放

特定のポートを開放したい場合は、ポート番号を指定して追加できます。

例えば、ポート8080を開放したい場合は、以下のコマンドを使います。

$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

$ sudo firewall-cmd --reload

ポートの情報は以下のコマンドで確認します。

$ sudo firewall-cmd --list-ports

6. Firewalldの現在の設定確認

最後に、Firewalldの現在のゾーンの設定内容をすべて表示してみます。

ここで本日の作業内容が全部表示されるはずです。

$ sudo firewall-cmd --list all

sudo firewall-cmd --list-allを実行すると、現在設定されているFirewalldの状態を詳細に確認できます。

上記の出力から見ると、ゾーンがpublicであること、解放されているサービス(cockpit, dhcpv6-client, ssh)やポート(8080/tcp)、転送やNATの設定が確認できます。

・public(default, active)

ゾーン名が public で、このゾーンが現在 アクティブ(有効)であることを示しています。また、default とも表示されているので、これはデフォルトのゾーンであることを意味します。つまり、新しい接続は自動的にこのゾーンに適用されます。

・target : default

ゾーンのターゲットが default に設定されていることを示します。ターゲットは、パケットがこのゾーンに一致した場合に実行されるアクションです。default は特に指定されたアクションがない場合に通常使用されます。

(※パケット:コンピュータネットワークでデータを送受信する際のデータの単位)

・interfaces: ens160 

このゾーンに関連付けられているネットワークインターフェースです。ens160 インターフェースが public ゾーンに関連付けられていることがわかります。ちなみにens160はVMwareなどの仮想環境でよく見られる名前らしいです。つまり私のPCに割り当てられたネットワークインターフェースです。

・services: cockpit dhcpv6-client ssh 

許可されているサービスです。現在、cockpit(管理インターフェース用サービス)、dhcpv6-client(DHCPv6クライアント用サービス)、sshSSH接続)が許可されています。

ports: 8080/tcp 

開放されているポートです。8080/tcp ポートが開放されていることがわかります。これは、Webアプリケーションなどでよく使われるポートです。

まとめ

今日は、RHEL10環境でのFirewalldの基本的な操作について学びました。

個人的には sudo firewall-cmd --list-all コマンドで詳細な設定を確認するのが少し難しいと感じましたが、

使いこなせるようになれば、ネットワークの管理がもっと楽になると思います。

最後まで読んでいただき、ありがとうございました!




以上の内容はhttps://blog.hapins.net/entry/2025/03/27/161425より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14