iptablesの設定内容確認と設定例

iptablesの設定内容確認方法と設定例をいくつかメモとして載せます。

iptablesの設定内容確認

iptablesの設定を行う前に現状の設定内容を確認するために下記のコマンドを実行します。

これを実行すると現状のフィルタリングルールを確認することができ、下記のように表示されると思います。(下記の表示結果はubuntu12.04の場合です)

上記のような結果が表示された場合は、policy ACCEPTと書かれていることから、全てのパケットに対して入ってくること、出ていくことが許可されている状態になります。なお、もしすでになにかしらルールが設定されている場合は、下記のコマンドを実行することで全てのルールを初期化(全削除)することができます。

iptablesにルールを追加してそのルールの効果を確認する上では、一度初期化して随時ルールを追加していくと検証しやすいと思います。ただし、当然ながらルールを初期化すると全てのパケットを受け入れることになるためセキュリティを十分考慮した環境で行って下さい。ちなみに、iptablesの設定内容をより細かく確認したい場合は下記のコマンドを実行すると良いかもしれません。

上記のコマンドは、「–numeric」、「–verbose」、「–list」オプションそれぞれを略記形式で実行したコマンドであり、下記が実行結果になります。「–list」だけで表示した結果に比べて、「pkts」、「bytes」、「in」、「out」が追加表示されることが分かります。

「- -numeric」は、数値で表示することを指示するオプションであり、「- -verbose」はインタフェース、ルールオプションを表示することを指示するオプションです。詳細は下記URLのiptablesチュートリアルを参照して下さい。

iptablseチュートリアル


iptablesの設定例

以下にiptablesの簡単な設定例をいくつか載せます。

例1:特定のインタフェースに入ってくるパケットを全て廃棄する

eth0に入ってくるパケットを全て廃棄します。

上記のコマンドは各コマンドの略記を使うことで下記のようにも表せます。

以降では全て略記を使います。ちなみに、「-t」を使わずテーブルを指定しなかった場合は、デフォルトでfilterテーブルが指定されることになります。なので、filterテーブルを指定する場合は「-t filter」は無くても同じです。

例2:ホストマシンからの通信に対する相手の応答通信を許可する

eth0に入ってくるパケットのうち、ホストマシンに対する応答通信であるパケットは通過を許可します。
「- -match state – -state ESTABLISHED,RELATED」の部分によって応答通信であるパケットに限定しています。
「- -match」はモジュール名を指定してモジュールを使うためのオプションです。「- -match state」により、「state」モジュールの使用を指定しています。「state」モジュールを使用して「ESTABLISSED、RELATED」を指定することで、応答パケットに限定しています。

※iptablesの注意点
iptablesではルールに優先順位が存在します。具体的には、ルールは基本的にルールを追加した順に高い優先順位がつけられ、iptablesでは高い優先順位のルールから順番に処理されていきます。例えば、下記のコマンドを順番に実行してみます。

実行後、「iptables – -list」によってルール内容を確認すると、下記のようになります。

iptablesでは各チェインの一番上のルールから順番に適用していきます。そして上記の場合は、INPUTチェインの一番上のルールがDROPでありかつその対象が全パケットであるため、次のACCEPTが適用されることはありません。すなわち、iptablesでは、ルールの順番が重要であり、パケットの対象範囲が小さいルールから順番に適用されるようルールを記述することが重要になります。なお、ルールの順番は追加した順番と同じになりますが、「- -replace」や「- -insert」などのルール操作コマンドを使うことでルールの順番を操作できます。(iptablesの概要メモを参照)


例3:特定の送信元IPアドレスのパケットの宛先IPアドレスと宛先ポート番号を変換する

送信元IPアドレスが192.168.101.0/24でありかつ宛先ポート番号が80番であるパケットの宛先IPアドレスを192.168.101.101、宛先ポート番号を3128番に変換する


例4:特定のインタフェースに入ってきたパケットの宛先ポート番号を変換する

インタフェースeth0に入ってきたパケットの内、宛先ポート番号が80番であるパケットの宛先ポート番号を3128番に変換する


iptablesの設定保存方法

これまでに設定したルールはiptablesが動作するホストマシンを再起動すると消えて無効になってしまいます。そこで、再起動後も設定したルールを継続して有効にするためにiptables-save、iptables-restoreコマンドを使う方法があります。

設定したルールを任意のファイルに書き出すコマンドとしてiptables-saveがあり、下記のようにファイル名を指定して使います。

iptables-saveによって設定を書き出しておき、ホストマシンを再起動後、書き出しておいたファイルを下記のコマンドにより再読み込みすると、書き出されたルールが改めて設定されます。

### 2013/10/7 追記 ###
良く使うiptablesの運用管理方法2つをメモにiptablesの運用管理方法として、iptables-save、iptables-restoreを使った方法とシェルスクリプトを使った方法の2つをメモしました。iptablesの運用管理についてはこちらの方が情報が多いと思うので、良ければご参照下さい。

このエントリーをはてなブックマークに追加

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

  1. […] 以上がfilterに関するルールの記述部分に関する説明になります。そして、これはnat、mangleの各フィルターについても全く同じ形式で記述されています。 よって、iptables-saveで作成したルールファイル編集する場合は、各フィルター毎に記述されたルール部分(上記のfilter部分に関しては6行目ー10行目が該当)に新しいルールを追加、削除、編集することになります。ただし、新しいルールを追加する場合、そのルールを記述する場所、すなわちルールの順番が意味を持つので気をつけて下さい。ルールの順番が持つ意味については、iptablesの設定内容確認と設定例が参考になるかもしれませんので参照下さい。 […]

  2. iptablesの概要メモ said on 2014年1月23日 at 11:23

    […] 上記の5つの表のテーブル ルール操作 チェイン オプション ターゲットを組み合わせてパケットフィルタリングやIPアドレス変換のためのルールをiptablesに追加したり、iptablesから削除したりします。iptablesの具体例はiptablesの設定内容確認と設定例を参照して下さい。 […]

  3. […] https://www.virment.com/iptables-setting-example/ […]

  4. […] iptablesの設定内容確認と設定例 […]

トラックバック URL