Linux でネットワークパケットフィルタが有効かどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

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

はじめに

この実験では、Linux でネットワークパケットフィルタがアクティブかどうかを確認する方法を学びます。iptables を使用した従来の方法でファイアウォールルールを一覧表示し、新しい nftables フレームワークのルールセットを一覧表示することで調査します。最後に、/proc/sys/net ディレクトリ内の関連ファイルを調べることでフィルタ設定を検証し、Linux システムでのネットワークパケットフィルタリングの状態を判断する方法を包括的に理解します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/cat -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} linux/cd -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} linux/sudo -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} linux/ifconfig -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} linux/netstat -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} linux/ip -.-> lab-558739{{"Linux でネットワークパケットフィルタが有効かどうかを確認する方法"}} end

iptables -L で iptables ルールを一覧表示する

このステップでは、iptables コマンドを使用して現在のファイアウォールルールを表示する方法を学びます。iptables は、Linux カーネルファイアウォールを設定するために使用される従来のコマンドラインユーティリティです。

ファイアウォールはネットワークセキュリティに不可欠です。一連のルールに基づいて、着信および発信ネットワークトラフィックを制御します。これらのルールによって、特定の接続を許可するかブロックするかが決まります。

現在の iptables ルールを一覧表示するには、-L オプションを使用します。このオプションは、iptables に指定されたチェイン内のルールを一覧表示するよう指示します。

まだ開いていない場合は、ターミナルを開きます。次のコマンドを入力して Enter キーを押します。

sudo iptables -L

ファイアウォールルールを表示するには管理者権限が必要なので、sudo を使用する必要があります。

次のような出力が表示されます。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

この出力は、3 つのデフォルトチェイン (INPUTFORWARDOUTPUT) のルールを示しています。

  • INPUT: ローカルマシンを宛先とするトラフィックを制御します。
  • FORWARD: マシンを通過するトラフィック(ルーティングに使用)を制御します。
  • OUTPUT: ローカルマシンから発信されるトラフィックを制御します。

policy ACCEPT は、特定のルールに一致しない場合、これらのチェインではデフォルトでトラフィックが許可されることを意味します。

特定のルールが設定されている場合、それらは各チェインの下に一覧表示され、ターゲット(例:ACCEPT、DROP)、プロトコル(例:tcp、udp)、ソースおよび宛先の IP アドレス、ポートなどの詳細が表示されます。

現時点では、デフォルトの設定はシンプルですが、iptables を使用して現在のルールを表示することに成功しました。

続ける をクリックして次のステップに進みます。

nft list ruleset で nftables を確認する

このステップでは、iptables の後継である nftables を調べます。iptables は依然として広く使用されていますが、nftables はパケットフィルタリングとネットワークアドレス変換 (NAT) により柔軟で効率的なフレームワークを提供します。

nftablesnft コマンドラインユーティリティを使用してルールセットを管理します。ルールセットは、ネットワークトラフィックの処理方法を定義するテーブル、チェイン、およびルールの集合です。

現在の nftables ルールセットを表示するには、list ruleset コマンドを使用します。

ターミナルに次のコマンドを入力して Enter キーを押します。

sudo nft list ruleset

再び、ファイアウォールルールを表示するには管理者権限が必要なので、sudo が必要です。

次のような出力が表示される場合があります。また、nftables ルールが設定されていない場合は空になることもあります。

table ip filter {
	chain INPUT {
		type filter hook input priority 0; policy accept;
	}

	chain FORWARD {
		type filter hook forward priority 0; policy accept;
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
	}
}

この出力は、ip アドレスファミリの filter という名前のテーブルを持つ基本的な nftables ルールセットを示しています。このテーブル内には、iptables と同様に、INPUTFORWARDOUTPUT の 3 つのチェインがあります。

  • table ip filter: IPv4 トラフィック用の filter という名前のテーブルを定義します。
  • chain INPUT { ... }: 入力チェインを定義します。
  • type filter hook input priority 0;: これが入力ネットワークパスにフックされたフィルタチェインであり、優先度が 0 であることを指定します。
  • policy accept;: このチェインのデフォルトポリシーをトラフィックを許可するように設定します。

特定のルールが定義されている場合、それらはチェインブロック内に一覧表示されます。

iptables -Lnft list ruleset の出力を比較することで、どのファイアウォールシステムがシステム上のルールをアクティブに管理しているか、または両方が存在するかを把握することができます。最新のシステムでは、nftables がデフォルトになりつつあります。

これで、nft を使用して現在の nftables ルールセットを表示することに成功しました。

続ける をクリックして次に進みます。

/proc/sys/net のフィルタ設定を確認する

このステップでは、/proc/sys/net ディレクトリ内のファイルを調べることで、いくつかのカーネルレベルのネットワークフィルタリング設定を調べます。/proc ファイルシステムは、プロセスに関する情報やその他のシステム情報を提供する仮想ファイルシステムです。/proc/sys ディレクトリには、実行時にカーネルパラメータを表示および変更できるファイルが含まれています。

具体的には、ネットワークフィルタリングと転送に関連する設定を見ていきます。

cd コマンドを使用して関連するディレクトリに移動します。

cd /proc/sys/net/ipv4/conf/all/

/proc/sys/net/ipv4/conf/all/ ディレクトリには、すべてのネットワークインターフェイスに適用される設定ファイルが含まれています。

では、転送に関連するファイルの内容を表示しましょう。cat コマンドを使用して forwarding ファイルの内容を表示します。

cat forwarding

出力はおそらく 0 または 1 になります。

0
  • 0: IP 転送が無効になっていることを示します。これは、システムが異なるネットワークインターフェイス間でパケットを転送しないことを意味します。
  • 1: IP 転送が有効になっていることを示します。これは、ルーターまたはゲートウェイとして機能するシステムに必要です。

次に、ソースルートオプションを持つ着信パケットのフィルタリングに関連する設定を見てみましょう。このオプションは、時に悪意のある方法で使用されることがあります。accept_source_route ファイルの内容を表示します。

cat accept_source_route

出力はおそらく 0 になります。

0
  • 0: システムがソースルートオプションを持つパケットを無視することを示します。これは一般的なセキュリティ対策です。
  • 1: システムがソースルートオプションを持つパケットを受け入れることを示します。

/proc/sys/net 内のこれらのファイルは、カーネルがネットワークトラフィックをどのように処理するように構成されているかを低レベルで示しています。iptablesnftables がフィルタリングのルールを管理する一方で、これらのカーネルパラメータは転送や特定のパケットオプションの扱いなどの基本的なネットワーク動作を制御します。

これで、/proc ファイルシステムを使用してカーネルのネットワークフィルタリング設定を調べることに成功しました。

続ける をクリックして実験を完了します。

まとめ

この実験では、一般的なファイアウォールツールの設定を調べることで、Linux でネットワークパケットフィルタが有効になっているかどうかを確認する方法を学びました。まず、iptables -L コマンドを使用して、従来の iptables ユーティリティで設定された現在のルールを一覧表示し、デフォルトのチェイン (INPUT、FORWARD、OUTPUT) とそれらのポリシーを理解しました。

次に、iptables の現代的な代替手段である nftables を、nft list ruleset コマンドを使用してその設定を表示することで調べました。最後に、カーネルのネットワーク設定を公開する /proc/sys/net ディレクトリ内の関連パラメータを確認することで、より低レベルでフィルタ設定を検証する方法を学びました。