vine-users ML アーカイブ



[vine-users:059706] Re: PPxP の設定

  • From: KiyonoriMatsumoto <kyo-@xxxxxxxxxxxxx>
  • Subject: [vine-users:059706] Re: PPxP の設定
  • Date: Wed, 16 Apr 2003 01:06:45 +0900
きよです

やっちまったかー と思って、ちゃんと調べました。

On Tue, 15 Apr 2003 15:11:19 +0200
YOSHIHIRO EBINA <ebina@xxxxxxxxxxx> wrote:

> >例えば、/etc/sysconfig/ipchains が
> >こんな↓感じで
> >
> >:input ACCEPT
> >:forward ACCEPT
> >:output ACCEPT
> >-A input -s 0/0 -d 0/0 -i lo -j ACCEPT
> >-A input -s 0/0 53 -d 0/0 -p udp -j ACCEPT
> >-A input -s 0/0 -d 0/0 -p tcp -y -j REJECT
> >-A input -s 0/0 -d 0/0 -p udp -j REJECT
> >  
> 記述方法は別にして、この設定ですとインターネットはおろか、自ホスト以外
> の殆ど全てのマシンからの通信をリジェクトしてしまいます
> (ポート53からのudp通信を除く)
> ですので、殆どスタンドアロンでしか機能しません
> (ネットワーククライアントとしても使用できません)

このフィルタなら、サーバとしては使えませんが
ネットワーククライアントとしてなら使えます。
# udpで接続するサービスは domain(udp:53)以外は
# クライアントになれませんが。

上から順に見て行くと
 
-A input -s 0/0 -d 0/0 -i lo -j ACCEPT
この部分でローカルループバック(自分自身)との通信を
許可しています。

-A input -s 0/0 53 -d 0/0 -p udp -j ACCEPT
この部分でどこかのDNSサーバ(udp:53)から送られて来る
パケットを許可しますので、名前解決か可能です。

-A input -s 0/0 -d 0/0 -p tcp -y -j REJECT
この部分で SYNビットだけが立ったパケットを拒否します。
故にtcpの接続"要求"を受け付けません。

-A input -s 0/0 -d 0/0 -p udp -j REJECT
この部分で2行目でひっかからなかった全てのudpパケットが
拒否されます。

そして、上記のフィルタを抜けてデフォルトポリシー(ACCEPT)に
たどり着くのが、ICMPと tcpの SYNビット"以外"が立ったパケット
(通常なら、自分から接続要求をした通信に対する返事)です。

よって、tcpについては、自分が出した要求に対する返事は
受け取るが、他人の要求には答えないという設定になります。

ただ、tcpについては、SYNビットだけを見た単純な
フィルタなので、様々な手法のポートスキャンにはそれなりの
反応を返してしまいます。
このあたりは、iptables を使えば、もっと適切なフィルタが
書けます。

また、政さんからご指摘がありましたとおり

> ルータ用の設定か、ワークステーション用の設定か判りませんが
> > :input ACCEPT
> というのは危険ではないでしょうか?

上のフィルタでは、SYNビットが立ったパケット(-y)を拒否して
それ以外のtcpを通していますが
:input DENY
として、でデフォルトポリシーをDENYにして
SYNビットだけが立っていないパケット(! -y)を明示的に
許可した方が良いのかもしれません。

その場合のフィルタはこんな感じでしょうか。

:input DENY
:forward ACCEPT
:output ACCEPT
-A input -s 0/0 -d 0/0 -i lo -j ACCEPT
-A input -s 0/0 53 -d 0/0 -p udp -j ACCEPT
-A input -s 0/0 -d 0/0 -p tcp ! -y -j ACCEPT
-A input -s 0/0 -d 0/0 -p icmp -j ACCEPT

icmpについては、ここではまとめて許可していますが
必要に応じて、許可/禁止するタイプを指定することもできます。