ファイアウォールのnetfilter / iptablesに

2つのLinuxでファイアウォールおよびQuality of Service(QoS)を構築するために必要な2つのパッケージnetfilterとiprouteの名前です。一方netfilterのパケットのフレームワークをフィルタリングされているLinuxカーネル2.4と2.6では、iprouteのパッケージは、Linuxユーザの高度なルーティングおよびトラフィックシェーピングを行うことができますいくつかのユーティリティを含むが含まれます。
この記事は、私たちは、この記事全体で使用されるツールを紹介するものです。しかし、netfilterとiprouteでは非常に大きい科目;ので、私はこの記事で何をしようよ人の対象に慣れていない読者に紹介することであるとともに、すでに件名知っている読者のためにいいの概要を構築した。ようこそnetfilterの両方のプロジェクトは、http://www.netfilter.org上のたくさんのドキュメントを持つ2つのウェブサイトとiprouteでは、 http://www.lartc.org

のnetfilter / iptablesに

  

netfilterの安全保障の面では、Linuxカーネルは非常に重要な部分は、パケット変換、および操作されます。 netfilterのためのフロントエンドは""どのようなユーザーは、IPパケットに到着するとしたいことをカーネルに伝えますiptablesを、通過中、または、Linuxボックスに出ている。
netfilterのが、パケットフィルタおよびネットワークアドレス変換を最もよく使われる機能が、しかし我々のnetfilterでできることは他のものの多くのパケットをフィルタリング、レイヤ7修飾などです。
どのようにnetfilterのは、このような作品に大まかな説明:

  • ユーザーは、IPパケットをどうするかの必要性については、カーネルに指示しますが、Linuxボックスには、iptablesのツールを使用して流れる。
  • Linuxボックスにして、すべてのパケットが流れるのは、IPヘッダーを分析します。
  • 場合は、ときに、IPヘッダを見て、カーネルは、そのパケットに一致する規則にしたがって操作しているマッチングルールを見つけます。

これは非常に単純なの冒頭に見えるかもしれないが、実際にはもっと多くの複雑なプロセスです。 netfilterの数が テーブルは、それぞれのデフォルトは、チェーンと呼ばれているルールのセットを含む。デフォルトのテーブルは、カーネルにロードされた3つの鎖が含まれてフィルタテーブルです:

  • 入力:パケットは、Linuxマシン自体を宛先とするためのルールが含まれます。
  • フォワード:パケットのルールが含まれますが、Linuxマシンのルートを別のIPアドレスです。
  • 出力:パケットのLinuxマシンによって生成されるためのルールが含まれます。

次に、中古経由でパケットをフローここで我々 DNATのは、ポートのリダイレクトなどを行うことができますnatテーブルのチェインのルーティング
それは、宛先ネットワークアドレス変換を実行できるようにルーティングプロセスを前に、論理的なものが発生します。このように、第4条に表示されますここで、我々の詳細は、DNATの1つの翻訳のプロセス(通常は)別の(通常はプライベートにIPアドレス)が公開されてDNATを議論する。これは、IPパケットのヘッダー内の宛先IPアドレスを変更することによって行われます。 netfilterで行う必要がありますその前にカーネルのように、カーネルは、IPパケットの新しい送信先IPアドレスを探しますルーティングの決定を行います。
2つのチェーンを通過した後は、Linuxカーネルはルーティングの決定を行います。これは、netfilterの仕事ではありません。場合は、パケットを別の場所またはルーティングされること、それは運命だったのニーズは、IPパケットのヘッダから宛先のIPアドレスを分析することで、Linux boxを知っている。
場合は、Linuxボックスには、IPパケットの宛先は、パケットのパケットの修飾は、mangleテーブルのINPUTチェインを通過します。その後、パケットがチェーンの、どこに受け入れることができる入力フィルタテーブルに渡され、拒否されたか、または下落した。場合は、パケット(Webサーバーを当社のLinuxボックス上で実行するための要求など)は、Linuxボックスにチェーンouputをmangleテーブルを介して最初に行くのは、パケットに応答が生成さ受け付けています。
次に、パケットのチェーンとフィルタテーブルのOUTPUTチェインの出力は、natテーブルを介して渡されます。この時点では、mangleテーブルのPOSTROUTINGチェーンとは、natテーブルのPOSTROUTINGチェインとパケットの準備ができていると分析されている対応するインターフェイス上で送信されます。
チェーンをここで紹介する各テーブルの定義済みの鎖(フィルタ、NAT、およびマングル)です。ただし、ユーザーは、カスタムの名前を持つカスタムチェーンをセットアップすることができますし、対応する定義済みのチェーンからこれらのチェインにパケットを渡します。たとえば、私たちが望む、我々は、カスタムチェーンSSHの名前を作成することができますし、カーネルに指示INPUTチェイン内のポート22上の着信パケットには、SSHのチェーンを分析する1つのルールを挿入し、LinuxマシンにSSHアクセスするためのいくつかのルールを作成する/ TCPの。
定義済みのチェーンを削除することはできませんか改名された。

