[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:77279] Re: how to shut off all ports withipchains (was Re: Re:一番簡単なセキュリティー対策方法)


こんにちは。松田陽一 _at_ PAL-NET三鷹です。

From: Tatsuya BIZENN <bizenn _at_ visha.org>
Subject: [linux-users:77263] Re: how to shut off all ports with ipchains (was Re:  Re: 一番簡単なセキュリティー対策方法)
Date: Thu, 7 Dec 2000 09:35:34 +0900

> 備前です。気力回復せずなのでざっくりと。

どうもです。^^

> で、ポリシーが明示されていないので、わたしがダイヤルアップユーザで一般
> 的だと思われるポリシー
> 
>     - 外部からの接続要求は拒否
>     - 外部への接続要求は基本的に許可
>     - 必要最小限のものを明示的に許可。それ以外を拒否。
> 
> で考えています。それと、順番を少し入れ替えています。

ああ、すいません、こういう話の時にこのような様式なのか、存じません
でした。
そもそも、ダイヤルアップユーザーがダイヤルアップルータをハードウェ
ア乃至は今回のような Linux BOX で構築する際に、上記のような方針以
外に何があるのでしょう?
単に知らないか、或は知っていれば上記のような方針を考えるのではない
かと思うのですが。

> > # ppp-in チェインの設定 (ipchains-mini-HOWTO より)
> > /sbin/ipchains -N ppp-in
> > /sbin/ipchains -A input -i ppp0 -j ppp-in
> 
> これに加えて
> 
> /sbin/ipchains -N ppp-out
> /sbin/ipchains -A output -i ppp0 -j ppp-out

ああっ、そうか、 ppp0 インターフェースから出るパケットもフィルタリン
グする必要があるのか。

> > # ポート 6000, 7000 を DENY
> > /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 6000 -j DENY -l
> > /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 7000 -j DENY -l
> 
> この後の設定を考えると、ちょっと意味がわかりません。

元々、 ipchains-mini-HOWTO からカット & ペーストした内容から色々付
け足しで来ている内容ですので、今となっては TCP SYN パケットを DENY
しているので、意味がないのかも知れません。

> > # ip 偽装を DENY
> > /sbin/ipchains -A ppp-in -s 192.168.10.0/24 -j DENY -l
> 
> ここは、プライベートアドレス領域全てに対して行なった方がいいです。
> 
> ipchains -A ppp-in -s 10.0.0.0/8 -j DENY -l
> ipchains -A ppp-in -s 172.16.0.0/12 -j DENY -l
> ipchains -A ppp-in -s 192.168.0.0/16 -j DENY -l
> 
> それから、当たり前ですが、プライベート宛のパケットが外に出て行くのも妙
> ですから、止めます。
> 
> ipchains -A ppp-out -s 0/0 -d 10.0.0.0/8 -j DENY -l
> ipchains -A ppp-out -s 0/0 -d 172.16.0.0/12 -j DENY -l
> ipchains -A ppp-out -s 0/0 -d 192.168.0.0/16 -j DENY -l
> 
> それから、Windowsがローカルネットにいるのなら、
> 
> ipchains -A ppp-out -s 0/0 -d 0/0 137:139 -p udp -j DENY
> ipchains -A ppp-out -s 0/0 -d 0/0 137:139 -p tcp -j DENY
> 
> は必要でしょう。-l はうるさいのであえてつけません。

いやぁ、こういうのは気付きませんでした。
思わず、ディスプレイの前で「おぉ〜」とうなってしまったのは私だけで
はない筈。(笑)

> > # ポート 1024〜65535 の tcp syn パケットを DENY
> > /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 1024:65535 -p tcp -y -j DENY -l
> 
> これ何だかよくわからないんですが、特権ポートへの接続は許可するんですか? 
> つまり、外部からの接続を許可するデーモンがダイヤルアップルータマシン上
> で動いてるってことでしょうか。だとしたら、特権ポート全てを開けるような
> ことはせず、必要なポートのみを明示して開けるべきだと思います。

ああ、すいません、最後に全てを DENY していて、 1024 以降のポートを
開けないと DNS 参照ができない、というジレンマに悩んだ末、こういう
結果になってしまいました。

> Webサービスを立てる場合
> /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 80 -p tcp -j ACCEPT
> 
> sshdを立てる場合
> /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 22 -p tcp -j ACCEPT
> 
> で、それ以外全部のSYNを叩き落とす
> /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL -p tcp -y -j DENY -l

確かにこちらの方がより判り易いですね。

> > # ポート 1024〜65535 の syn パケット以外の tcp パケットを ACCEPT
> > /sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL 1024:65535 -p tcp ! -y -j ACCEPT
> 
> これはまぁ、そういうポリシーならいいんじゃないでしょうか。

お聞きしたいのですが、この行がないと外部との実質的なアクセスができな
いのではないでしょうか?

> > /sbin/ipchains -A ppp-in -p udp -s 0/0 -d 0/0 ssh -j ACCEPT
> 
> これはいりません。

はい。^^;

> > # 一部の pop server の為に auth を ACCEPT
> > /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 auth -j ACCEPT
> 
> これって、identd が立ってるってことなんですか? ダイヤルアップユーザが
> 立てるようなものではないようにも思いますが。

そうですか、ならばここは REJECT させておくべきなのでしょうか?
過去ログも随分見たんですが、立てるべきではない明確な理由が見つからな
くて、「まぁいいか」と付けてしまったものです。

> > # ntp を ACCEPT
> > /sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 ntp -j ACCEPT
> > /sbin/ipchains -A ppp-in -p udp -s 0/0 -d 0/0 ntp -j ACCEPT
> 
> ntpd と ntpdate を使い、かつ ntpdate -d を使わないのであれば
> 
> /sbin/ipchains -A ppp-in -s 0/0 123 -d $PPP_LOCAL 123 -p udp -j ACCEPT
> 
> でいいはずです。さらに、参照しているNTPサーバが決まっているのであれば、
> 始点IPアドレスを明示してもいいかもしれません。

なるほど、了解です。
ntpdate -d ですか…ちょっと調べます。
--
よぉ、ちぇきらっ、ちょぉ!(ぼうよみ)
松田 陽一(yoh)
mailto:matsuda _at_ palnet.or.jp (メールアドレス変更しました)
http://www2.palnet.or.jp/~matsuda/index.htm

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: