スタティックなパケットフィルタリング:iptablesテンプレート集 改訂版(1)(2/4 ページ)
この連載では、初心者にとってハードルの高いiptablesの設定を、テンプレートを用いながら紹介していきます。「習うより慣れよ!」の精神でまず試してみてはいかがでしょう。(編集部)
設定確認とリセット
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) ...
第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 ...省略... ...省略...
iptablesの設定をリセットする
iptablesに限らず、機器の設定を行う際、設定内容が決まるまで試行錯誤を重ねる場合があります。iptablesでは新たな設定を実施する前に、それ以前の設定をリセットする必要があります。CentOSやFedoraならiptablesの設定を無効にするスクリプトが用意されています。
# /etc/init.d/iptables stop (ファイアウォールを無効にし、設定をリセットします)
リセットのためのスクリプトが用意されていない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
なお、上の方法でリセットされるのはfilterテーブルの設定だけです。natやmangleといったテーブルをを1度でも設定した場合、リセットするには、「-t テーブル名」のようにテーブル名を指定し、個別にリセットする必要があります。
(filterテーブル以外のテーブル(natやmangleなど)の設定をリセットする場合。「-t ○○」以外の引数は上と同じ) # /sbin/iptables -t テーブル名 ....
ディストリビューションごとの注意点
iptablesはLinuxカーネルに備わっている機能です。どんなLinuxディストリビューションでもiptablesは利用できますが、設定方法が多少異なります。FedoraやCentOSは標準でiptablesを使ったファイアウォール機能が有効となっており、起動時にファイアウォールが稼働します。従って本連載のテンプレートを使用するには、デフォルトで動作しているファイアウォールを無効にする必要があります。
# /etc/init.d/iptables stop (起動中のファイアウォールを停止) # /sbin/chkconfig --del iptables (ファイアウォール・サービスの削除)・ファイアウォール・サービスを復活させる場合 # /sbin/chkconfig --add iptables (ファイアウォール・サービスの登録)
Copyright © ITmedia, Inc. All Rights Reserved.