iptablesの-操作

iptablesの構文はやや古いipchainsに似て、2.2カーネルのため(のnetfilter)があります。ただし、2.4のnetfilterの概念+カーネルが完全に2.2カーネル用のnetfilters'の概念とは異なる。
されている操作をiptablesのチェーンで行うことができます:

  • チェーン内のリストのルール(iptables - Lはチェーン)。
  • チェーンのポリシーを変更(iptablesの- Pチェインを受け入れます)。
  • 新しいチェーンを作成します(iptablesの- Nチェイン)。
  • フラッシュチェーン、すべてのルール(iptablesの- Fチェーン)を削除します。
  • チェーンを削除する(iptablesの- Dチェイン)場合のみ、チェーンは空です。
  • サプライチェーンでのゼロカウンタ(iptablesの- Zのチェーン)。すべてのチェーン内のすべてのルールのパケットとバイトの数が一致するカウンタを保持します。このコマンドは、これらのカウンタをリセットします。

は、- Lと、- fは、- D、および- Zの操作の場合は、チェーン名を指定しない場合、操作は指定されない場合は、デフォルトでは、フィルタテーブルは、テーブル全体に適用されます。
は、我々の操作を行う上で、我々 、トンフィルタ... ...だから、iptablesのように- tスイッチを使用する必要があるテーブルを指定するには

操作は、iptablesの規則を実行することができますされます:

  • チェーンに追加ルール(iptablesの-)
  • チェーン内の挿入規則(iptablesの- I)を
  • チェーンからの置換ルール(iptablesの- R)の
  • チェーンから削除するルール(iptablesの- D)を

最もよく使われるスイッチは、-および- D(追加し、ルールを削除する)。通常は、ときに、ファイアウォールの設計、ルールをチェーンに追加されます。
実行時に、ユーザーの使用をもっと上回るため、多くの場合は、チェーン内の一時的なルールを挿入する必要があります。
iptablesの- Aは、チェーンの終わりには、ルールの場所ながら、iptablesの- Iは、チェーン内の他のルールの上でのルールを配置します。ただし、チェーンのどこにでもここでは、- Iスイッチ:iptablesの-私は4チェーン、指定されたチェーンの4番目の位置にルールを挿入すると、チェーンになるようにルールを目的の位置を指定してルールを挿入することができます。

チェーンにルールを追加するための構文です:

iptablesの- ... ... -論文

仕様のフィルタリングには、カーネルによっては、カーネルは、アクションのTARGETで指定しないIPパケットを識別するために使用されてiptablesの規則の一部です。

仕様のフィルタリング

