GNU/Linux >> Linux の 問題 >  >> Linux

Linux ファイアウォール チュートリアル:IPTables テーブル、チェーン、ルールの基礎

iptables ファイアウォールは、パケット フィルタリングと NAT ルールを管理するために使用されます。 IPTables はすべての Linux ディストリビューションに付属しています。 iptables のセットアップと構成の方法を理解すると、Linux ファイアウォールを効果的に管理するのに役立ちます。

iptables ツールは、Linux ファイアウォール ルールの管理に使用されます。一見すると、iptables は複雑に見えるかもしれません (または混乱することさえあります)。しかし、iptables の仕組みと構造の基本を理解すれば、iptables ファイアウォール ルールの読み書きは簡単になります。

この記事は、進行中の iptables チュートリアル シリーズの一部です。これは、そのシリーズの最初の記事です。

この記事では、iptables がどのように構造化されているかを説明し、iptables のテーブル、チェーン、およびルールに関する基本事項について説明します。

高レベルでは、iptables に複数のテーブルが含まれる場合があります。テーブルには複数のチェーンが含まれる場合があります。チェーンは、組み込みまたはユーザー定義にすることができます。チェーンには複数のルールが含まれる場合があります。パケットのルールが定義されています。

したがって、構造は次のとおりです。iptables -> テーブル -> チェーン -> ルール。これは次の図で定義されています。


:IPTables テーブル、チェーン、およびルール構造

繰り返しますが、テーブルは一連のチェーンであり、チェーンは一連のファイアウォール ルールです。

I. IPTABLES テーブルとチェーン

IPTables には、次の 4 つの組み込みテーブルがあります。

1.テーブルのフィルター

Filter は iptables のデフォルトのテーブルです。したがって、独自のテーブルを定義しない場合は、フィルター テーブルを使用することになります。 iptables のフィルター テーブルには、次の組み込みチェーンがあります。

  • INPUT チェーン – ファイアウォールへの着信。ローカル サーバーに着信するパケット。
  • OUTPUT チェーン – ファイアウォールからの発信。ローカルで生成され、ローカル サーバーから送信されるパケット。
  • FORWARD チェーン – ローカル サーバー上の別の NIC のパケット。ローカル サーバー経由でルーティングされるパケットの場合

2. NAT テーブル

iptable の NAT テーブルには、次の組み込みチェーンがあります。

  • PREROUTING チェーン – ルーティング前にパケットを変更します。つまり、パケットの変換は、パケットがシステムに到着した直後 (およびルーティングの前) に行われます。これは、パケットの宛先 IP アドレスを、ローカル サーバー上のルーティングと一致するものに変換するのに役立ちます。これは DNAT (宛先 NAT) に使用されます。
  • POSROUTING チェーン – ルーティング後にパケットを変更します。つまり、パケットの変換は、パケットがシステムを離れるときに発生します。これは、パケットの送信元 IP アドレスを宛先サーバーのルーティングと一致する可能性があるものに変換するのに役立ちます。これは SNAT (ソース NAT) に使用されます。
  • OUTPUT チェーン – ファイアウォール上でローカルに生成されたパケットの NAT

3.マングルテーブル

iptables の Mangle テーブルは、特殊なパケット変更用です。これにより、TCP ヘッダーの QOS ビットが変更されます。 Mangle テーブルには、次の組み込みチェーンがあります。

  • PREROUTING チェーン
  • 出力チェーン
  • FORWARD チェーン
  • INPUT チェーン
  • ポスティング チェーン

4.生テーブル

iptable の Raw テーブルは、構成の例外用です。 Raw テーブルには、次の組み込みチェーンがあります。

  • PREROUTING チェーン
  • 出力チェーン

次の図は、iptables の 3 つの重要なテーブルを示しています。

:IPTables 組み込みテーブル

II. IPTABLES ルール

以下は、iptables ルールについて覚えておくべき重要なポイントです。

  • ルールには基準と目標が含まれます。
  • 条件が一致した場合、ターゲットで指定されたルールに進みます (または) ターゲットで指定された特別な値を実行します。
  • 条件が一致しない場合、次のルールに進みます。

目標値

以下は、ターゲットで指定できる特別な値です。

  • ACCEPT – ファイアウォールはパケットを受け入れます。
  • DROP – ファイアウォールはパケットをドロップします。
  • QUEUE – ファイアウォールはパケットをユーザー空間に渡します。
  • RETURN – ファイアウォールは、このパケットに対する現在のチェーン内の次の一連のルールの実行を停止します。コントロールは呼び出しチェーンに返されます。

iptables –list (または) service iptables status を実行すると、システムで利用可能なすべてのファイアウォール ルールが表示されます。次の iptable の例は、このシステムにファイアウォール ルールが定義されていないことを示しています。ご覧のとおり、デフォルトの入力チェーン、フォワード チェーン、および出力チェーンを含むデフォルトの入力テーブルが表示されます。

# iptables -t filter --list
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

mangle テーブルを表示するには、次の手順を実行します。

# iptables -t mangle --list

nat テーブルを表示するには、次の手順を実行します。

# iptables -t nat --list

生のテーブルを表示するには、次の操作を行います。

# iptables -t raw --list

注:-t オプションを指定しない場合、デフォルトのフィルター テーブルが表示されます。したがって、次のコマンドはどちらも同じです。

# iptables -t filter --list
(or)
# iptables --list

次の iptable の例は、フィルター テーブルの入力チェーン、転送チェーン、および出力チェーンで定義されたいくつかのルールがあることを示しています。

# iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

iptables –list コマンド出力のルールには、次のフィールドが含まれます:

  • num – 特定のチェーン内のルール番号
  • target – 上で説明した特別なターゲット変数
  • prot – プロトコル。 tcp、udp、icmp など
  • opt – 特定のルールの特別なオプション
  • source – パケットの送信元 IP アドレス
  • destination – パケットの宛先 IP アドレス

Linux
  1. Linux IPTables:ファイアウォール ルールを追加する方法 (Allow SSH の例を使用)

  2. IPTables Flush:RedHat および CentOS Linux でのすべてのルールの削除/削除

  3. 最も頻繁に使用される 25 の Linux IPTables ルールの例

  1. Linuxファイアウォールを使用してローカルのなりすましアドレスをブロックする方法

  2. iptables が実行されているか、ファイアウォールが有効になっているかを確認する方法

  3. ルーターとして機能するマシンで Linux iptables 構成をどのように管理しますか?

  1. iptablesファイアウォールルールをDebian/Ubuntuで永続化する方法

  2. CSFファイアウォールにカスタムiptablesルールを追加する方法

  3. DOCKER用のDockerファイアウォールスクリプト-USERiptablesチェーン