iptablesを全くわかっていないので、駄文的に書いてみる。
iptablesのマニュアルはここにあるのでよく読む。
現状を把握したい時は
iptables -L
で状況を確認できる。
とりあえず、デフォルトはこんな感じ。
[root@localhost ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere icmp any ACCEPT esp -- anywhere anywhere ACCEPT ah -- anywhere anywhere ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns ACCEPT udp -- anywhere anywhere udp dpt:ipp ACCEPT tcp -- anywhere anywhere tcp dpt:ipp ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
簡単にオプションの意味を書き出してみる。
[ -A ] → [ INPUT ][ FORWARD ][ OUTPUT ]の条件として付け加えます(append)。
[ -m ] → モジュールを呼び出します(module)。
[ –state ] → コンマで区切られた接続状態のリストを指定します。
[ -m ] → モジュールを呼び出します(module)。
[ -p ] → プロトコルを指定します。
[ –dport ] → 宛先のポート番号を指定します。
[ -j ] → 今までの条件にマッチしたパケットをどうするか指定します。
上記を踏まえると、
[ -A INPUT ] → INPUTに付け加えます。
[ -m state ] → stateモジュールを呼び出します。
[ –state NEW ] → 接続状態はNEWで。
[ -m tcp ] → tcpモジュールを呼び出します。
[ -p tcp ] → プロトコルはTCPで。
[ –dport 80 ] → 80番ポート宛で。
[ -j ACCEPT ] → 許可します。
ということで、
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
は、
「接続状態はNEW」で「プロトコルはTCP」で「80番ポート宛」なパケットが来たら、
そのパケットは「INPUTの条件」として「許可」する。
という条件を付け加える。
なのかな?
[ -m tcp ]の扱いは何なんだ?ということでググると
http://search.luky.org/linux-users.a/msg03917.html
ということで、[ -p tcp ]を書くなら一緒につけておこうよ的な感覚らしい。
最悪、訳が分からなくなったら
iptables -F
で全てをリセットできるので、初めからやり直せる。
とりあえずは
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
で、httpとsshが通れば文句言わないことにする。
自宅内のみか何かで要らないなーと思った時は、
chkconfig --list iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
なので
chkconfig iptables off
で無効に。
chkconfig --list iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
を確認しておく。