質問: iptablesについて linuxのiptablesについて教えてください、初心者です。 vpsを試しに使ってiptablesを勉強しています。 sshから下記を実行しました iptables -f iptables -x iptables -p input drop iptables -p forward drop iptables -p output drop iptables -a input -p icmp -j accept iptables -a input -p tcp -j accept iptables -a input -p udp -j accept iptables -a input -i lo -j accept iptables -a input -p tcp --dport 22 -j accept iptables -a input -p tcp --sport 22 -j accept iptables -p input drop /etc/init.d/iptables save service iptables restart 結果、(1)では22、(2)では22 80、(3)では22 25 80が開いているように表示されてます ブラウザからサーバーにあるホームページは閲覧できません(設定通りで正しいと思います) (1)(2)(3)の違いはなんなのでしょうか?別モノなのでしょうか? (1)iptables -nl chain input (policy drop) target prot opt source destination accept all -- 0.0.0.0/0 0.0.0.0/0 accept icmp -- 0.0.0.0/0 0.0.0.0/0 accept all -- 0.0.0.0/0 0.0.0.0/0 state related,established accept tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 chain forward (policy drop) target prot opt source destination chain output (policy accept) target prot opt source destination (2)nmap (ホスト名) starting nmap 5.51 ( http://nmap.org ) at 2014-05-15 08:04 jst nmap scan report for ホスト名 (ipアドレス) host is up (0.000013s latency). not shown: 998 closed ports port state service 22/tcp open ssh 80/tcp open http nmap done: 1 ip address (1 host up) scanned in 0.09 seconds (3)nmap localhost starting nmap 5.51 ( http://nmap.org ) at 2014-05-15 08:01 jst nmap scan report for localhost (127.0.0.1) host is up (0.0000070s latency). other addresses for localhost (not scanned): 127.0.0.1 not shown: 997 closed ports port state service 22/tcp open ssh 25/tcp open smtp 80/tcp open http nmap done: 1 ip address (1 host up) scanned in 0.08 seconds
回答: 面倒なのでtcpだけで。 >iptables -f >iptables -x iptablesの設定を初期化するっす。 >iptables -p input drop inputパケットの基本ポリシーはdropっす。 ルールに沿わないと全部捨てるっすよ! ちょー安全っす!! >iptables -a input -p tcp -j accept tcpパケット受け入れのルールとして全部受け入れるっすよ! この時点でtcp全てのパケット受け入れろって言われたんで「ちょー安全っす!!」っは無効にしろ。と親分から指示されたっす。 任してくだせぇ。 >iptables -a input -i lo -j accept へぇ。ウチの組のモンは顔パスっすね。 了解しやした!! >iptables -a input -p tcp --dport 22 -j accept 姐さんの客人は通せばいいんですね。 わっかりやしたぁ。 でも全員通れるンすけど...。 >iptables -a input -p tcp --sport 22 -j accept よその組の姐さんからの手土産持っている人は全員通すんですね。 了解っす。ヒットマンでも通しますよ。 # かなり例えが苦しいなぁ... # inputでソースポート指定する意味はあまりありませんが... # 普通は送信側が空いている適当なポート番号を指定するのでソースポートでフィルタすることはあまりありません。 という設定をしてみました。 (1)で表示される >accept all -- 0.0.0.0/0 0.0.0.0/0 state related,established は接続済みのパケットは通す。というヤツです。 >結果、(1)では22、(2)では22 80、(3)では22 25 80が開いているように表示されてます 1ではフルオープンです。 どんなパケットだって受け入れちゃうよ~状態ですね。 つまり「フィルタなしと同じ」です。 (2)のホスト名がどこを挿しているのか不明ですが...... 自ホストのipアドレス(非ループバック)が引けるのなら、 そこから規定のポートをスキャンしているのでしょう。 # nmapはポート範囲指定しない場合にいくつかのポートしかスキャンしなかったと記憶していますが... (3)で25番ポートが開いているように見えるのはsmtpサーバが「localhostからの接続は受け入れる」という設定になっているからでしょう。 netstat -lpn -a inet とかやると tcp 0 127 0.0.0.1:25 0.0.0.0:* listen 2726/master とか表示させるんじゃないでしょうか。 というワケで... >iptables -a input -p icmp -j accept >iptables -a input -p tcp -j accept >iptables -a input -p udp -j accept があったら、フィルタの意味がありません。