きよです やっちまったかー と思って、ちゃんと調べました。 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については、ここではまとめて許可していますが 必要に応じて、許可/禁止するタイプを指定することもできます。