.
Network / OS => ゲートウェイサーバ構築 > 7.パケット フィルタ リング ルールの適用 (GUI ツール)
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

パケット フィルタ リング ルールの適用 (GUI ツール)

GUI ツールで iptabales の基本設定を行う

本題の iptables の設定を行います。X-Window 備え付けのツールを使って、ベースとなるフィルタリング設定を行います。以下、設定のポイントです。

iptables の設定方法 .

iptabals の設定には幾つかの方法があります。

コマンドによりルールを追加するケース

iptablesコマンドにより、テーブル、チェーン、パラメーターを追加していきます。特に追加するルールの順番を意識する必要があります。その都度 kernel にロードされメモリ内での実行となります。

メモり内のルールを保存・復元するためのコマンドが用意されています。再起動後も有効にしたい場合、メモリ内にある情報を外部ファイルに書き出す必要があります。

# /sbin/service iptables save

/etc/sysconfig/iptables に出力され、iptables起動時にこのファイルに記載されたフィルターが適用されます。復元する restore も あります。こちらは復元オプションが幾つかあります。

シェルスクリプトでコマンドを実行させるケース

上記 iptables コマンドを羅列した スクリプト.sh を作成し一括でフィルタリングを登録します。シェルスクリプトにする事で順番を通常、rc.local など起動スクリプトに上記スクリプト追加する事で、再起動後にも有効にする方法です。iptables を再起動した場合は、同様に消えてしまいます。再度シェルスクリプトを実行します。またシステム再起動後有効にする場合は、rc.local にシェルスクリプトを登録するなどして対応します。

外部ファイルによる記述 (反映にはiptablesサービスの再起動が必要)

外部ファイル /etc/sysconfig/iptables に直接フィルタリング ルールを記述することでもフィルタリングを有効にする事が出来ます。この場合、変更を有効にするには iptabelsサービスを再起動する必要があります。

# service iptables restart

また、iptables コマンドで、位置を指定しないで実行した場合、先に評価される内容としてルールが追加されます。適用するルールによっては順番が重要になります。

システム起動時、先にネットワークサービスが起動されると iptables サービスが起動されるまでの間、僅かな時間、無防備状態になります。ネットワークサービスが起動される前に iptables サービスを起動しフィルタリングを有効にする必要があります。

ここで解説する内容

一般的には、コマンドでフィルタリングルールを追加、削除をし確認を行います。コマンド操作に慣れれておけば、リモート(telnet) 等で緊急を要するパケット制限など迅速に対応する事も出来ます。しかし、始めての方が iptables コマンド、テーブルやチェーン、書式を理解して設定を行うのは、難しいため、ここでは、X-Window による 「セキュリティレベル」 ツールを利用した例で説明しています。

セキュリティ レベルの設定

X - メニューから 「セキュリティレベル」 を開き、以下の様に設定します。公開するサービスポート(つまり穴をあける)については、適宜選んでください。また、ここでは、ルーター直下、つまり簡易ファイアーウォール下での設定ですので、リスクは軽減されています。

ここで構築するネットワーク構成イメージ


ネットワーク図

WAN / LAN に対して WWW FTP メールサーバーを公開する場合は以下の様に設定します。

セキュリティレベルの設定

  1. 信頼できるサービス
    1. チェックを入れると、それぞれのサービスで使用するポートに穴をあける事になります。つまり、内部・外部から接続が可能になります。
  2. 信頼できるデバイス
    1. チェックを入れなければ、全ての通信を遮断します。ただし、信頼できるサービスにチェックをいれたサービスポートにはアクセス出来ます。

このインターフェイスはデスクトップ環境向けの簡易設定しか行えません。基本的に外部らの一方的なパケットを遮断し、内側から出て行くパケットに関しては微かな制御はコマンド.sh を作成するか、外部に読み込みファイルをポリシに応じて作成する必要があります。

また、このツールで作成出来るのは filterテーブルのみで、RH-Firewall-1-INPUT チェインとして保存されます。ここには表示されていない ICMP や、IPv6に関してもデフォルトで有効になっています。(ディストリビューション、バージョンによっても異なると思います)

ご注意!
 信頼できるデバイス eth1 にチェックを入れた のは、初心者がサーバーを設定する上でファイアーウォールの問題なのか、サーバー側の設定の問題なのか、問題の切り分けが行い易いようにという配慮からです。最終的にはWAN方向同様に必要なポートだけを開くようにして下さい。(理由は後述)

ご注意!
  このGUIツールを使うのは今回限りです。外部ファイル /etc/sysconfig/iptables に対し、iptables コマンドを使用し、service iptables save でルールを追加、または、直接、外部ファイルを修正していく事になりますが、再びこのツールを起動して保存してしまうと、外部ファイル /etc/sysconfig/iptables が上書きされ元の filter テーブルのみの内容に戻ってしまいます。RH-Firewall-1チェーンのみが修正されるような配慮はされていないようです。(ディストリ 特有の問題かも。GUIツールを使ったのは今回が初めてなので、ちょと未確認です。)

※補足

直接シェルスクリプトに記述し、あまり外部ファイルに依存しないやり方だと、この煩わしさがないうえ、リモート保守においても迅速に対応できますが、初心者には荷が重いです。市販ルーターでブラウザでパケットフィルタリングを設定できる製品もありますが、これと同じように、iptables コマンドを外部からブラウザ経由で行う方法もあります。

