第 22章パケットフィルタリングと NAT

パケットフィルタリングや NAT の機能は、Linux カ ーネルの NetFilter と呼ばれる機能によって実装されています。NetFilter は、そ の管理ツールが iptables コマンドであるため、iptables と呼ばれることもあります。この章では iptables を使用したパケットフィルタリング と NAT の基本的な設定手順について解説します。

22.1. パケットフィルタリングの概要

クライアントとサーバーから構成されるネットワーク通信では、クライアントがサーバーへ通信要求を出 します。この際、IP パケットのヘッダには、送信元(クライアント)の IP アドレスやポート番号 および送信先(サーバー)の IP アドレスやポート番号などが含まれます。クライアントのポート番号 はプログラムの起動時に決定されランダムなポート番号(1024〜65535)が使用されるため固定では ありません。一方、サーバープログラムの多くは、ウェルノウンポート番号(0〜1023)を使用します。 通常、サーバーのポート番号は提供するサービスごとに固定のポート番号が割り振られています。代表 的なウェルノウンポート番号を以下に示します。

表 22-1.

プロトコルポート番号サービス
TCP21FTP
TCP22SSH
TCP23TELNET
TCP25SMTP
TCP80HTTP
TCP110POP(POP3)
TCP143IMAP
TCP、UDP53DNS
UDP69TFTP
UDP123NTP

ティップ

代表的なネットワークサービスが使用するプロトコルとポート番号は、/etc/services ファイルで確認することができます。

パケットフィルタリングとは、IP パケットのヘッダに含まれる IP アドレスやポート番 号などの情報を参照し、そのパケットに対する処理を決定するメカニズムです。ネットワークインタ ーフェースに入力(INPUT)、転送(FORWARD)、出力(OUTPUT)されるパケットは、ユーザー が指定したルールに従い通過を許可(ACCEPT)するか、あるいは破棄(DROP)するかの決定が下 されます。Turbolinux 11 Server では、これらのルールを iptables コマンドで定義します。したがって、iptables でパケットフィルタリングの設定を行うには、TCP/IP ネットワークの基本的な知識が必要不可欠です。

パケットフィルタリングのルールを指定する前に、パケットの経路について理解しておきましょう。下図はパケットが通過する経路に関する概念図です。

カーネルはパケットフィルタリングを行うために 3 つのルールリストをあらかじめ保持しています。 これらはチェインと呼ばれ、INPUT(入力)、FORWARD(転送)、OUTPUT(出力)の 3 つが存在します。

INPUT チェイン

カーネルはパケットがネットワークインターフェイスに入ってくると、そのパケットの行き先を参照 します。これはルーティングと呼ばれます。もし、パケットの行き先が自ホストのプロセスであれば、 パケットは INPUT チェインへ入ります。転送(FORWARD)されるパケットに INPUT チェインは 利用されません。そして、INPUT チェインで設定されたルールに従ってそのパケットは処理されます。 もし、破棄されることなく通過すればそのパケットを待っているローカルプロセスが受け取ります。

FORWARD チェイン

ホストが転送するパケットは FORWARD チェインへ入り、FORWARD チェインのルールに従い処 理されます。しかし、転送先が不明な場合やパケット転送が有効でない場合、そのパケットはその場 で破棄されます。破棄されることなく通過すれば、そのパケットは他のネットワークインターフェイ スから送り出されます。

注意

ネットワークインターフェース間のパケット転送を有効にするには、 以下のコマンドを実行し、/proc/sys/net/ipv4/ip_forward の値を 1 (有効)にします。あるいは、ネットワーク設定ツールの turbonetcfg で有効にすることも可能です。turbonetcfg で有効にすれば、システム再起動後でも有効にした値は保持されます。

# cat /proc/sys/net/ipv4/ip_forward
0
# echo 1 > /proc/sys/net/ipv4/ip_forward  ← 値を 1 に変更
# cat /proc/sys/net/ipv4/ip_forward
1

OUTPUTチェイン

自ホストのプロセスから送り出されるパケットは OUTPUT チェインへ入ります。そして OUTPUT チェインで設定されたルールに従い処理されます。もし、破棄されることなく通過すれば、 そのパケットは送り出されます。

デフォルトポリシー

各チェインには、複数のルールを設定できます。各チェインへ入ってきたパケットは、設定されてい る順番どおりに各ルールと一致するかどうかが調査されます。 設定されているルールとパケットが一致した場合、そのパケットの調査は終了します。したがって、ルールの順序は重要な意味を持ちます。いずれのルールにも一 致しないとき、パケットは各チェインに設定されているデフォルトポリシー従って処理されます。ポリシー には次の 2 つのアプローチがあります。

  • ルールにマッチしなかったパケットは全て許可(ACCEPT)

  • ルールにマッチしなかったパケットは全て拒否(DROP)

どちらがよいかという判断は一概にはできません。前者は使い勝手はよくなりますが、セキュリティ 上の問題が発生しやすくなります。また、後者はセキュリティは強化されますが、使い勝手が悪くな ります。しかし、セキュリティを気遣うのであれば、デフォルトポリシーは DROP に設定し、許 可するパケットのみを ACCEPT するのが一般的です。

Turbolinux 11 Server の初期状態ではすべてのチェインのポリシーが ACCEPT に設定されています。 したがって、いかなるパケットもフィルタリングの対象とはなりません。必要に応じて、ネットワーク環境に応じた フィルタリングルールを適切に設定してください。