はじめに
この実験では、firewalld を使用して Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法を学びます。まず、firewall-cmd --get-active-zones コマンドを使用して、現在アクティブなゾーンとそれらに関連付けられたネットワークインターフェイスを特定します。
その後、/etc/firewalld ディレクトリにある firewalld の設定ファイルを調べて、ゾーンルールが定義されている場所を理解します。最後に、基礎となる iptables ルールを調べて、firewalld がゾーン設定を実際のパケットフィルタリングルールにどのように変換するかを確認します。この実験は、firewalld が Linux システム上でネットワークセキュリティを管理する仕組みについての基本的な理解を提供します。
firewall-cmd --get-active-zones でゾーンを確認する
このステップでは、Linux の動的ファイアウォール管理ツールである firewalld の探索を始めます。ファイアウォールは、システムに出入りするトラフィックを制御するネットワークセキュリティにおいて重要な役割を果たします。
firewalld は、ファイアウォールルールを管理するために「ゾーン」という概念を使用しています。ゾーンは、ネットワーク接続の信頼レベルを定義します。異なるゾーンには異なるデフォルトルールがあります。たとえば、「public」ゾーンは「trusted」ゾーンよりも厳格なルールが設定されている場合があります。
システム上で現在アクティブなゾーンを確認しましょう。firewall-cmd コマンドに --get-active-zones オプションを指定して使用します。
ターミナルが開いていない場合は、開きます。デスクトップの左側にある Xfce Terminal アイコンから開くことができます。
以下のコマンドを入力し、Enter キーを押します。
firewall-cmd --get-active-zones
以下のような出力が表示されるはずです。
public
interfaces: eth0
この出力から、public ゾーンが現在アクティブであり、eth0 ネットワークインターフェイスに関連付けられていることがわかります。eth0 インターフェイスは、仮想マシンがネットワークに接続するためのものです。
アクティブなゾーンを理解することは、firewalld でファイアウォールを管理する最初のステップです。次のステップでは、設定ファイルとルールの適用方法を見ていきます。
続ける をクリックして次に進みます。
cat /etc/firewalld で firewalld の設定を確認する
前のステップでは、どの firewalld ゾーンがアクティブであるかを確認しました。次に、firewalld が設定ファイルを保存している場所を見てみましょう。これらのファイルには、各ゾーンのルールが定義されています。
firewalld の主な設定ディレクトリは /etc/firewalld です。このディレクトリ内には、ゾーン、サービス、その他の設定要素のサブディレクトリがあります。
cat コマンドを使用してファイルの内容を表示できます。/etc/firewalld ディレクトリ内に何があるかを確認するために、cat コマンドを使ってみることもできますが、cat はファイル用に設計されており、ディレクトリには使用できません。代わりに、ls コマンドを使用してディレクトリの内容を一覧表示しましょう。
以下のコマンドを入力し、Enter キーを押します。
ls /etc/firewalld/
以下のようなディレクトリとファイルの一覧が表示されるはずです。
icmptypes lockdown-whitelist.xml modules panic-iface.conf services zones
これは firewalld 設定の構造を示しています。zones ディレクトリは特に重要で、各ゾーンの設定ファイル(public.xml、trusted.xml など)が含まれています。
zones ディレクトリの中身を見てみましょう。次のコマンドを入力します。
ls /etc/firewalld/zones/
各事前定義ゾーンに対応する XML ファイルの一覧が表示されます。
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml
これらの XML ファイルには、各ゾーンの具体的なルールが含まれています。たとえば、public.xml には、前のステップでアクティブであることが確認された public ゾーンのルールが定義されています。
この実験では XML ファイルの詳細には踏み込みませんが、設定が保存されている場所を知ることは、firewalld を理解する上で重要なポイントです。
続ける をクリックして次のステップに進みます。
iptables -L で iptables ルールを確認する
多くの Linux ディストリビューションでは、firewalld がファイアウォールを管理する最新の方法ですが、多くの場合、firewalld は基盤となる netfilter フレームワークを設定することで動作します。netfilter は従来、iptables コマンドで管理されています。
firewalld を使用している場合でも、iptables コマンドを使って、firewalld が netfilter で作成したルールを調べることができます。これは、firewalld がゾーンベースのルールを低レベルの iptables ルールにどのように変換するかを理解するのに役立ちます。
現在の iptables ルールを一覧表示するには、iptables コマンドに -L オプションを指定して使用します。ファイアウォールルールを表示するには管理者権限が必要なので、sudo を使用する必要があります。
以下のコマンドを入力し、Enter キーを押します。
sudo iptables -L
大量の出力が表示されます!この出力は、異なる iptables チェイン(INPUT、FORWARD、OUTPUT など)とその中のルールを示しています。firewalld は、ゾーンやサービスに基づいてトラフィックを管理するために、FWD、IN_、OUT_ などの接頭辞が付いた独自のチェインを作成します。
以下は、表示される出力の一部の例です(正確な出力は異なります)。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
...
Chain FORWARD (policy ACCEPT)
target prot opt source destination
...
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
...
Chain INPUT_ZONES (1 references)
target prot opt source destination
FWD_public all -- anywhere anywhere [goto] /* zone public */
...
現時点でこの出力のすべての行を理解する必要はありません。重要なのは、firewalld がこれらの iptables ルールを背後で積極的に管理しているということです。iptables -L コマンドを使用すると、カーネルによって適用されている実際のパケットフィルタリングルールを確認できます。
このステップで、firewalld と iptables との関係についての簡単な紹介は終了です。アクティブなゾーンの確認方法、設定ファイルの場所の特定方法、および基盤となる iptables ルールの調査方法を学びました。
続ける をクリックして、この実験を終了します。
まとめ
この実験では、Linux でアクティブなネットワークファイアウォールゾーンを確認するために firewalld の探索を始めました。firewalld がゾーンを使用してファイアウォールルールを管理し、firewall-cmd --get-active-zones コマンドを使用して現在アクティブなゾーンとそれに関連付けられたネットワークインターフェイスを特定できることを学びました。eth0 インターフェイスで public ゾーンがアクティブである例を見ました。
次に、firewalld の設定ファイルを調べ始め、主な設定ディレクトリが /etc/firewalld であることに注目しました。ディレクトリの内容を表示しようとし、cat はファイル用でありディレクトリには使用できないこと、ディレクトリの内容を一覧表示することが、ゾーン、サービス、その他の要素の設定ファイルを確認する適切な方法であることを理解しました。



