システムがインターネットに接続されている場合は、不正アクセスを防ぐためにファイアウォールでシステムを保護すると便利な場合があります。このページでは、Linuxファイアウォールの設定と構成のプロセスについて説明します。 Webminとiptables 。
IPtablesを使用したファイアウォールの概要
ファイアウォールは、インターネットなどの信頼できないネットワーク上の攻撃者から、自分自身とネットワーク上の他のホストを保護するシステムです。送信元アドレス、宛先アドレス、ポート、プロトコルなどのさまざまな基準に基づいて、パケットと接続をブロックできます。通常、ファイアウォールはルーターでもあり、安全なローカルネットワークと信頼できないインターネットの間でパケットを転送しますが、システムがそれ自体を保護することも可能です。
ファイアウォールシステムは、NAT(ネットワークアドレス変換)と呼ばれるプロセスを使用して、単一のIPアドレスの背後に複数のホストを隠すように構成することもできます。通常、非表示のホストはプライベートIPネットワーク(192.168.0.0など)を使用する内部LAN上にあり、ファイアウォールには単一のインターネットIPアドレスがあります。 NATを使用すると、これらの内部ホストは、実際のパブリックIPアドレスを持っていなくても、インターネット上の他のホストと通信できます。
Linuxカーネルには、IPfwadmやIPchainsなど、何年にもわたっていくつかの異なるファイアウォールの実装が含まれています。 2.4シリーズのカーネルにはIPtablesファイアウォールが含まれています。これは、以前のバージョンよりも強力で柔軟性があります。 2.4カーネルを使用するすべてのLinuxディストリビューションでは、IPtablesサポートが有効になっており、構成に必要なコマンドが含まれています。この章とLinuxファイアウォールモジュールでは、IPtablesを使用したファイアウォールの設定についてのみ説明し、IPchainsやIPfwadmなどの古い実装については説明していません。
すべてのIPネットワークトラフィックはパケットに分割されます。パケットは、送信元、宛先、およびプロトコル情報を含むデータのチャンクです。大きなファイルのダウンロードなどのデータの連続的な流れでさえ、送信時にパケットに分割され、宛先で再アセンブルされます。 IPtablesファイアウォールはIPレベルで動作するため、そのすべてのルールとチェーンは、TCP接続やHTTP要求ではなく、個々のパケットを評価して動作します。
IPtablesファイアウォールは、テーブル、チェーン、ルールの3種類のオブジェクトで構成されています。 3つのテーブルのそれぞれには、2つまたは3つの標準チェーンと、場合によっては多くのユーザー定義のカスタムチェーンが含まれています。各チェーンには0個以上のルールが含まれています。これらのルールは、ファイアウォールによって送受信されるパケットに適用され、運命を決定します。 3つのテーブルとその標準チェーンは次のとおりです。
- パケットフィルタリング(フィルター)
- この表のINPUT、OUTPUT、およびFORWARDパケットチェーンは、ファイアウォールによって受信、送信、または転送されるパケットにそれぞれ適用されます。ファイアウォールシステムがルーターとして機能している場合、ルーティングされたパケットにはFORWARDチェーンのみが適用されます。システム自体宛てのネットワークトラフィックはINPUTチェーンによって処理され、ローカルプロセスによって送信されるトラフィックはOUTPUTチェーンによって処理されます。通常のルーターであり、マスカレードを実行しないシステム、またはそれ自体を保護するためにファイアウォールのみを必要とするシステムの場合、これはルールを追加する必要がある唯一のテーブルです。
- ネットワークアドレス変換(nat)
- このテーブルは、新しい接続を開始するパケットにのみ使用されます。そのPREROUTINGチェーンのルールは、ルーティングのためにシステムによって受信されるとすぐにパケットに適用され、ルーティング後に出ようとしているパケットのPOSTROUTINGに適用されます。 OUTPUTチェーンルールは、ルーティング前に変更するためにローカルで生成されたパケットに適用されます。通常、このテーブルにルールが追加され、マスカレード、透過プロキシ、またはその他の種類のアドレス変換が設定されます。
- パケット変更(マングル)
- このテーブルは、特殊なパケット変更にのみ使用されます。これには、ルーティング前にパケットを変更するためのPREROUTINGと、ローカルで生成されたパケットを変更するためのOUTPUTの2つのチェーンが含まれています。このテーブルは、通常のファイアウォール構成ではほとんど使用されません。
ネットワークパケットがチェーンによって処理されるとき、チェーン内の各ルールは順番に実行されます。すべてのルールには、ルールが一致するかどうかを決定する一連の条件と、一致した場合に実行されるアクションがあります。このアクションは、パケットをすぐに受け入れるか、すぐにドロップするか、変更を実行するか、実行を続行することです。チェーンの終わりに達すると、代わりにデフォルトのアクションが実行されます。これは通常、パケットの通過を許可することです。
以下のスクリーンショットは、パケットが通過するテーブルとチェーン、およびそれらがチェックされる順序を示しています。ネットワークから着信するパケットは上部の図に入り、両方のPREROUTINGチェーンによって処理されます。この時点で、決定が行われます。ローカルシステム宛てのパケットは左側に送られ、他の宛先に転送されるパケットは右側の分岐になります。残ったものは、サーバーなどのローカルプロセスに配信される前に、着信パケットチェーンによって処理されます。転送されたデータは、転送されたパケットとルーティングチェーンの後、宛先に送信される前に処理されます。
ファイアウォールは、ローカルシステム上のプロセスによって送信されるパケットにも影響を与える可能性があります。これらは、適切なネットワークインターフェイスを介して宛先に送信される前に、3つの出力チェーンおよびルーティング後チェーンに対してチェックされます。これは、IPtablesファイアウォールを使用して、ローカルプロセスが接続できるアドレスとそれらが使用できるプロトコルを制限できることを意味します。
An overview of IPtables
Linuxファイアウォールモジュール
このモジュールを使用して、IPtablesが有効になっているLinuxシステムにファイアウォールを設定したり、既存のファイアウォールの任意の部分を編集したりできます。ファイアウォール構成は、iptablesコマンドの呼び出しを含むシェルスクリプトではなく、iptables-saveおよびiptables-restoreコマンドによって作成および読み取られた保存ファイルに保存されます。 Redhat、Debian、Gentoo Linuxはすべて、このような保存ファイルを標準として使用します。これはWebminが認識しており、動作します。
シェルスクリプトを使用してファイアウォールを手動で作成し、このモジュールを使用して今後ファイアウォールを編集する場合は、Webminがファイアウォールを編集できるように、ファイアウォールをIPtables保存ファイルに変換する必要があります。
起動時にカスタムスクリプトの実行を停止し、代わりに独自のファイアウォールセットアップスクリプトを作成するようにモジュールに指示する必要があります。
これは、iptablesコマンドのシェルスクリプトを書き出すYaSTやfBuilderなどのツールによって作成されたファイアウォールにも当てはまります。ツールがIPtables保存ファイル(knetfilterなど)も編集できない限り、WebminのLinuxファイアウォールモジュールと一緒に使用しないでください。使用すると、互いの設定が上書きされる可能性があります。
ネットワークカテゴリからモジュールに入ると、メインページには通常、最初のテーブルにあるすべてのチェーンとルールのリストが表示されます(通常はパケットフィルタリング)。 )、以下に示すように。ただし、Webminがiptablesまたはiptables-saveコマンドがインストールされていないことを検出すると、代わりにエラーメッセージが表示されます。配布CDまたはWebサイトで、それらを含むパッケージを確認してください。
モジュールを初めて使用し、システムにファイアウォールがまだ設定されていない場合は、代わりにメインページにフォームが表示され、最初のファイアウォールの作成が簡単になります。 3つのオプションが表示されます。1つを選択してファイアウォールのセットアップをクリックします。 ボタンを押して設定します。必要に応じて、Webminは起動時にファイアウォールを有効にしますか?も表示します。 チェックボックスを選択すると、起動スクリプトが作成され、起動時にファイアウォールも有効になります。ファイアウォールの設定オプションは次のとおりです。
- すべてのトラフィックを許可する
- 選択すると、ファイアウォールは「空」になり、すべてのトラフィックが通過できるようになります。
- 外部インターフェースでネットワークアドレス変換を行う
- ファイアウォールはNAT用に設定されるため、内部LAN上のホストは、単一のパブリックIPアドレスを持つホストを介してインターネットにアクセスできます。このオプションの横にあるリストから、ppp0など、インターネットに接続されているネットワークインターフェイスを選択する必要があります。
- 外部インターフェース上のすべての着信接続をブロックする
- 選択した場合、ファイアウォールは、確立された接続、DNS応答、および無害なICMPパケットを除き、選択したネットワークインターフェイスでシステムに着信するすべてのトラフィックをブロックするように設定されます。選択するインターフェースは、ppp0などのインターネットに接続されているインターフェースである必要があります。
モジュールが初めて使用され、Webminがシステムにファイアウォールがすでに存在することを検出した場合、そのルールが表示され、モジュールを使用して編集できるように、保存ファイルに変換するように求められます。 。 ファイアウォールルールの保存をクリックしてこれを行うことを選択した場合 ボタンをクリックすると、既存のすべてのテーブル、チェーン、およびルールが安全に記録されます。必要に応じて[*起動時にファイアウォールを有効にしますか?*]チェックボックスも表示されます。これを選択すると、Webminは起動スクリプトを作成して、保存されたファイアウォールルールを起動時にアクティブにします。
手動で作成した既存のファイアウォール構成を変換する場合は、起動時に設定する既存のスクリプトを必ず無効にしてください。そうしないと、古いスクリプトとWebminによって作成されたスクリプトの両方が実行され、このモジュールで設定されたルールが古い手動構成によってキャンセルされる可能性があります。
ネットワークトラフィックの許可と拒否
ファイアウォールが受け入れるまたは転送する接続とパケットのタイプを制限するには、追加のファイアウォールルールを作成する必要があります。これらのルールに最適な場所は、パケットフィルタリングです。 テーブル、着信パケットのいずれか または転送されたパケット 鎖。ファイアウォールがルーターとして機能していて、ファイアウォール自体ではなく、ファイアウォールが接続されている安全なネットワーク上のシステムを保護したい場合は、転送されたパケット チェーンを使用する必要があります。ただし、ファイアウォールとファイアウォールがルーティングする他のシステムの両方を保護する場合は、着信パケットにルールを追加する必要があります。 鎖。
また、ローカルプロセスから送信されたり、他のホストから転送されたりする可能性のある、システムから送信されるデータを制限することもできます。これを行うには、送信パケットにルールを追加します。 鎖。これは、必要に応じて、ローカルユーザーが接続できるアドレスとポートを制限するのに役立ちます。
トラフィックをブロックする新しいルールを作成するには、次の手順に従います。
- モジュールのメインページで、パケットフィルタリングを選択します Show IPtableの横のリストから ボタンをクリックし、それをクリックしてフィルタリングテーブルに切り替えます。
- すべての着信トラフィックに適用されるルールを追加するには、[ルールの追加]をクリックします 着信パケットのボタン セクション。転送されるトラフィックのみを制限する場合は、代わりに[転送されるパケット]の下のボタンをクリックします。いずれの場合も、下のスクリーンショットに示すルール作成フォームが表示されます。
- 実行するアクションを変更します ドロップする 、このルールに一致するパケットがファイアウォールによってサイレントに破棄されるようにします。
- 条件の詳細 セクションで、どのパケットが一致してドロップされるかを決定する条件を選択します。 無視に設定されていないすべての条件に一致するパケットのみ ドロップされます。特定の種類のトラフィックをブロックするために選択する条件の例は次のとおりです。
- 特定のTCPポートへのすべての接続をブロックする
- ネットワークプロトコルを設定します フィールドを等しい TCPを選択します 。ポートをブロックするには、プロトコルを常に選択する必要があります。 宛先TCPまたはUDPポートを設定します 〜等しい ポートにポート番号を入力します その隣のフィールド。 [ポート]フィールドにカンマで区切った数字のリストを入力して複数のポートをブロックするか、[ポート範囲]を選択して範囲全体をブロックできます。 開始ポートと終了ポートをその隣のフィールドに入力します。
- 特定のアドレスからのすべてのトラフィックをブロックする
- *送信元アドレスまたはネットワーク*を等しいに設定します ブロックするIPアドレスをその横のフィールドに入力します。 130.194.164.0 / 24 のようなネットワーク/プレフィックスのペアを入力して、ネットワーク全体をブロックすることもできます。 フィールドに。 接続状態を設定します 〜等しくない 既存の接続を選択します その隣のメニューから。この手順により、システムはブロックされたアドレスに接続できますが、その逆はできません。
- 特定のアドレスへのトラフィックをブロックする
- 宛先アドレスまたはネットワークを設定します 〜等しい ブロックするIPアドレスまたはネットワークをその横のフィールドに入力します。これにより、ブロックされたシステムがシステムに接続するのも効果的に停止するため、接続状態を設定することをお勧めします。 〜等しくない 既存の接続を選択します その隣のメニューから。いずれの場合も、通常は受信インターフェースを設定することをお勧めします インターネットに接続されているネットワークインターフェイス(ppp0など)に接続するため、ローカルLANからの接続には制限が適用されません。
- 条件の選択が完了したら、作成をクリックします ボタン。入力にエラーがない限り、新しいルールが一覧表示されるモジュールのメインページに戻ります。
- 新しいルールをアクティブにするには、[構成の適用]をクリックします ページ下部のボタン。
ルール作成フォーム
各チェーンのルールは上から下に順番に評価され、実行されるアクションはどちらが最初に一致するかによって決定されます。一致するものがない場合は、チェーンのデフォルトのアクションが実行されます。これは通常、パケットを受け入れることです。この評価順序を利用して、単一のIPアドレスを許可するルールを作成し、その後にネットワーク全体を拒否するルールを作成できます。最終的な効果は、ネットワーク内のすべてのホストが1つを除いて拒否されることです。
ルールの順序が重要であるため、既存のチェーンの途中にルールを追加したい場合があります。これを行うには、チェーンの追加の下にある矢印ボタンを使用します モジュールのメインページの列で、既存のルールの前または後に新しいルールを作成します。
最も一般的なアクションとその意味を以下に示します。すべてのチェーンとテーブルですべてが利用できるわけではありません。
- 何もしない
- このアクションのルールが一致した場合、何も行われず、処理は次のルールに進みます。
- 受け入れる
- 一致するパケットはすぐに受け入れられ、チェーン内でそれ以上の処理は行われません。ただし、他のテーブルのルールがパケットに影響を与える可能性があります。
- ドロップ
- 一致するパケットは、まったく受信されなかったかのように、黙って破棄されます。このチェーンまたはその他のチェーンでは、これ以上の処理は行われません。
- ユーザースペース
- パケットは通常のユーザースペースプロセスに渡されます。このアクションはめったに使用されません。
- 出口チェーン
- すぐにチェーンの最後にジャンプし、代わりにデフォルトのアクションを実行します。これがユーザー定義のチェーンで使用されている場合、処理はそれを呼び出したルールに戻ります。
- マスカレード
- 一致するパケットの送信元アドレスは、ファイアウォールシステムから送信されたように見えるように変更され、チェーン内のそれ以上のルールは処理されません。このアクションを選択すると、マスカレード用のソースポートを使用できます。 ファイアウォールがマスカレード接続に使用するポートを制御するフィールド。 ネットワークアドレス変換の設定を参照してください。 詳細については、セクションを参照してください。 仮面舞踏会 このオプションは、ネットワークアドレス変換でのみ使用できます。 テーブル、*ルーティング後のパケット*チェーン内。
- ソースNAT
- マスカレードに似ています オプションですが、インターネットIPアドレスが固定されているシステムに適しています。選択した場合、SNATのIPとポートを使用できます ネットワークアドレス変換で使用可能なフィールドを制御します テーブル、ルーティング後のパケット チェーン。
- 宛先NAT
- 一致するパケットの宛先アドレスとポートは、DNATフィールドのIPとポートに基づいて変更されます。これが透過プロキシの基礎であるため、詳細については、透過プロキシの設定を参照してください。 以下のセクション。このアクションは、ネットワークアドレス変換でのみ使用できます。 テーブル、ルーティング前のパケット および出力 チェーン。
- リダイレクト
- このアクションは、一致するすべてのパケットを、[リダイレクトのターゲットポート]フィールドで指定されたファイアウォールボックス上の1つまたは複数のポートにリダイレクトします。宛先NATの方が柔軟性がありますが、透過プロキシにも使用できます。リダイレクトアクションは、ネットワークアドレス変換でのみ使用できます。 テーブル、ルーティング前のパケット および出力 チェーン。
チェーンの実行を選択することもできます 実行するアクションのオプション 、その隣のフィールドに入力されたユーザー定義のチェーンまたはカスタムターゲットにパケットを渡します。ユーザー定義チェーンの詳細については、以下の「独自のチェーンの作成」セクションを参照してください。使用可能なターゲットには、LOG(syslogにパケットを記録するため)、MIRROR(パケットを送信者に反映するため)、およびMARK(後の条件のためにパケットをマークするため)があります。
条件ごとに、オプション無視 、等しい および*等しくない*を選択できます。 1つ目は、パケットがルールに一致するかどうかを確認するときに、条件がまったく使用されないことを意味します。 2つ目は、パケットがルール全体に一致するために条件に一致する必要があることを意味し、3つ目は、パケットが実行されるルールの条件に一致してはならないことを意味します。たとえば、「着信インターフェイス」条件が「等しくない」に設定され、eth0が選択された場合、ルールは、プライマリイーサネットカードを除くすべてのインターフェイスで着信するパケットのみに一致します。
ほとんどすべてのネットワークプロトコルには2方向に流れるトラフィックが含まれるため、送信元アドレスまたはネットワークを使用して、あるアドレスからの着信トラフィックのみをブロックしようとします。 接続の一部である応答パケットがドロップされるため、条件はアドレスへの接続もブロックします。 宛先TCPまたはUDPポートを使用して特定のポートで着信データをブロックする場合も同様です。 条件-万が一、システムからランダムに選択された接続の送信元ポートがブロックされたポートと一致する場合、そのポートへの応答はすべてドロップされます。これらの理由から、通常、拒否ルールを作成して接続状態を設定することをお勧めします。 等しくないの条件 既存の接続を選択します その隣のメニューから。これにより、IPtablesはサーバーによって行われた発信接続を追跡し、それらをブロックしません。
ご覧のとおり、非常に複雑なルールを作成するために組み合わせることができるさまざまな条件が利用可能です。使用可能な各条件の詳細については、以下の「ファイアウォールルールの条件」セクションを参照してください。非常に多くの条件があるため、Webminでは既存のルールとほぼ同じ新しいルールを作成できます。これを行うには、既存のルールをクリックして編集し、クローンルールを使用します ページの下部にあるボタンをクリックして、元のルールに基づいて設定されたすべての条件とアクションを含むルール作成フォームに移動します。
チェーンのデフォルトアクションの変更
チェーン内のどのルールにも一致しないパケットは、通常はパケットを受け入れるデフォルトのアクションを使用して処理されます。モジュールのメインページで、各チェーンのデフォルトのアクションがデフォルトのアクションを設定の横に表示されます。 ボタン。変更するには、次の手順に従います。
- [デフォルトのアクションを設定する]ボタンの横にあるメニューから新しいアクションを選択します。 承諾のみ 、ドロップ 、ユーザースペース および出口チェーン アクションが利用可能です-その意味については、上記の*ネットワークトラフィックの許可と拒否*のセクションを参照してください。通常、許可のみ およびドロップ デフォルトのアクションとして意味があります。
- デフォルトのアクションを設定をクリックします ボタンをクリックして、新しいデフォルトを保存します。
- ドロップに変更する場合 、システムが他のサーバーにアクセスして重要なサービスを提供できるように、必要なファイアウォールルールを追加します。
- 完了したら、[構成の適用]をクリックします ボタンをクリックして、新しいデフォルトをアクティブにします。
デフォルトのアクションをドロップに変更するだけです 着信パケットの場合は、システムをネットワークから完全に切り離し、場合によっては使用できなくする簡単な方法です。その前に、少なくとも次の種類のトラフィックを許可していることを確認してください。
- 確立されたすべての接続。 許可を作成する 接続状態のルール 等しいに設定 および既存の接続 選ばれました。
- FTPデータ接続など、確立された接続に関連する接続。 許可を作成する *接続状態*が等しいに設定されたルール および関連する接続 選ばれました。
- ループバックインターフェイス上のすべてのトラフィック。 許可を作成する 受信インターフェースを使用したルール 等しいに設定 そして選ばれました。
- プライマリネットワークインターフェイスでのシステムからそれ自体へのトラフィック。インターフェイスごとに、*送信元アドレスまたはネットワーク*と宛先アドレスまたはネットワークの両方を使用して許可ルールを作成します インターフェイスのIPアドレスに設定します。
- 安全なICMPタイプ。 4つの許可を作成します *ICMPパケットタイプ*が等しいに設定されているルール そして、echo-reply、destination-unreachable、source-quench、time-exceededが選択されました。
転送されたパケットのデフォルトのアクションをドロップに変更します 多くの問題は発生しません。転送を完全にオフにするのと同じです。送信パケットのデフォルトアクションをドロップに変更 すべてのネットワークアクセスが遮断されるため、これは悪い考えであり、ほとんどの場合、ほとんど意味がありません。
ファイアウォールルールの編集
Webminを使用して、手動で、別のプログラムで、またはこのモジュールを使用して作成された既存のファイアウォールルールを編集できます。モジュールが利用可能なIPtablesの条件とアクションのオプションのすべてをサポートしているわけではありませんが、それを使用して、不明なオプションを含むルールを安全に編集できます。 Webminに知られているものだけを変更でき、他のものは変更されません。
ルールを編集するには、次の手順に従います。
- モジュールのメインページで、IPtableの表示の横にあるリストからルールが含まれているテーブルを選択します それをクリックする前にボタン。
- チェーンのテーブルで、変更するルールのアクションをクリックします。これにより、図19-3に示す作成フォームと同じ編集フォームが表示されます。
- アクションまたは条件のいずれかを変更し、保存をクリックします ボタンをクリックして、チェーンとルールのリストに戻ります。または、ルールを完全に削除するには、削除をクリックします ボタン。
- 変更をアクティブにするには、[構成の適用]をクリックします 。
ルールは、移動の下の矢印を使用して、チェーン内で上下に移動できます。 メインページの列。ルールはファイアウォールによって順番に評価されるため、ルールの順序を変更すると、許可または拒否されるトラフィックに影響を与える可能性があります。新しいルールを作成するたびに、そのルールはチェーンの最後に追加されるため、目的の効果を得るには、ルールを正しい位置に移動する必要がある場合があります。
独自のチェーンを作成する
標準のルールに加えて、独自のカスタムチェーンのルールを作成することができます。違いは、標準チェーンの1つにあるルールのアクションが、カスタムチェーンに明示的にジャンプするように設定されている場合にのみ実行されることです。カスタムチェーン(または終了チェーンのルール)の実行が終了したとき アクションが一致した場合)、評価は呼び出しチェーンに戻ります。つまり、カスタムチェーンを使用して、同じルールを複数の場所で繰り返す代わりに、複数の標準チェーンで共有されるルールを定義できます。ある意味で、カスタムチェーンはプログラミング言語のサブルーチンのようなものです。
独自のチェーンを作成するには、次の手順に従います。
- モジュールのメインページで、 Showing IPtable の横のメニューから、チェーンを含めるテーブルを選択します。 、ボタンをクリックします。カスタムチェーンは、同じテーブル内の他のチェーンからのみ呼び出すことができます。
- 新しいチェーンの名前を名前の付いた新しいチェーンを追加の横にあるテキストボックスに入力します ボタンをクリックし、ボタンをクリックして作成します。チェーン名は一意である必要があり、通常は小文字と数字のみで構成されます。
- 新しいチェーンが作成されると、ページの下部に表示されます。 ルールの追加を使用できます 通常のチェーンの1つと同じように、ボタンを押してルールを追加します。
カスタムチェーンにはデフォルトのポリシーがないため、メインページに[デフォルトのアクションを設定する]ボタンはありません。チェーンの実行が終了すると、制御は常に呼び出し元に戻ります。ただし、チェーンの削除を使用して、カスタムチェーンを削除できます。 ルールのテーブルの下にあるボタン。
カスタムチェーンには、他のカスタムチェーンにジャンプするルールを含めることができます。ただし、チェーンはそれ自体にジャンプすることはできません。また、別のチェーンにジャンプして最初のチェーンにジャンプしてループを作成することもできません。これが可能であったとしても、それは非常に悪い考えです!
ネットワークアドレス変換の設定
自宅やオフィスに複数のシステムがLANで接続されていて、インターネットIPアドレスが1つしかない場合は、ネットワークアドレス変換を使用して、これらすべてのシステムにほぼ完全なインターネットアクセスを提供できます。 NATは、内部LAN上のすべてのシステムのアドレスを単一のインターネットアドレスの背後に隠し、必要に応じてアドレスとポートを相互に変換します。これにより、すべての内部システムが、Webサーバー、DNSサーバー、POP3サーバーなどのインターネット上の任意のホストに接続できるようになります。唯一の制限は、内部システムが他のインターネットホストからの接続を受信できないことです。これにより、一部のプロトコル(インターネットテレフォニーやネットワークゲームなど)が失敗する可能性があります。
この制限により、外部インターフェイスに着信するすべての転送パケットをブロックする場合と同様に、内部システムはインターネット上の他のホストからのほとんどの攻撃から保護されます。 NATを使用すると、実際には必要のない内部ホストに割り当てるために実際のインターネットアドレスが不足することを心配する必要がないため、IPアドレスの割り当ても簡単になります。これらの理由から、ネットワークの観点からは完全に必要ではない場合でも、組織にNATを設定することは理にかなっている場合があります。
NATは、内部ホストによって送信され、ファイアウォールを介してルーティングされるパケットの送信元アドレスとポートを変更することによって機能します。送信元アドレスは常にファイアウォールシステムの外部IPアドレスに変更され、送信元ポートはランダムに選択された未使用のポートに変更されます。応答パケットが戻ってくると、その宛先ポートを使用して、パケットの転送先となる元の内部クライアントIPアドレスとポートが決定されます。
NATを設定するために本当に必要なのは、2つのネットワークインターフェイスを備えたシステムです。1つは内部LAN用で、もう1つはダイヤルアップ、ISDN、またはブロードバンドを介してインターネットに接続されています。これを取得したら、実行する手順は次のとおりです。
- 内部LANでは、すべてのシステムのイーサネットインターフェイスに、ゲートウェイシステムを含む192.168.0.0などのプライベートIPネットワーク上のアドレスを割り当てる必要があります。
- すべての内部システムのデフォルトルーターをゲートウェイシステムのLANIPアドレスに設定します。
- [ルーティングとゲートウェイ]の[ネットワーク構成]モジュールで、ゲートウェイでIP転送が有効になっていることを確認します。これを行う方法の詳細については、NetworkConfigurationを参照してください。
- ゲートウェイシステムのLinuxファイアウォールモジュールのメインページで、ネットワークアドレス変換を選択します。 Showing IPtableの横のリストから ボタン。次に、ボタンをクリックして、NATテーブルにチェーンを表示します。
- ルールの追加をクリックします ルーティング後のパケットのボタン セクション。ルール作成フォームに移動します。
- 実行するアクションを設定します 仮面舞踏会へ 。
- ファイアウォールがマスカレード接続に使用するポートを制御するには、マスカレード用の送信元ポートを設定します。 ポート範囲のオプション 開始ポート番号と終了ポート番号をその横のフィールドに入力します。通常は任意を選択するだけです ファイアウォールで使用可能なポートを使用できるようにすると、正常に機能します。
- 送信インターフェースを変更します 等しいの条件 その横にあるリストから、ppp0などの外部ネットワークインターフェイスを選択します。
- ページの下部にある[保存]ボタンをクリックして、チェーンとルールのリストに戻ります。
- 構成の適用をクリックします 新しいルール(およびNAT)をアクティブにします。
パケットフィルタリングでは、NATを他のファイアウォールルールと組み合わせることができます。 ファイアウォールホスト自体への接続をブロックするテーブル。 *ルーティング後のパケット*チェーンに拒否ルールを追加して、特定の内部ホストがインターネットにアクセスするのを停止したり、接続できるポートを制限したりすることもできます。
上記の手順は、単一のインターネットIPアドレスを持つゲートウェイシステムを備えたすべてのネットワークで機能します。ただし、ゲートウェイのアドレスが静的である場合は、ソースNATを選択することをお勧めします ステップ6でマスカレードの代わりに 。マスカレードを使用する場合、ファイアウォールによって転送されている接続は、外部ネットワークインターフェイスがダウンすると、同じIPアドレスで再び起動した場合でも失われます。外部インターフェイスに動的に割り当てられたアドレスがある場合、接続が失われるため、これは問題ではありません。ただし、静的IPアドレスを使用すると、ネットワークが短時間停止しても接続が維持される可能性があります。
これを使用するには、手順6で実行するアクションを設定します ソースNAT 。次に、SNATのIPとポートを設定します 〜IP範囲 システムの静的外部IPアドレスをその横のフィールドに入力します。 NATセットアッププロセスの他のすべてのステップは同じです。
透過プロキシの設定
多くのネットワークは、Squidなどのプロキシサーバーを使用して、一般的にアクセスされるWebサイトをキャッシュし、Webブラウジングクライアントが使用する帯域幅の量を削減します。ただし、通常、各クライアントは、Webサイトに直接接続するのではなく、プロキシサーバーを使用するように構成する必要があります。多くのクライアントシステムがある大規模なネットワークや、多くの異なる人々が所有するISPでは、この個別の構成は難しい場合があります。各ブラウザが独自のプロキシサーバー設定を持っているため、さらに悪化します。そのため、ユーザーが新しいブラウザをインストールすると、デフォルトでプロキシをまったく使用しないことになります。
幸いなことに、解決策があります-透過プロキシ。すべてのクライアントシステムがIPtablesファイアウォールを実行しているゲートウェイを介してインターネットにアクセスする場合、ポート80(ほとんどのWebサイトで使用)への接続を他のシステムのプロキシサーバーにリダイレクトするように構成できます。これは、クライアントがプロキシにアクセスするように構成する必要がないことを意味します。クライアントが行うHTTP要求は、知らないうちにプロキシサーバーに透過的に送信されるためです。
透過プロキシを設定するには、次の手順に従います。
- ゲートウェイシステムのLinuxファイアウォールモジュールのメインページで、ネットワークアドレス変換を選択します。 Showing IPtableの横のリストから それをクリックする前にボタン。
- In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all traffic on port 80 forwarded by the firewall system to a proxy server.
- Set the Action to take to Destination NAT 。
- In the IPs and ports for DNAT field, select IP range and enter the address of the proxy server system into the field next to it. If the proxy is running on the same system, enter its Ethernet IP address (not 127.0.0.1). In the field next to Port range , enter the port the proxy server is running on, such as 8080.
- Set the Incoming interface to Equals and select the internal LAN interface, such as eth0.
- Set the Network protocol to Equals and select TCP 。
- If the proxy is on another system that is also on the internal LAN, make sure that its connections on port 80 will not be proxied by the firewall as well! To do this, set the *Source address or network* condition to Does not equal and enter the IP address of the proxy server into the field next to it. If the proxy is on a different LAN or is the firewall system, this is not necessary.
- Set the Destination TCP or UDP port to Equals and enter 80 into the Port(s) 分野。
- Click the Create button to save the rule and return to the module's main page.
- Click on Add rule under Packets after routing to bring up the rule creation form again. This rule will forward packets back in the other direction from the proxy to the client. If your firewall system is also running the proxy server, this rule is not necessary and you can skip to step 16.
- For the Action to take , select Source NAT 。
- In the IPs and ports for SNAT field, select IP range and enter the LAN IP address of the firewall server into the field next to it.
- Set the Destination address or network to Equals and enter the IP address of the proxy server into the field next to it.
- Set the Network protocol to Equals and select TCP 。
- 作成をクリックします button to add the new rule.
- Back on the main page, click the Apply Configuration ボタン。 All packets on port 80 forwarded by your firewall will now be sent to the proxy server instead.
- Assuming you are running the Squid proxy server (version 2.4 or above) on the proxy system, you can use Webmin to configure it. Otherwise, there is no point reading beyond this step.
- On the proxy system, enter the Squid Proxy Server module and click on Miscellaneous Options.
- Set the HTTP Accel Host field to Virtual , and the *HTTP Accel Port* to 80 。
- Set both the HTTP Accel With Proxy and *HTTP Accel Uses Host Header* fields to Yes.
- 最後に、[保存]をクリックします to return to the main page of the Squid module, and click the Apply Changes link near the top of the page to activate the new configuration.
From now on, any HTTP requests on port 80 forwarded by your firewall will be sent to the proxy server for processing. Transparent proxying can be safely used at the same time as conventional NAT by creating a masquerade rule in the packets after routing chain, as explained in the instructions in the *Setting up network address translation* section above.
Setting up port forwarding
On a network that uses NAT to hide internal systems from the Internet, outside hosts cannot connect directly those on the internal network. This is great for security, but can be annoying if there is some internal service that you do want to make available to the outside world. For example, your mail server system may not be the firewall host, which would normal make it inaccessible from the Internet. Fortunately, there is a solution to this problem - port forwarding.
This lets you re-direct all connections to some port on the firewall system to a different host and port on your internal network. For a mail server, all data received on port 25 might be send to the same port on the host that is actually being used to host user email. Of course, this would make it impossible for your firewall system to receive email itself.
To set up port forwarding, follow these steps :
- On the main page of the Linux Firewall module on the gateway system, select Network address translation from the list next to the Showing IPtable それをクリックする前にボタン。
- In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all external traffic received by the firewall to some internal address.
- Set the Action to take to Destination NAT 。
- In the IPs and ports for DNAT field, select IP range and enter the address of the internal host into the adjacent text box, such as 192.168.1.10 。 In the Port range box, enter the port number on the internal host to which data should be sent, such as 25 for SMTP, 110 for POP3 or 80 for HTTP.
- Set the Network protocol to Equals and select TCP 。
- In the Destination TCP or UDP port field, select Equals from the menu and enter the external port number for which forwarding should be done into the adjacent text field. Typically this will be the same as the port entered in step 4.
- 保存を押します button to create the rule and return to the main page, and then click the Apply Configuration ボタン。
The only problem with this method is that connections from inside your network to the firewall system will not be forwarded to the other host.
Firewall rule conditions
When creating a firewall rule, you can select many different conditions to control which packets the rule matches. A rule's action will only be executed if all the conditions are matched. Each condition can be in one of three states, chosen by the menu next to it on the rule creation form :
- Ignore The condition will be totally ignored when deciding whether the rule matches or not.
- Equals The rule will only match if the packet matches the address, port, interface or whatever was selected for this condition.
- Does not equal The rule will only match if the packet does NOT match whatever was selected for this condition.
The available conditions and what each matches are listed in the table below. Note that some are not available in all tables and chains.
Remember that each condition is applied on a per-packet basis, and that a single TCP connection may involve multiple packets flowing in both directions.
コンテンツ
関連項目
- ショアラインファイアウォール
- Shorewall6ファイアウォール
- FirewallD