# iptables -L -n --line-numbersを使います。 -nオプションをつけると名前解決せずにアドレスで表示します。 --line-numbersオプションをつけると、ルール番号を表示してくれます。
# iptables -L -n --line-numbers # INPUTのChain # interfaceからローカルプロセスにパケットが流れるときに適用される Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0■設定ファイルで確認したい場合。 RedHatの場合は ○/etc/sysconfig/iptables ルールやチェインの設定が書かれている ○/etc/sysconfig/iptables-config なんかよくわからない大人の設定が書いてある。# ForwardのChain # interfaceから渡されたパケットを転送するときに適用されます Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
# OUTPUTのChain # ローカルプロセスからinterfaceにパケットを送信するときに適用されます。 # 下記の場合、とくに何も設定されていません。 Chain OUTPUT (policy ACCEPT) num target prot opt source destination
# Chain RH-Firewall-1-INPUT # RedHatが最初にこしらえてくれるChain # 名前"RH-Firewall-1-INPUT"のとおり、 # INPUT時に適用することを想定してあります。 # 一通り、サービスを提供するためのACCEPTを設定したあと、 # 一番最後の行の"REJECT"で、それ以外を撥ねてます。 Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21 11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 12 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
IPTABLES_MODULES="" IPTABLES_MODULES_UNLOAD="yes" IPTABLES_SAVE_ON_STOP="no" IPTABLES_SAVE_ON_RESTART="no" IPTABLES_SAVE_COUNTER="no" IPTABLES_STATUS_NUMERIC="yes"
○Debianの場合はさらにたちが悪い。 まず、なにもない。
# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destinationChain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
○しょうがないから起動スクリプトを作った。
# cd /usr/share/doc/iptables/examples/ # zcat oldinitdscript.gz > /etc/init.d/iptables # cd /etc/init.d # chmod 755 iptables # update-rc.d iptables defaults Adding system startup for /etc/init.d/iptables ... /etc/rc0.d/K20iptables -> ../init.d/iptables /etc/rc1.d/K20iptables -> ../init.d/iptables /etc/rc6.d/K20iptables -> ../init.d/iptables /etc/rc2.d/S20iptables -> ../init.d/iptables /etc/rc3.d/S20iptables -> ../init.d/iptables /etc/rc4.d/S20iptables -> ../init.d/iptables /etc/rc5.d/S20iptables -> ../init.d/iptables # /etc/init.d/iptables start Aborting iptables load: unknown ruleset, "active".どうやら設定ファイルは/var/lib/iptables/の中にあるらしい。 しかし、そんなとこにはなにもなかった。 しょうがないので、自分でiptablesというディレクトリを作って、iptablesというファイルをおいた。 中身はRedHatの丸写しだ。/etc/init.d/iptables options: start|restart|reload|force-reload load the "active" ruleset save
save the current ruleset load load a ruleset stop load the "inactive" ruleset clear remove all rules and user-defined chains, set default policy to ACCEPT halt remove all rules and user-defined chains, set default policy to DROP Saved ruleset locations: /var/lib/iptables/ and /var/lib/ip6tables/
Please read: /etc/init.d/iptables
# Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -i eth0 -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMITのだが、動かなかった。 (以下、続く)
(続き)
というのは、上記の方法でdebianの/etc/init.d/iptablesをつくると、
/var/lib/iptables/にあるactiveとinactiveのファイルしかよみこまなくなる。
そこで、まずはこのデフォルトの何も書いていない奴を
# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destinationinactiveに登録しよう。 最初にまずは/var/lib/iptables/active と inactive をtouchコマンドでつくっておくChain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
# cd /var/lib/iptables # touch active # touch inactiveそしたら現在のルールをinactiveに登録する
# /etc/init.d/iptables save inactive
avtiveのほうには、RedHatなどで動いている生きのいいフィルターを
そのままactiveに書き写して、手直しすればよいだろう。
# /etc/init.d/iptables start
# /etc/init.d/iptables stopが正しく動作するようになる。
