次のページ 前のページ 目次へ

3. それで、パケットフィルターって何ですか?

パケットフィルターというのは、流れて行くパケットのヘッダー を読んで、そのパケットの運命を決めるソフトウェアです。 パケットを DROP(まるで受け取っていないかのように破棄)したり、 ACCEPT (パケットを通過させる)したり、設定によっては もっと複雑な処理をしたりします。

Linux において、パケットフィルタリングはカーネルに組み込まれて (カーネルモジュールとして、または直に組み込まれて)います。 パケットに対して多少の曲芸的なこともできますが、パケットのヘッダー を見てその運命を決定すると言う一般原則が常にあります。

3.1 なぜ、パケットフィルターが必要なのでしょう?

コントロール。セキュリティ。監視。

コントロール:

あなたが Linux ボックスを内部のネットワークと別の ネットワーク(例えば、インターネット)を繋ぐために使っているなら、 あなたには、特定のトラフィックだけ許可して、他のものを許さないように するチャンスがあります。例えば、パケットのヘッダーにはあて先アドレス が含まれていて、外部ネットワークのとある所へ向かうパケットを拒否する ことができます。別の例として、Netscape を使って Dilbert のアーカイブ (訳注: Dilbert というエンジニアが主人公の風刺漫画のサイト、ちなみに dilbert の意味は‘ばか’) にアクセスする場合です。ページには doubleclick.net の広告があり、 Netscape はそれをいそいそとダウンロードするために私の時間を浪費します。 パケットフィルターに doubleclick.net 所有のアドレスからのどんな パケットも許可しないように指示すれば問題は解決します(もっといい方法が ありますけれど: Junkbuster(訳注: http://internet.junkbuster.com) を 見てください)。

セキュリティ:

あなたの Linux ボックスがインターネットの混沌と、 ナイスで秩序正しいあなたのネットワークの間にある唯一の物なら、 すばらしいことに、あなたは殴りにやって来る者をドアのところで制限する ことができます。例えば、あなたのネットワークから出て行くものは何でも 許すようにして、悪意のある外部からのよく知られた `Ping of Death' 攻撃 を気に掛けるようにできます。別の例として、あなたの Linux ボックスに、 たとえ全てのアカウントにパスワードが付いているとしても、外部の者が telnet してくることを望まないかもしれません。たぶん、あなたは (たいていの人々のように)インターネットをただ眺めていたいだけで、 サーバーに(好むと好まずにかかわらず)なりたくないのです。単純に、 パケットフィルターで接続を開始するパケットの流入を拒否して、だれにも 接続されないようにしてください。

監視:

ときどきローカルネットワーク中に環境設定の悪いマシンがあり、 外の世界にパケットが漏れ出るようになっていることがあります。 すばらしいことに、パケットフィルターは何か異常なことが起こったときに あなたに知らせてくれます。たぶんあなたは何らかの対処ができるでしょうし、 あるいはあなたの性質上、単に興味を持つだけかもしれません。

3.2 Linux でパケットフィルターはどのようにやるの?

Linux カーネルには 1.1系からパケットフィルタリングがありました。 第1世代は、1994年後期に Alan Cox により、BSD の ipfw を基礎にして 移植されました。Linux 2.0 では、Jos Vos を初めとする人達により拡張 され、カーネルのフィルタリングルールをコントロールするユーザ空間ツール `ipfwadm' が生まれました。1998年中期、Linux 2.2 では、私は Michael Neuling の援助を得てカーネルを全くどっさりと作り直し、 ユーザ空間ツール `ipchains' を導入しました。最終的に、1999年中期、 Linux 2.4 では、第4世代ツール `iptables' とカーネルの別の部分を 書き換えました。この HOWTO が集中して述べているのはこの iptables についてです。

netfilter という基盤を持ったカーネルが必要です ― Linux カーネル には追加機能(例えば iptables モジュール)を差し込むことができますが、 netfilter はこの一般的な枠組みの中に含まれています。これは、 カーネル 2.3.15 かそれ以降が必要で、カーネルコンフィギュレーション の CONFIG_NETFILTER に `Y' と答える必要があります。

iptables というツールは、カーネルに話かけて、カーネルがどの パケットをフィルターすべきかを伝えるものです。プログラマーや特に好奇心 旺盛な人は別ですが、普通はこれを使ってパケットフィルターをコントロール します。

iptables

iptables はカーネルのパケットフィルタリングテーブルにルールを挿入 したり削除したりします。これは、あなたが設定したものはリブートすると 失われることを意味しています。次回、Linux がブートしたとき設定を 回復させる確かな方法は ルールを永続させる を見てください。

iptables は ipfwadm と ipchains の置き換えです。 もし、あなたが現在これらのどちらか一方のツールを使っていて、 苦労を避けるため iptables を使わずに済ます方法は ipchains と ipfwadm を使う を見てください。

ルールを永続させる

あなたの現在のファイアーウォールの設定はカーネル中にあるだけなので、 リブートすると失われてしまいます。iptables-save と iptables-restore スクリプトを使えば、設定をファイルに保存しておき、その後、そのファイル から回復することができます。

別の方法は、ルールを設定するために必要なコマンドを初期化 スクリプト中に書くことです。万一コマンドの内の 1つが失敗したなら、 頭を絞ってやろうとしていることを確かめてください(普通、`/sbin/sulogin' を実行してシングルユーザモードで作業します)。


次のページ 前のページ 目次へ