- - PR -
IPCHAINSについて
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-06-06 10:13
はじめまして!
IPCHAINSを使ったFWで困っています。 構成は Router WAN側:222.222.222.1 DMZ側:222.222.222.2 LAN側:192.168.1.254 DMZ server(DNS/MAIL) 222.222.222.3 Local Sever(DNS/MAIL) 192.168.1.250 チェインは :input ACCEPT :forward ACCEPT :output ACCEPT :good-dmz - :bad-dmz - :good-bad - :Dmz-good - :Dmz-bad - :bad-good - :icmp-acc - :bad-if - :Dmz-if - :good-if - -A input -s 0.0.0.0/0.0.0.0 -d 222.222.222.1/255.255.255.255 -j bad-if -A input -s 0.0.0.0/0.0.0.0 -d 222.222.222.2/255.255.255.255 -j dmz-if -A input -s 0.0.0.0/0.0.0.0 -d 192.168.5.254/255.255.255.255 -j good-if -A forward -s 192.168.1.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -i eth1 -j good-dmz -A forward -s 192.168.1.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -i eth2 -j good-bad -A forward -s 222.222.222.0/255.255.255.248 -d 0.0.0.0/0.0.0.0 -i eth2 -j dmz-bad -A forward -s 222.222.222.0/255.255.255.248 -d 0.0.0.0/0.0.0.0 -i eth0 -j dmz-good -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth1 -j bad-dmz -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth0 -j bad-good -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 25:25 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 110:110 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 53:53 -p 17 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 53:53 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 80:80 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 443:443 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 873:873 -p 6 -j ACCEPT -A good-dmz -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 1 -j icmp-acc -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 25:25 -p 6 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 110:110 -p 6 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 53:53 -p 17 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 53:53 -p 6 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 80:80 -p 6 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 222.222.222.3/255.255.255.255 443:443 -p 6 -j ACCEPT -A bad-dmz -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 1 -j icmp-acc -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 443:443 -p 6 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 9007:9007 -p 6 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 33434:33500 -p 17 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 21:21 -p 6 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 8:8 -d 0.0.0.0/0.0.0.0 -p 1 -j MASQ -A good-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j REJECT -l -A dmz-good -s 222.222.222.3/255.255.255.255 25:25 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 222.222.222.3/255.255.255.255 110:110 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 17 -j ACCEPT -A dmz-good -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 222.222.222.3/255.255.255.255 80:80 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 222.222.222.3/255.255.255.255 443:443 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 222.222.222.3/255.255.255.255 873:873 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-good -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 1 -j icmp-acc -A dmz-bad -s 222.222.222.3/255.255.255.255 25:25 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT -A dmz-bad -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 17 -j ACCEPT -A dmz-bad -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT -A dmz-bad -s 222.222.222.3/255.255.255.255 80:80 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-bad -s 222.222.222.3/255.255.255.255 443:443 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 1 -j icmp-acc -A icmp-acc -s 0.0.0.0/0.0.0.0 3:3 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A icmp-acc -s 0.0.0.0/0.0.0.0 4:4 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A icmp-acc -s 0.0.0.0/0.0.0.0 11:11 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A icmp-acc -s 0.0.0.0/0.0.0.0 12:12 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A bad-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 61000:65095 -p 6 -j ACCEPT -A bad-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 61000:65095 -p 17 -j ACCEPT -A bad-if -s 0.0.0.0/0.0.0.0 0:0 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A bad-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j icmp-acc -A dmz-if -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 6 -j ACCEPT ! -y -A dmz-if -s 222.222.222.3/255.255.255.255 53:53 -d 0.0.0.0/0.0.0.0 -p 17 -j ACCEPT -A dmz-if -s 0.0.0.0/0.0.0.0 8:8 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A dmz-if -s 0.0.0.0/0.0.0.0 0:0 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A dmz-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j icmp-acc -A good-if -s 0.0.0.0/0.0.0.0 8:8 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A good-if -s 0.0.0.0/0.0.0.0 0:0 -d 0.0.0.0/0.0.0.0 -p 1 -j ACCEPT -A good-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j icmp-acc #-A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY #-A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l #-A good-dmz -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l #-A dmz-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l #-A bad-dmz -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY #-A dmz-good -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l #-A dmz-bad -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l #-A bad-good -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j REJECT -A bad-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i ! eth2 -j DENY -l -A bad-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -A dmz-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i ! eth1 -j DENY -A dmz-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l -A good-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i ! eth0 -j DENY -A good-if -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l ちなみに#を外すと全てのサービスが止まってしまいました・・・ なにが悪いのかわかりません。 必要はサービスは入れていると思うのですが・・・・ 宜しくお願い致します。 [ メッセージ編集済み 編集者: かず 編集日時 2002-06-06 10:17 ] | ||||||||||||
|
投稿日時: 2002-06-06 19:02
こんにちは、藤井と申します。
この場所でこれから、ipchainsのデバッグが行われると思うと、背筋が寒くなります。 デバッグのやり方をお教えしますので、それで試してみませんか? ・最小限のところ以外はコメントアウトし、少しずつコメントを外していって、どこで止まっているかを特定する。 これが基本です。今回はそこまではされているようです。もう少し進めてコメントアウトしたやつを一つずつ外していき、具体的にどの行でパケットが止められているか特定してください。 これが分かりやすいのは、もしWebサーバーが動いていたら、 /sbin/ipchains -L -v > Webサーバーが見れるディレクトリ/status.txt などとし、Webブラウザから見てください。文字の大きさをかなり小さくすると見やすくてグッドです。 とりあえずこれでどうにかなるでしょう。頑張ってください。 さて、具体的にどこが悪いのかわかったんだが、なぜか通らない、というようなことがあるかもしれません。 そういうときはパケットをそのまま除いてみましょう。 たとえば、インターフェースeth0で、80番のパケットがどうしても通らないときは # tcpdump -i eth0 | grep http で見ることができます。grepのあとの文字列は/etc/servicesで確認できます。 入り口と出口のインターフェースでそれぞれやると、大体理由がわかります。 話は変わりますが、パケットフィルタリングに関する書籍などをもう少し読まれた方がいいと思います。 たとえば、最初の方で :input ACCEPT :forward ACCEPT ![]() とやっているので、フィルタリングが設定されているわずかの間に進入されるかもしれないし、途中で何か失敗したら、フィルタリングが実行されないまま上の設定だけ有効になる危険性もあるでしょう。 なので iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i ! lo -j DROP iptables -A FORWARD -j DROP iptables -A OUTPUT -o ! lo -j DROP として、フィルタリングの設定が終わったあとで iptables -D INPUT -i ! lo -j DROP iptables -D FORWARD -j DROP iptables -D OUTPUT -o ! lo -j DROP で有効にするとか(iptablesの例ですみません、もうipchainsは現役ではないです)。 ただパケットをフィルタリングするのと、侵入者を入れないようにするテクニックは違います。当然Linux本体の起動スクリプトなども関係してきます。 http://www.linux.or.jp/JF/ こちらの関連書類中にもかなりいろんなテクニックが紹介されてます。ぜひ熟読することをお勧めします。 | ||||||||||||
|
投稿日時: 2002-06-07 16:28
返信ありがとうございます。
一応、↓ここを見てやったのですが・・・・ http://nucba.www.linux.or.jp/JF/JFdocs/IPCAINS-HOWTO-7.html デバッグしてみたいと思います。 また、疑問点が有りましたら、宜しくお願い致します! | ||||||||||||
|
投稿日時: 2002-06-10 13:32
こんにちは、藤井です。
たとえばここに、僕が言ってたのが載ってましたね。 http://nucba.www.linux.or.jp/JF/JFdocs/IPCHAINS-HOWTO-5.html#ss5.6 具体的にどの行でパケットが止まるのか、確定できましたか? また、僕も昔はipchainsでやっていたのですが、DMZをつくるってことは、リバースIPマスカレードをやるはずですよね。 ipmasqadm使わないと、外側からDMZにパケットを誘導できないと思うのですが、いかがでしょうか? たとえば80番をDMZ側に誘導するのは ipmasqadm portfw -a -P tcp -L 222.222.222.1 80 -R 222.222.222.2 80 とかするはずですが。 とここまで書いて、もう一度よく見直してみたのですが、これ無理です。(^-^; DMZにプロバイダーから割り当てられた固定IPを割り当てるのなら、このやり方では難しいです。 こうしてみたらいかがですか? DMZには192.168.2.0/24の様な別のサブネットを割り当てて、WAN側のインターフェースに割り当てられているIPをすべて割り当てます。一つのNICに複数のIPを割り当てるわけです。そして、ipmasqadmでIP毎に適切なサーバーに誘導する。 このほうがたぶん分かりやすいですよ。また内部のネットワークと外側に見せるネットワーク構造も別にできます。 | ||||||||||||
|
投稿日時: 2002-06-10 14:28
ん?かず さんが
http://nucba.www.linux.or.jp/JF/JFdocs/IPCHAINS-HOWTO-7.html を見て設定したのであれば、ppp0、DMZともにグローバルのアドレスであるはずなので、ipmasqadm は必要ないのではないでしょうか。 また、ipmasqadm は、何故かあらゆるサイトでデッドリンクになっていますのでなかなか手に入りません。。手に入るサイトがございましたら私にもお教えいただければ光栄です。 かずさん。NIC3枚マシンのルーティングテーブルはどうなってますか? #route をして出してください。 | ||||||||||||
|
投稿日時: 2002-06-10 18:23
こんにちは、藤井です。
たぶんですね、 -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth1 -j bad-dmz -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i eth0 -j bad-good いったいどれがeth1なのかよくわからないんですが、この振り分け方が適切でないので、 #-A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY #-A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j DENY -l ここで止まると思うんですよ。 ここがよくわからないんだったら、いっそ別のサブネットに分けた方が分かりやすいと思ったんですが。 そうでもないですかね? ぼくなら、 外側のインターフェースをeth2、DMZをeth1、内側をeth0、 内側からDMZを in-dmz 内側から外側を in-out DMZから外側を dmz-out DMZから内側を dmz-in 外側からDMZを out-dmz 外側から内側を out-in とすると、 ipchains -A forward -s 192.168.1.0/255.255.255.0 -i eth1 -j in-dmz ipchains -A forward -s 192.168.1.0/255.255.255.0 -i eth2 -j in-out ipchains -A forward -s 222.222.222.2 -i eth2 -j dmz-out ipchains -A forward -s 222.222.222.2 -i eth0 -j dmz-in ipchains -A forward -i eth1 -j out-dmz ipchains -A forward -i eth0 -j out-in って感じにしますね。 いずれにせよ、実際のマシンに触らないとデバッグなんて不可能だと思いますが。(^-^; | ||||||||||||
|
投稿日時: 2002-06-10 19:21
藤井です。ちと補足で
その前の、 -A forward -s 222.222.222.0/255.255.255.248 -d 0.0.0.0/0.0.0.0 -i eth2 -j dmz-bad -A forward -s 222.222.222.0/255.255.255.248 -d 0.0.0.0/0.0.0.0 -i eth0 -j dmz-good ここで、外から入ってくるパケットとDMZゾーンのパケットがごちゃごちゃになります。 DMZと外側のインターフェースが同じサブネットにありますから。 で次には行かないという感じじゃないですか? | ||||||||||||
|
投稿日時: 2002-06-10 19:24
こんにちは、藤井と申します。
おっしゃる通りです。僕の勘違いでした。
どうやら元サイトが無くなったらしいです。ミラーとSRPMですが、 http://www.e-infomax.com/ipmasq/juanjox/ http://www.megaloman.com/~hany/_data/SRPM/ipmasqadm-0.4.1-3.src.rpm
NICがどれがどれだかわからないのですが、どうやら 外側がeth2 DMZ側がeth1 内側がeth0 みたいですね。 ルーティングの問題かもしれませんが。 |