やりたい事とか ・RAID ・LPIC-201 ・自転車を買う(買っちゃった~) ・サイト作成

2009年7月27日月曜日

FW ファイアウォール

耐火壁を作ります。

環境:煉瓦・ナマコン
参考人:ガソリンスタンドの施行技術者


スルーして

ファイアウォールの設定をお勉強。

環境:CentOS5.3 iptables v1.3.5 CUI環境 rootユーザ ネットワーク越しの操作はしないように。

今回の参考URL:http://penguin.nakayosi.jp/linux/iptables.html

手短に習得したい人はこのページを見ることをお薦めしません。

では現在のテーブルの状態を確認
[root@localhost etc]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt sou



おもな見方。
[root@localhost etc]# iptables -L  <ー -L・・・全てのルールを表示
Chain INPUT (policy ACCEPT) <- PCに入ってくるパケットのルール。policyはACCEPTになっているので、基本は許可しますという意味。
target prot opt source destination
ここの行にルールが表示される

Chain FORWARD (policy ACCEPT) <-PCが転送するパケットのルール。全ての転送を許可する
target prot opt source destination

Chain OUTPUT (policy ACCEPT) <-PCから出ていくパケットのルール。全て許可する
target prot opt sou







この設定では皆々welcomeです。
人としては、世渡り上手かもしれませんが、PC的には問題ありです。
ともあれ、操作を学ばないと何も始まりませんので少しずつ学んでいきます。



まず、今のiptablesの設定では全てを許可しまくりんぐなので、テストをしてみます。

ping localhost
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=1.47 ms

自分自身にpingを打ってみると、返事が帰ってきました。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。
オレ返事しろ。
なんだよ。オレ。


まさにこんな感じ。
そんなことはどうでもいいので。

では、入ってくるパケットをDROPしてみましょう。
iptables -P INPUT DROP

-P -> ターゲットの設定。設定するで問題ないかと。
DROP -> 落とす。破棄。


では、iptables -Lで変更を確認
[root@localhost etc]# iptables -P INPUT DROP
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


では確認できたので、もっかいpingで疎通を確認。
[root@localhost etc]# ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.


オレ返事しろ。
オレ宛になんかパケット来たけど無視無視。



このくらいいろんなことを無視できたら、きっと世の中楽に生きれるのかもしれません。
そんなことはどうでもいいです。


pingの応答がありません。
入ってくるパケットが破棄されているので、ping対して応答しないようになりました。


でもこれでは、何もできません。
孤立してしまいます。
無視しても孤立してくだけです。そんなさみしい生き方はしたくありません。
そんなことはどうだっていいわけありませんが、先にいきましょう。


元に戻すには、
iptabes -P INPUT ACCEPT
で戻せます。



これでは、元通りです。
利便性とセキュリティを両立するのは難しいです。




では、とりあえず、PINGのパケットだけINUPUTを許可みましょう。
手始めに、INPUTパケットを全てDROPします。
[root@localhost etc]# iptables -P INPUT DROP
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


次に、pingだけ許可してみます。



[root@localhost etc]# iptables -A INPUT -p icmp -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


iptables -A INPUT -p icmp -j ACCEPT
-A->append。ルールの追加
-p->protcol。プロトコルの種類。指定できるのはtcp udp icmp all
ーj->jump。パターンにマッチした時の処理。今回は許可する


ではではpingを打ってみます。



[root@localhost etc]# ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=3.63 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=2.70 ms

--- localhost.localdomain ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 2.705/3.168/3.631/0.463 ms
[root@localhost etc]#




バッチリですな。おほほほほ。




では、こんなめんどくさいルールなんて消えてしまえ!!!!って方は。





iptabels -F
-F->flush。ルールの内容を全削除。


[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]# iptables -F //消えてしまえ!!!!!!!!!
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


ルールは消えましたが、ベースの設定、
つまりINPUTのDROPはなんの変更もありません。注意が必要です。






ではでは、
次はポート指定で空けてみましょう。
なにをしましょうか。webでもいきますか。



現在の設定は
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#




これではネットが見れません。
ネットが見れるように、80番ポートを開けましょう。
[root@localhost etc]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#


iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-p->プロトコル指定。
--dport->-pと併せて使用しなければならない上、ーp tcp と ーp -udp でしか指定できない
これでポートを指定する。これは受け取るポートを指定しています。つまり、80番ポートに対して通信していきたものを指定していることになります。






ではwebを見てみる。






見れない。






名前解決をしているっぽい。
DNSとの通信用のポートも開けましょう。
[root@localhost etc]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost etc]#






もっかい挑戦。














しーん・・・・・・・・・・・・・・・・・・・・
しくしく・・・・・・・・・・・・・・・・・・・









なんででしょうね。
ってところでネットをかけづりまわると、
どうやら、送信されたポートのルールも必要見たい。




つまるところ、
DNSのプロトコルが送信されたポートと
HTTPのプロトコルが送信されたポートのルールが必要

もっかい設定。


[root@localhost etc]# iptables -A INPUT -p tcp --sport 80 -j ACCEPT
[root@localhost etc]# iptables -A INPUT -p udp --sport 53 -j ACCEPT
[root@localhost etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

[root@localhost etc]#



--sport->送信元ポートの指定。





さて、もっかいwebを見てみましょう。
どうです?
快適に接続できましたか?



今回はとりあえずこのくらいに



0 件のコメント:

コメントを投稿

フォロワー