Tips 2
iptables-save、iptables-restoreの利用
本連載で紹介したテンプレートの適用には、一貫してshスクリプトを利用してきましたが、iptablesには設定情報をファイルに保存し、復元する仕組みも用意されています。現在の設定情報を保存する場合はiptables-saveコマンド、復元する場合はiptables-restoreコマンドを使用します。
# iptables-save > output.cfg
現在の設定をoutput.cfgファイルに書き込む
# iptables-restore < output.cfg
output.cfgファイルから設定を復元する
iptables-restoreの利点は、設定の適用に掛かる動作が1つのトランザクションで完了することにあります。shスクリプトの場合、いちいちiptablesコマンドが呼び出され、1回の操作ごとにトランザクションが発生します。そのため、数百行、数千行に及ぶ膨大な設定リストを適用する場合は、iptables-restoreを使用した方が効率が良くなります。
また、iptables-saveやiptables-restoreは、パケットカウンタやバイトカウンタのスナップショットを保存し、復元することもできます。「-m limit」などでカウンタを利用している場合などに利用できます。パケットカウンタやバイトカウンタの値を継続使用する場合は、「-c」オプションを指定します。
# iptables-save -c > output.cfg
パケットカウンタやバイトカウンタの現在の値も含めて保存
# iptables-restore -c < output.cfg
パケットカウンタやバイトカウンタの値を引き継いで復元
ディストリビューション(注)によっては、/etc/sysconfig/iptablesとして設定を保存することで、サーバ起動時にルールを適用させることができます。その場合、「iptablesサービス」が自動起動するように設定しておく必要があります。
注:Fedora Core3、Turbolinux Server 10で確認しています。
# ls /etc/init.d/iptables ←iptables起動スクリプトが用意されていることを確認 # chkconfig --add iptables
# Generated by iptables-save v1.2.11 on Wed Jun 8 00:22:18 2005 *mangle ←mangleテーブルのルール :PREROUTING ACCEPT [1:243] ←ここから各カウンタ :INPUT ACCEPT [1:243] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p tcp -m tcp --sport 22 -j TOS --set-tos 0x10 ←設定したルール -A PREROUTING -p tcp -m tcp --sport 80 -j TOS --set-tos 0x08 COMMIT ←設定復元時に使用するため消去不可 # Completed on Wed Jun 8 00:22:18 2005 # Generated by iptables-save v1.2.11 on Wed Jun 8 00:22:18 2005 *filter ←filterテーブルのルール :INPUT DROP [0:0] ←各カウンタ :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :LOGGING - [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ←INPUTチェインのルール -A INPUT -i lo -j ACCEPT -A INPUT -s 192.168.10.100 -d 192.168.20.200 -p icmp -m icmp --icmp-type 8 -j ACCEPT -A INPUT -s 192.168.10.100 -d 192.168.20.200 -p icmp -m icmp --icmp-type 0 -j ACCEPT -A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -s 192.168.10.100 -d 192.168.20.200 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -d 192.168.20.200 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 80 -j ACCEPT -A INPUT -j LOGGING -A OUTPUT -o lo -j ACCEPT ←ここからOUTPUTチェインのルール -A OUTPUT -s 192.168.20.200 -d 192.168.10.100 -p icmp -m icmp --icmp-type 0 -j ACCEPT -A OUTPUT -s 192.168.20.200 -d 192.168.10.100 -p icmp -m icmp --icmp-type 8 -j ACCEPT -A OUTPUT -s 192.168.20.200 -d 192.168.10.100 -p tcp -m tcp --sport 22 -j ACCEPT -A OUTPUT -s 192.168.20.200 -p tcp -m tcp --sport 80 -j ACCEPT -A LOGGING -m limit --limit 3/hour -j LOG --log-prefix "DROP:" ←ここからLOGGINGチェインのルール -A LOGGING -j DROP COMMIT # Completed on Wed Jun 8 00:22:18 2005
template11.sh実行後に保存した設定のサンプル。テーブル、チェインごとに整理されている
Copyright © ITmedia, Inc. All Rights Reserved.