Webmin のiptables モジュールを使う方法です。あまりお勧めできませんが、興味があったら調べて見てください。

セキュリティ レベルの設定

このツールを使って設定を行った場合、filter テーブルにRH-Firewall-1 というチェーンが追加されます。RH-Firewall-1 チェーンでは以下が定義されています。何が行われているか見てみます。

/etc/sysconfig/iptables
  1. # Generated by iptables-save v1.2.11 on Fri Jun 10 19:41:45 2005
  2. *filter
  3. :INPUT DROP [0:0]
  4. :FORWARD DROP [0:0]
  5. :OUTPUT ACCEPT [8:928]
  6. :RH-Firewall-1-INPUT - [0:0]
  7. -A INPUT -j RH-Firewall-1-INPUT
  8. -A FORWARD -j RH-Firewall-1-INPUT
  9. -A RH-Firewall-1-INPUT -i lo -j ACCEPT
  10. -A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
  11. -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
  12. -A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT
  13. -A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT
  14. -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
  15. -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
  16. -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  17. -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
  18. -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
  19. -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
  20. -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
  21. -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
  22. COMMIT
  23. # Completed on Fri Jun 10 19:41:45 2005
  1. saveにより書き出された日付
  2. ここから、フィルターテーブルである事を示す
  3. INPUT チェイン デフォルト許可 → DROP(破棄)へ変更
    7行目で INPUT(受信)に RH-Firewall-1-INPUT チェインが指定されているので必要なし。
  4. FORWARD チェイン デフォルト許可 → DROP(破棄)へ変更
    8行目で FORWARD(転送)に RH-Firewall-1-INPUT チェインが指定されているので必要なし。
  5. OUTPUTチェーン(自ら送信するパケット)はデフォルトで許可
  6. RH-Firewall-1-INPUT チェーン名を定義
  7. INPUT(受信)パケットのチェックにRH-Firewall-1-INPUTチェインを適用する
    9~21行目の -A RH-Firewall-1-INPUT で指定した行が上から順に評価される
  8. FORWARD(転送)パケットのチェックにRH-Firewall-1-INPUTチェインを適用する
    9~21行目の -A RH-Firewall-1-INPUT で指定した行が上から順に評価される
  9. ループバックインタフェース(127.0.0.1 自分自身)を許可
  10. eth1(LAN側)は全て許可(信頼できるデバイスをチェックした場合)
  11. ICMPパケットは全て受け付ける ← (制限した方が良い)
  12. IPSEC (IPv6)暗号化プロトコル許可
  13. IPSEC (IPv6)暗号化プロトコル許可
  14. IPv6 DNS問い合わせ許可
  15. リモート印刷許可
  16. 現在確立しているセッションは維持する
  17. Webサーバー接続を許可(port80)
  18. https SSLサーバー接続を許可(port443)
  19. ftp サービス接続を許可(port21)
  20. SMTPメール送信サーバー接続を許可(port25)
  21. RH-Firewall-1-INPUTに定義されていないパケットは遮断せよ
  22. ここまでがフィルターテーブルである事を示す
  23. # Completed on Fri Jun 10 19:41:45 2005

チェーンについて

iptables について全ては説明できませんので、上記の書き出されたルールから習得の足掛かりとして、チェーンについて触れておきます。その他、ルール、コマンド、パラメータ等は man iptabales を参照して下さい。

複数のフィルターをまとめて一つの一連のチェーン(グループ)にまとめることが出来ます。例えば、上記の RH-Firewall-1-INPUT チェーンの例では

6行目 :RH-Firewall-1-INPUT

6行目で、チェーン名が定義され、
9 ~ 21行目までが RH-Firewall-1-INPUT の一連のチェーンとなっています。

7行目 -A INPUT -j RH-Firewall-1-INPUT
8行目 -A FORWARD -j RH-Firewall-1-INPUT

7 ~ 8行目で
INPUT (受信パケット) / FORWARD (転送パケット)に対して RH-Firewall-1-INPUT チェーンルールを適用するように指定されています。

RH-Firewall-1-INPUT チェーンの例では、フィルタールールの方向性は全く指定されていないため、このような内容になっていますが、、eth1 や eth0 または、IPアドレスごとに、 RH-Firewall-1-INPUT チェーンのようなルールセットを作成することで、ネットワーク毎にルールセットを適用するといった使い方や、一連の動作毎のルールセットをチェーンとし使いまわす事が出来るため、管理が行いやすくなるなるばかりか、ミスも軽減されます。

■テーブル ~利用できるテーブルは以下の三種類
※ 詳細は man iptables を参照してください。

. 利用できる組込みチェーン
filter INPUT / FORWARD / OUTPUT
テーブルを指定しなかった場合、filter テーブルにルールが追加されます。
nat PREROUTING / OUTPUT / POSTROUTING
IPアドレスを変換する時に使用するテーブルで、IPマスカレード等の設定を行うときに利用します。
mangle PREROUTING / OUTPUT
特定のパケットを変換する場合に利用するテーブル。

■予め組み込まれているチェーン
※ 詳細は man iptables を参照してください。

INPUT 受信パケット
OUTPUT 送信パケット
FORWARD 転送パケット
PREROUTING 受信時にIPアドレスを変換するチェイン
POSTROUTING 送信時にIPアドレスを変換するチェイン
bottom_mark
ページ最上部
ページ最上部 前のページ