連載
» 2009年12月01日 00時00分 公開

スタティックなパケットフィルタリングiptablesテンプレート集 改訂版(1)(2/4 ページ)

[鶴長鎮一,@IT]

設定確認とリセット

iptablesの設定を確認する

 iptablesで設定された内容を確認するには、iptablesコマンドに「-L」オプションを付けて実行します。その際、DNSを使ったホスト名検索が行われるため、表示が遅くなります。「-n」オプションを併用するとホスト名検索が行われず、ホスト名の代わりにIPアドレスが、サービス名の代わりにサービスポート番号が表示されます。

# /sbin/iptables -nLChain INPUT (policy ACCEPT)
target     prot opt source               destination 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0      ...省略...Chain FORWARD (policy ACCEPT)
...
Chain OUTPUT (policy ACCEPT)
...
iptablesの設定を確認する

 第1回で紹介するテンプレートでは送受信パケットの許可または破棄を実施していますが、次回以降、NAT機能についても触れていきます。

 iptablesでパケットの入出力を制御するには「filterテーブル」を使用し、NATのようにパケットを書き換えるには「natテーブル」を使用します。テーブルについては事例を使って今後紹介しますが、設定内容に応じてテーブルを使い分けることを、まずは理解しておきましょう。

 iptablesの設定を確認する際、テーブルの指定がなければfilterテーブルに関する設定を表示します。filterテーブル以外(natやmangle)の設定を確認するには「-t テーブル」オプションを使用します。

# iptables -nL -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination 
TOS        tcp  --  0.0.0.0/0            0.0.0.0/0      ...省略...
...省略...
filterテーブル以外のiptablesの設定を確認する

iptablesの設定をリセットする

 iptablesに限らず、機器の設定を行う際、設定内容が決まるまで試行錯誤を重ねる場合があります。iptablesでは新たな設定を実施する前に、それ以前の設定をリセットする必要があります。CentOSやFedoraならiptablesの設定を無効にするスクリプトが用意されています。

# /etc/init.d/iptables stop	(ファイアウォールを無効にし、設定をリセットします)
iptablesの設定をリセットする〜CentOSやFedoraの場合〜

 リセットのためのスクリプトが用意されていないUbuntuのようなディストリビューションでは、各チェインに設定されているフィルタリングルールを削除し、手動でリセットします。また1度でも「iptables -P OUTPUT DROP」のようにチェインポリシーを「DROP(破棄)」に変更した場合、「ACCEPT(許可)」に戻すことを忘れないようにします。

(filterテーブルに関する設定をリセット)
# /sbin/iptables -F	(フィルタリングルールの削除)
# /sbin/iptables -Z	(カウンターのリセット)
# /sbin/iptables -X	(追加されたチェインの削除)(各チェインのデフォルトポリシーをACCEPTに戻す)
# /sbin/iptables -P INPUT ACCEPT
# /sbin/iptables -P OUTPUT ACCEPT
# /sbin/iptables -P FORWARD ACCEPT
iptablesの設定をリセットする〜手動でリセットする場合〜

 なお、上の方法でリセットされるのはfilterテーブルの設定だけです。natやmangleといったテーブルをを1度でも設定した場合、リセットするには、「-t テーブル名」のようにテーブル名を指定し、個別にリセットする必要があります。

(filterテーブル以外のテーブル(natやmangleなど)の設定をリセットする場合。「-t ○○」以外の引数は上と同じ)
# /sbin/iptables -t テーブル名 ....
iptablesの設定をリセットする〜手動でリセットする場合〜

ディストリビューションごとの注意点

 iptablesはLinuxカーネルに備わっている機能です。どんなLinuxディストリビューションでもiptablesは利用できますが、設定方法が多少異なります。FedoraやCentOSは標準でiptablesを使ったファイアウォール機能が有効となっており、起動時にファイアウォールが稼働します。従って本連載のテンプレートを使用するには、デフォルトで動作しているファイアウォールを無効にする必要があります。

# /etc/init.d/iptables stop			(起動中のファイアウォールを停止)
# /sbin/chkconfig --del iptables	(ファイアウォール・サービスの削除)・ファイアウォール・サービスを復活させる場合
# /sbin/chkconfig --add iptables	(ファイアウォール・サービスの登録)
CentOS/Fedoraでデフォルトのファイアウォール機能を無効にする

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。