2013年5月23日木曜日

iptablesの話



centosをインストールし、httpdをyumしてきました。
外部に向けて公開使用と思ったのですがうまくつながらない。
ポートが開いていない様だ。
何故。。。

色々調べた結果
iptablesが原因なのではないかという予想を立てる。
iptablesを止める
/etc/init.d/iptables stop
するとポートが通る

…うん。完全にそれだね。
/etc/init.d/iptables start
で再び起動し、

vim /etc/sysconfig/iptables

開くと
だいたいこんな感じ
↓はネットから持ってきたやつ
*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 -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 -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited




これにhttpのポートをあけてやる
ついでだからFTPも?

#■↓ HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#■↓ FTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

一応これで良いらしい!
--dport 80 って書いてあるし!
保存して
【restart】

そしてポート確認君で80番ポートを・・・
開かないって言うね。

その後色々試した。
本当に色々試した。
が、分からず。
iptable壊れてるのかなー、再インストールかなーとか思ってたのですが

ずーーーーっとネットで調べて、遊んで調べて、の結果
1つの記事にたどり着きました。

http://g-taki.com/wordpress/web/5883.html

まるっとコピペ

[root@centos ~]# iptables -L –line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp — anywhere anywhere
3 ACCEPT all — anywhere anywhere
4 ACCEPT tcp — anywhere anywhere state NEW tcp dpt:ssh
5 REJECT all — anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all — anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Chain INPUTがフィルターの流れ。
4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
つまりこの間に、httpやhttpsといった外部からつなげたいポートを許可する設定を書くって訳だ。



4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
ん?

4行目でsshが許可されているが、次の5行目で残りがrejectされるようになっている。
んん?

reject?
ふむふむ

で、rejectってなに?

http://chidipy.jpn.com/server/iptables/iptables.htm

iptables -A FIREWALL1 -j REJECT --reject-with icmp-host-prohibited   ← 先に許可したポート以外全て不許可にする

んーなるほどね。

で、うちのiptablesは?

*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 -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 hogehoge -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
-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 21 -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 21 -j ACCEPT

後に書かれてるものは不許可?


…てことはさ

*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 -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 hogehoge -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --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 2222 -j ACCEP
-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 21 -j ACCEPT
#↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
#↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

こうすれば通るんじゃない?

保存してrestart


確認君で80を確認…通った!!

通った通った!
  ポートが通った!
駄スレも立った!
      \|/
⊂⌒⊃   ― ● ―
  ⊂⊃  /|\
     ⊂⊃  ⊂⊃
/~\へ/~\へヘ/~\
ハ`ハハハハ`ハハ`ハハハハハ`ハハハハ
" """" """ """" """"
∥=∥=∥=∥=∥=∥=∥
" "∧_∧" """ """" "
" (´∀`) "e@@e"""
"⊂  ⊃" (・∀・)_ノ
○(  ノ""とと__つ
"" )_)) "" " "" ""ミ
"" "" ∧∧" """ __
" "" (∀・;) "" | ∥
""" ⊂⊂⌒ヽ"" |_∥
"" プル )) )○∠_/)
"" (( (_(_ノ ))プル◎
||" ""||" ""||" ""||
||二二||二二||二二||



iptables恐るべし

今回参考にしたサイト

http://tech.hitsug.net/?CentOS/iptables

http://g-taki.com/wordpress/web/5883.html

http://chidipy.jpn.com/server/iptables/iptables.htm

http://krakenbeal.blogspot.jp/2012/03/centos62iptables.html

0 件のコメント :

コメントを投稿