Linuxでファイアウォールがどのように機能するかを理解しようとしています...ドキュメントを読んでいますが、いくつかのことについてはわかりません...
Netfiltersは最新のカーネルに含まれており、フックを使用してコンテンツを変更せずにパッケージを監視できます。
iptablesはnetfilterとip_tablesモジュールを使用するソフトウェアです
。
- IPTablesユーザースペースソフトウェアはフックを登録しますか?
- ip_tableモジュールは何をしますか?
- iptableやモジュールは誰が処理しますか?
- IPtableは何をしますか? (単にメモリのルールを管理していますか、それともフックがあり、トラフィックを処理しますか?)
答え1
Webフィルタ
netfilterはカーネルのネットワーキングコード全体に分散されたフックセットです。これは、コードスニペットが重要なタスク(Xと呼びます)を実行したい場合は、「Xを実行します」という関数を呼び出すことを意味します。その後、この関数は登録されたコールバックを通じて他の関心のある当事者に通知します。 IPVSなどの他の(iptables以外の)システムでも使用されます。
netfilterには、ユーザー空間プログラムにパケットを転送するメカニズムも含まれています。 iptables は、QUEUE および ULOG 宛先に使用して、ユーザーがユーザー空間でパケットを処理できるようにします。
ip_tables (カーネルモジュール)
ip_tablesは、netfilterを使用してこれらの通知を受け取るモジュールです。関連するパケットを識別して実行するように指示します。これは、ユーザーが提供したルールに基づいて、どのパケットが関連していてそのパケットで何をすべきかを知っており、これらのルールをテーブルに格納します。実際には、ip_tablesで使用されるより一般的なモジュールxtablesを使用してください。
拡張モジュール
拡張モジュールは、一致基準とターゲット操作を提供するほとんどのタスクを実行します。拡張モジュールのいくつかの例は、IP_NF_TARGET_LOGおよびNF_NATである。
iptables(ユーザースペースツール)
iptablesは、ip_tablesモジュールでこれらのルールを設定するために使用されるユーザースペースツールです。このツールには、コマンドラインオプションを解析してルールを登録するための複数のプラグインも付属しています。
iptablesの内部の詳細
内部原則についてもっと知りたい場合は、以下を参照してください。素晴らしい本それについて。 iptablesのアドオンを作成したい場合は、この本が必要なものをすべて提供していますが、iptablesの使い方をより深く理解するのには役立ちません。
iptablesの使い方の詳細
iptablesの使い方をよりよく理解するために、いくつかの異なるドキュメントを読んで、iptablesがどのように異なる方法で説明されているかを見てください。さらに重要なのは、iptablesを自分で遊ぶ。私は特にLOG宛先を使用して、テーブルとチェーンを通るパケットの流れとそれに対する規則の影響を確認するのが好きです。また、テーブルを通るパケットフロー図とても便利です。最後に、iptablesで何かをしようとしましたが、期待どおりに機能しない場合は、サイトで具体的な質問をしてください。 iptablesについてよく知っている人がよく質問に答えます。
答え2
このiptables
コマンドはカーネルのパケットフィルタリングルールのみを機能します。これらの規則によれば、ネットワークトラフィックは通常カーネルによって完全に管理されます。カーネルは非常に洗練されたルーティングと監視を実行できます。しかもiptables
、IP ルート 2高度なシナリオでカーネルの動作を制御するには、ユーティリティのコレクションが必要です。
このip_tables
モジュール(モジュールなしip_table
)はカーネルパケット処理コンポーネントの一部です。カーネルネットワーキングコードを開発したり、誰かからカスタムパッチをインストールしない限り、どのモジュールが実際に何をしているのか気にする必要はありません。
ユーザー空間コードは、パケットが受信されたときに呼び出すことができます。これは、非常に具体的なフィルタリング、変更、ルーティング、またはロギングの要件に対応します。カーネルには、特定のイベントでユーザー空間コードを実行するフックがあります。netfilter ユーザー空間ライブラリこれらのフックへのインターフェイスを提供します。
答え3
まず、LinuxではTCP / IPの送信、受信、転送がすべてカーネルで完了することを理解してください。したがって、ネットワークに関連するすべては、カーネルに組み込まれるか、modprobe
起動後に削除する必要があるカーネルモジュールです。
から引用http://www.netfilter.org/「netfilterは、カーネルモジュールがネットワークスタックにコールバック関数を登録できるようにするLinuxカーネルのフックセットです。登録されたコールバック関数は、ネットワークスタックの対応するフックを通過する各パケットに対してコールバックされます。」
つまり、Netfilterは、Linuxがネットワーキングに関連するすべてのタスクを実行する方法を変更する別のコードを生成して挿入できるカーネルの「開口部」の集まりです。
この記事では、「iptablesは、ルールセットを定義するために使用される一般的なテーブル構造です。IPテーブルの各ルールには、複数の分類子(iptables一致)に関連付けられたアクション(iptablesターゲット)が含まれています」とさらに説明します。
iptables
ルールベースのパケットフィルタリング(ファイアウォールとも呼ばれる)などを実装するために、Netfilterが提供する「開口部」を利用する特定のプロジェクトであり、カーネルモジュールのセットです。
したがってiptables
、1)Netfilterに独自にフックし、カーネルがNICまたはアプリケーションに送信するネットワークパケットを傍受し、2)現在のルールセットのそれぞれに従ってこのパケットを処理し、3)ルールが一致すると、ルールに送信されたデータパケットターゲット。
適切に設定されたルールを使用すると、NICで特定のパケットをドロップしたり、NATまたはポートリダイレクトを実装するようにパケットを変更したり、パケットのプロトコル固有のコンテンツまたはパケットのペイロードコンテンツに基づいてアクションを実行したりできます。さらなる処理のために、パケットをユーザ空間アプリケーション(宛先)に転送するルールを作成することもできます(このよう NFQUEUE
なユーザ空間ベースのフィルタ)。moblock
私はLinuxカーネルの専門家ではありませんが、ルールの追加iptables
と削除を処理する基本モジュールがあり、これがiptables
ユーザースペースアプリケーションに関連していると思います。ほとんどすべてのターゲットは、別々のモジュールとして存在するか、カーネルに組み込むことができる独自のカーネルモジュールによって処理されます。
直接閲覧できます。カーネルをダウンロードしwww.kernel.org
、un-bzip2-it、cdを直接実行し、make menuconfig
「Network Support」から起動してドリルダウンすると、iptablesで利用可能なすべてのモジュールを見ることができます。