カーネルファイアウォールはネットワークアクセス層とインターネット層の間にありますか?

カーネルファイアウォールはネットワークアクセス層とインターネット層の間にありますか?

これは私のフォローアップの質問です。前の質問

私のロジックは、カーネルファイアウォールがネットワークアクセス層とインターネット層の間にあるということです。これは、宛先がホストであるかどうかを判断する前に、パケットをフィルタリングするために送信元と宛先のIPアドレスを読み取るためにIPパケットヘッダにアクセスする必要があるためです。または、パケットが別の場所に向かっている場合は、次のホップに転送する必要があります。

ファイアウォールがインターネット層の一部であると言うのも論理的なようです。インターネット層にはルーティングテーブルがあり、ファイアウォールはある点ではルーティングテーブルルールに似ているためです。

ベストアンサー1

ファイアウォールは存在しません。場所カーネルネットワークスタックから。たとえば、Linuxでは、ファイアウォール機能をサポートする基本的なインフラストラクチャが次のように提供されています。Webフィルタパケットフィルタリングフレームワーク。 netfilterフレームワーク自体はカーネルプロトコルスタックのさまざまなポイントのフックセット

Netfilterは5つのフックを提供します。

  • NF_IP_PRE_ROUTING

    NF_IP_PRE_ROUTING初期の健全性チェックに合格したパケットはフックに転送されます。これは、ルーティング決定が行われる前に発生します。

  • NF_IP_LOCAL_IN

    ホスト自体に向けられたパケットはNF_IP_LOCAL_INフックに転送されます。

  • NF_IP_FORWARD

    NF_IP_FORWARD他のインターフェイスに向けられたパケットはフックに転送されます。

  • NF_IP_LOCAL_OUT

    NF_IP_LOCAL_OUTフックによってルーティングが変更される可能性がありますが、ローカルで生成されたパケットはルーティング決定が行われた後に転送されます。

  • NF_IP_POST_ROUTING

    フックは、NF_IP_POST_ROUTINGパケットがネットワーク上で送信される前に転送できる最終フックです。

ファイアウォールは、netfilterフレームワークによって提供される各フックのコールバック機能を登録するカーネルモジュールと、ファイアウォールを構成するためのユーザースペースツールで構成されています。パケットがフックに転送されるたびに、対応するコールバック関数が呼び出されます。コールバック関数は、コールバックをトリガーしたパケットで自由に機能できます。コールバック関数は、パケットをさらに処理する必要があるのか​​、通常はユーザー空間処理のためにコールバック自体によって処理されるのか、またはパケットに対して同じフックを呼び出すべきかを決定します。

Netfilter は通常、次に関連付けられます。iptablesパケットフィルタ。 〜のようにGnoucは以前の質問ですでに指摘しています。iptablesには、netfilterとインタフェースするカーネルモジュールと、カーネル内のパケットフィルタを設定するip_tablesユーザ空間プログラムがあります。iptables実際、iptablesパケットフィルタは、それぞれ異なる種類のパケット処理に関連する様々なツールを提供する。

  • ユーザースペースツールiptablesip_tablesカーネルモジュールが興味を持っている部分は次のとおりです。IPv4パケットフィルタリング。

  • ユーザースペースツールip6tablesip6_tablesカーネルモジュールが興味を持っている部分は次のとおりです。IPv6パケットフィルタリング。

  • ユーザースペースツールarptablesarp_tablesカーネルモジュールが興味を持っている部分は次のとおりです。ARPパケットフィルタリング。

iptablesパケットフィルタに加えてebtablesユーザー空間ツールとeb_tablesカーネルモジュールはリンク層を管理します。イーサネットフレームフィルタリング。これらのツールを通称して次のように呼ぶこともあります。拡張テーブル、同様のテーブルベースのアーキテクチャが原因です。

アーキテクチャは、以下に基づいてパケット選択抽象化を提供します。テーブル一緒にパケット。各テーブルにはパケットフィルタが含まれています。ルールで組織チェーン。事前定義された5つのチェーン、PREROUTING、INPUT、FORWARD、OUTPUT、およびPOSTROUTINGは、netfilterが提供する5つのカーネルフックに対応します。ルールが属するテーブルによって、ルールが特定の netfilter フックに適用される相対順序が決まります。

  • このrawテーブルは、他のテーブルの前にパケットをフィルタリングします。
  • このmangleテーブルはパケットを変更するために使用されます。
  • このnatテーブルは次の目的で使用されます。ネットワークアドレスの解釈(例:ポート転送)
  • このfilterテーブルはパケットフィルタリングに使用され、パケットを変更しないでください。
  • このsecurityテーブルは、SELinuxなどのLinuxセキュリティモジュール(LSM)によって実装された必須アクセス制御(MAC)ネットワークルールに使用されます。

Jan Engelhardtの次の図は、テーブルとチェーンがOSIモデルのさまざまな層にどのように対応するかを示しています。

Linuxネットワークとxtableを介したパケットフローパスの概略図

今年初めには、次の新しいパケットフィルタリングフレームワークがリリースされました。nftablesメインラインLinuxカーネルバージョン3.13にマージされました。 nftablesフレームワークは、既存のxtablesツールを置き換えるように設計されています。また、netfilterインフラストラクチャに基づいています。

Unixファミリーオペレーティングシステムの他のカーネルベースのファイアウォールには、次のものがあります。IPフィルタ(マルチプラットフォーム),PF(OpenBSD、さまざまな他のBSDバリアント、およびMac OS Xに移植)NPF(ネットBSD)、IPファイアウォール(FreeBSD、さまざまなオペレーティングシステムに移植)

おすすめ記事