はじめに
IPTablesは、すでにインストールされているか、クラウドサービス用の任意のLinuxディストリビューションにインストールできるファイアウォールです。 IPTablesは、パケットフィルタールールチェーンを構成し、サーバーに組み込みまたはユーザー定義のルールチェーンを適用するために使用されます。 IPTablesには、テーブルを含む主要なコンポーネントがあります。 、ターゲット 、およびオプション 。
テーブル
IPTablesのテーブルは、パケットを一致するカテゴリに分類するために使用されます。テーブルの並べ替えは、システムがロードしたモジュールとパケットが一致する場所によって異なります。現在、使用できる5つの異なるテーブルがあります。それらはフィルターです 、 nat 、マングル 、生 、およびセキュリティ 。ほとんどの場合、基本的なIPTablesの使用にはフィルターが含まれます。 テーブル。内部ルーティングまたはより複雑なネットワークを実行している場合は、他のテーブルの使用にも焦点を当てます。このページでは、フィルターのみを確認します。 タイプルール。
フィルター –これは前述の基本テーブルであり、通常はデフォルトのテーブルです。このテーブルは、ACCEPT、FORWARD、OUTPUTのルールチェーンで構成されています。
nat –このテーブルは、新しい接続を作成するパケットに使用されます。パブリックIPをプライベートIPにルーティングするようなものです。これは、PREROUTING、POSTROUTING、およびOUTPUTのルールチェーンで構成されています。
マングル –このテーブルは、パケットの処理方法を変更するために使用されます。これは、INPUT、FORWARD、OUTPUT、PREROUTING、およびPOSTROUTINGのルールチェーンで構成されています。
生 –このテーブルは、NOTRACKターゲットとの接続追跡からの免除を構成するために使用されます。 PREROUTINGとOUTPUTで構成されています。
セキュリティ –この表は、MAC(強制アクセス制御)ルール用です。 INPUT、FORWARD、OUTPUT
で構成されています
ターゲット
ターゲットは、作成するルールチェーンの値として定義されます。 ACCEPTの値を含めることができます 、ドロップ 、 QUEUE 、または RETURN 。これらの値は、ルールに一致するパケットを処理する方法をルールに指示します。
同意する –これは非常に簡単で、パケットがサーバーに到達できるようにすることを意味します。
ドロップ –また、サーバーへのパケットを拒否することを意味するという点で非常に簡単です。
キュー –このターゲットは、パケットをユーザースペースに渡して、ユーザーがパケットの処理方法を定義できるようにすることを意味します。
返品 –このターゲットは、現在のチェーンの処理を停止し、前のチェーンの次のルールで処理を再開するように指示します。
オプション
IPTablesで使用できるオプションはたくさんあります。表示される一般的なものをいくつかリストします。
-A、–append –ルールをチェーンに追加します。
-L、–list [chain] –これにより、指定したチェーン内のすべてのルールが一覧表示されます。チェーンを提供しない場合は、すべてのルールが一覧表示されます。
-F、–flush [chain] –これにより、指定されたチェーン内のチェーンとルールがすべて削除されます。チェーンを指定しない場合、現在実行中のすべてのルールとチェーンが削除されます。
-h –これはあなたがするかもしれないすべてのオプションの出力を提供します。
-p、–protocolプロトコル –これはパケットプロトコルです。これらは、TCP、UDP、UDPlite、ICMP、ESP、AH、SCTP、すべて、これらと同等の数、または!で始まることができます。プロトコルチェックを反転します。
-s、–送信元アドレス[/ mask] [、…] –送信元アドレス。 IP、ネットマスク経由のIP範囲、ネットワーク名、またはホスト名にすることができます。
-d、–destination address [/ mask] [、…] –宛先アドレス。 –sと同じ形式。
-m、–match match –プロパティをテストする拡張モジュール。
–dport [s] [ port# ] [、…] –探しているポート。 –dportsは、コンマで区切られた複数を指定するために使用されます。 –dportsを使用する場合は、必ず-mをマルチポートとして設定してください。ポート範囲を指定するには、ポート1000〜1100になる1000:1100などの:を使用します。
-j、–jump target –これは、ルールのターゲットを指定できるオプションです。
-i、–in-interface name –パケットを受信するインターフェイスを指定します。
-o、–out-interface name –パケットが残すインターフェースを指定します。
-v、–verbose – listコマンドにインターフェイス名、ルールオプション、および任意のマスクを表示させます。パケットカウンターとバイトカウンターも表示されます。
使用法と例
ここでは、いくつかの基本的な使用法と例を示します。一般的なIPTablesルールは、これらの形式に従う傾向があります。これはテーブルを終了するために使用されるため、すべてのルールがCOMMITより上で実行されていることを確認してください。別のテーブルのルールは、独自の終了COMMITに従います。
確立されたトラフィックを許可する場合:
-入力-m一致 –state ESTABLISHED、RELATED -j ACCEPT
使用中は次のようになります:
-A INPUT -m state –state ESTABLISHED、RELATED -j ACCEPT
特定のポートを許可するため。
-入力-pプロトコル -m一致 –dport port -j同意する
使用中の例は次のとおりです。
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
または
-A INPUT -p tcp -m multiport –dports 80,443 -j ACCEPT
これにより、Webトラフィックがポート80(2番目の例ではポート443も)を通過できるようになります。これがすべてではありません。以下の例のように、以下を追加することもできます。
-入力-sIPADDR -p tcp -m tcp –dport 22 -j ACCEPT
これにより、IPアドレス( IPADDR )のみが許可されます )ポート22(ssh)で指定します。-sオプションで許可されている任意の形式のIPアドレスを使用できます。
-A INPUT -p tcp -m tcp –dport 22 -j DROP
上記の例に沿って、これにより、SSHポートに送信されるすべてのTCPトラフィックがドロップされます。チェーン内のACCEPTルールのリストの一番下に常にDROPルールを配置することをお勧めします。例:
-入力…-jACCEPT
-入力…-jACCEPT
-入力…-jACCEPT
-入力…-jドロップ
-前進…-j受け入れる
-前進…-j受け入れる
-前進…-j受け入れる
-フォワード…-jドロップ
-A出力…-jACCEPT
-A出力…-jACCEPT
-A出力…-jACCEPT
-出力…-jドロップ
デフォルトの動作のために、IPTablesの上部にターゲット(ACCEPTやDROPなど)を定義することもできます。 IPTablesの新規インストールの場合、デフォルトの動作(INPUT、FORWARD、およびOUTPUTがリストされている上部で定義されている)が常にACCEPTとして表示されます。セキュリティの大まかな目安は、DROPに変更し、許可するポートまたはトラフィックのルールのみを作成することです。ただし、必要な例外を作成したことが確実な場合にのみ変更してください。
また、テーブルの上部で、独自のターゲットを定義できます。 IPTablesの上部に次のものがあるとします。
*フィルター
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
コミット
さて、すべてをブロックしたので、次のような独自のターゲットを追加することから始めましょう:
*フィルター
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:APP – [0:0]
:MyNewTarget – [0:0]
コミット
これで、次のようなカスタムタイプのルールチェーンを作成できます。
*フィルター
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:APP – [0:0]
:MyNewTarget – [0:0]
-A APP -p tcp -m multiport –dports 30:40,50:80 -j ACCEPT
-入力-sIPADDR -j MyNewTarget
-MyNewTarget -j APP
コミット
上記で行ったことは、新しいターゲットAPPとMyNewTargetを作成し、それらにオプションとターゲットを割り当てることです。最後のルール(COMMITより上)が行うことは、接続がソースIPからのものであり、ポート30〜40または50〜80に到達しようとしている場合は、通過を許可することです。それはすべて上記のチェーンで定義されています。このレベルのカスタマイズは、複数のホストを使用している場合やポートを使用している場合を除いて、実際には必要ありません。繰り返して、ルールを作成するためのショートカットまたは「ショートカット」が必要な場合を除きます。たとえば、そのソースIPから取得する必要のある新しいルールは、MyNewTargetを使用するだけで済みます。
全体として、IPTablesはルールの多くのカスタマイズを提供し、サーバーが着信、発信、および内部トラフィックを処理する方法を処理できるようにします。一部のルールは混乱を招き、従うのが難しい場合がありますが、サーバーの安定性に役立つことは間違いありません。