Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、firewalld を使用して Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法を学びます。まず、firewall-cmd --get-active-zones コマンドを使用して、現在アクティブなゾーンとそれらに関連付けられたネットワークインターフェイスを特定します。

その後、/etc/firewalld ディレクトリにある firewalld の設定ファイルを調べて、ゾーンルールが定義されている場所を理解します。最後に、基礎となる iptables ルールを調べて、firewalld がゾーン設定を実際のパケットフィルタリングルールにどのように変換するかを確認します。この実験は、firewalld が Linux システム上でネットワークセキュリティを管理する仕組みについての基本的な理解を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/ls -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} linux/cat -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} linux/service -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} linux/ifconfig -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} linux/netstat -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} linux/ip -.-> lab-558734{{"Linux でネットワークファイアウォールゾーンがアクティブかどうかを確認する方法"}} end

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.xmltrusted.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 コマンドを使って、firewalldnetfilter で作成したルールを調べることができます。これは、firewalld がゾーンベースのルールを低レベルの iptables ルールにどのように変換するかを理解するのに役立ちます。

現在の iptables ルールを一覧表示するには、iptables コマンドに -L オプションを指定して使用します。ファイアウォールルールを表示するには管理者権限が必要なので、sudo を使用する必要があります。

以下のコマンドを入力し、Enter キーを押します。

sudo iptables -L

大量の出力が表示されます!この出力は、異なる iptables チェイン(INPUTFORWARDOUTPUT など)とその中のルールを示しています。firewalld は、ゾーンやサービスに基づいてトラフィックを管理するために、FWDIN_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 コマンドを使用すると、カーネルによって適用されている実際のパケットフィルタリングルールを確認できます。

このステップで、firewalldiptables との関係についての簡単な紹介は終了です。アクティブなゾーンの確認方法、設定ファイルの場所の特定方法、および基盤となる iptables ルールの調査方法を学びました。

続ける をクリックして、この実験を終了します。

まとめ

この実験では、Linux でアクティブなネットワークファイアウォールゾーンを確認するために firewalld の探索を始めました。firewalld がゾーンを使用してファイアウォールルールを管理し、firewall-cmd --get-active-zones コマンドを使用して現在アクティブなゾーンとそれに関連付けられたネットワークインターフェイスを特定できることを学びました。eth0 インターフェイスで public ゾーンがアクティブである例を見ました。

次に、firewalld の設定ファイルを調べ始め、主な設定ディレクトリが /etc/firewalld であることに注目しました。ディレクトリの内容を表示しようとし、cat はファイル用でありディレクトリには使用できないこと、ディレクトリの内容を一覧表示することが、ゾーン、サービス、その他の要素の設定ファイルを確認する適切な方法であることを理解しました。