IPパケットをさまざまな方法で多数のインターフェイスを指定することによって識別することができるプロトコルは、iptablesのルールにポートなど。その美しさは、我々は、高い柔軟性とセレクタの広い範囲を持つ任意のそれらの仕様をミックスすることができます。私の深さのすべてのこれらのセレクタをカバーするために、計画はないが、心の中でもし何かのIPパケットについての論理的な考え続ければ、機会あるごとにそれらのパケットはiptablesの規則を使用して識別する必要があります。
レイヤ2の仕様をフィルタリング: インターフェイス- iでセレクタと- oスイッチとして指定することができます。
-のi" -のインターフェイス"の略で、- oへ" -外のインターフェイス"。 +例のためのインターフェイスの始まりでしか文字列を指定するために、私はethを使用することができます+すべてのインターフェイスは、文字列ethを始まりにマッチします;ので、すべてのイーサネットを指定して、入力インターフェイスとして1つのルールのためのインターフェイス。
短いバージョンのスイッチ(例えば、- i)と長いバージョンのスイッチ(例えば" -のインターフェイス")は絶対に同じ効果があります。としても、読みやすさを提供することがある人は、コマンドラインやスクリプトのための長いスイッチ用の短いスイッチを使用する方が、私たちは、この記事では、スクリプトでもコマンドラインによく使用さを取得するだけ短いスイッチを使用します。
感嘆符"!"と否定表現を指定するためのインターフェイス(秒)(例えば私はこのフィルタを適用しないように使用することができます!eth1のさ 〜でない 一致するパケットをeth1に来る)。

パケットはOUTPUTそしてPOSTROUTINGチェーンでの入力インターフェイスを持っていない、と分析したので、これは、- i、これらのチェーン上のスイッチを使用することはできません。
また、INPUTとPREROUTINGチェイン、および出力インターフェイスを持っていないので、これらのチェイン内のルールには、- oスイッチを使用することはできません。

レイヤ3: ソースIPアドレス(ES)をする- s、 - srcは、または-ソースと宛先のIPアドレスを持つ(ES)を使用して指定することができます- dを-夏時間、または-の宛先。 (例えば、ソースまたは宛先IPアドレス、サブネット、または正規名をすることができる"217.207.125.58"、""www.packtpub.com秒、または"S - sを217.207.125.58/32"と同じ効果がある)。は複数のIPアドレスを持つホストの正規名を指定するIPアドレスの数などのルールは、同じ番号を追加するの結果となるDNSサーバーのアドレスは、ルールが追加されている時点ではホストに解決されます。

危険性が高いとルールの正規名を使用しないでください。この簡単で- the - middle攻撃のマニュアルできるようになりますたとえば、ahost.anotherisp.comからのSSHアクセスを許可しないでください。

レイヤ4: どのプロトコル"には- protocolスタンドは、- pスイッチを使用する"を指定することができます。プロトコルに対応する番号で指定することができますまたはその名をは、tcp、udp、または(大文字と小文字を区別しない)はICMPによる。
ICMPプロトコルの場合、"ICMPメッセージタイプ"を使用する- ICMPタイプを指定することができます。 ICMPメッセージのリストは、コマンド"iptablesを使用して見つけることができます- pのICMP - help"で。
UDPプロトコルの場合は、" -送信元ポート"または" -スポーツ"と" -先のポート"と" - dportと"とポートを送信元または宛先を指定することができます。
TCPは、最も完全なレイヤ4プロトコルされ、より多くのオプションがあります。場合は、送信元または宛先のほか、"UDPプロトコルとしてのポートを指定することができます- tcp - flagsの"、" -のSYN"と" -のTCPオプション"。 TCPフラグを"することができますSYN ACKのFINをRSTをURGのPSHすべてなし"。 " -のSYN"と等価です。"開始の接続を識別するために使用されて- tcp - flagsののSYNは、RST、ACKが送信のSYN"。 " -のTCPオプション"の数字が続くオプションは、その番号に設定されたTCPパケットにマッチします。

フィルタリングの仕様のすべてのちょうど上記の機能を組み合わせることができますので、レイヤ2、3、同じルールでの4の仕様の組み合わせを持つことができます。

netfilterのについてのもう一つ美しいもの/ iptablesには、一致する拡張子を別々に開発することができますし、後に追加されます。 netfilterのサイトでは、"パッチ図書館"、maticのではと呼ばれる拡張子に一致する大規模なリポジトリです http://www.netfilter.org/projects/patch-o-matic/index.html

iptablesをすると""大胆な新拡張子は、下位層からは、OSIモデルでは、レイヤ7のアプリケーションの上位層にその機能を拡張する計画だ。

記事は、フィリップクレア提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"ファイアウォールをnetfilter / iptablesの"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 247 users browsing the articles directory