- - PR -
不正なフラグを持ったパケットの許容
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-02-19 10:20
はじめまして。
ルータ・TCP/IPについて、それほど熟知できていない初心者です。そのため、知識豊富な皆様のお力を拝借したく、投稿してみました。 問題事象:公開Webサーバーを設置しているのですが、このセキュリティチェック結果から、不正なフラグを持ったパケットの許容している(TCPのスリーウエーハンドシェイクに関して、不正なフラグを通してしまっている)と、報告をうけました。 ネットワーク構成は以下です。 ・ルータ・・・ここでパケットフィルタリングおよびNAT変換 ・ファイアウォール・・・HTTPを通す設定のみ ・Webサーバ・・・特に設定無し 上記ルータにてTCPのEstablished設定をフィルタリングのリストに追加してます。これは回避策にならないのでしょうか? 以下が指摘された参照情報です。 http://www.kb.cert.org/vuls/id/464113 どなたか上記の事象について知識がある方がいらっしゃいましたら、対策方法をご教授お願いいたします。 |
|
投稿日時: 2004-02-19 11:08
http://www.geocities.co.jp/SiliconValley-Cupertino/9120/firewall.html
http://advice.isskk.co.jp/security/ice/advice/Exploits/TCP/SYN_flood/default.htm TCP 3way Handshake の不正なフラグ・・・ そもそも TCP コネクション、先ずクライアントからサーバーにリクエストが届いて初めて ネゴシエーションが開始される。 Client ---------------------> Server (SYN) 以降、 Client <--------------------- Server (SYN, ACK) サーバーからの SYN+ACK が正常な場合 Client ---------------------> Server (ACK) サーバーからの SYN+ACK に異常 Client ---------------------> Server (SYN, RST) TCP のデータ送信前に必ずやりとりされる相手方の存在確認ですが、これで使われるのが SYN, ACK, RSTフラグしかない。FIN はセッション終了時のみやった筈。 で、要は「この三つの組み合わせを確実に判別して処理できるルーターを買えよ」と 言ってるように見えますが(笑) iptable レベルでの設定やと、冒頭の2サイトにヒントがあるかとは思いますが。。。 後は、 /proc/sys/net/ipv4 この下にズラズラ出てくるファイルをきっちり設定するとか・・・ |
|
投稿日時: 2004-02-19 11:52
ご回答ありがとうございました。
ご指摘どうり、ルーターはお手頃価格なものを使用しています(ヤマハ)。 参考URLも参照しましたが、初心者にとってはここから発展させてくのはなかなか難しそうです。 本文について、一般的にSYN, ACK, RST、FINフラグについて、明示的に何らかのフィルタリングをiptableに設定を加えるものなのでしょうか? もう一点、「/proc/sys/net/ipv4 この下にズラズラ出てくるファイルをきっちり設定するとか」とありますが、これは、具体的に何を指しているのでしょうか? 申し訳ありませんが、ご指導お願いいたします。 ちなみに、私が投稿したような事象を確認できるフリーのポートスキャンツールはありませんか?どうもチェック業者さんはSecureScanを使ったようです。 |
|
投稿日時: 2004-02-19 13:31
>本文について、一般的にSYN, ACK, RST、FINフラグについて、明示的に何らかの
>フィルタリングをiptableに設定を加えるものなのでしょうか? 具体的には、参考 URL の内、以下の部分が該当するでしょうな。 ----------------------------------------------------------------------- iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP --------------------------------------------------------------------- この、 --syn オプションというのは、--tcp-flags SYN,RST,ACK SYN と等価だそうで、 --tcp-flags SYN,RST,ACK SYN だと、 SYN,RST,ACK のフラグをチェックし、 SYN フラグが有効ならば、 ACCEPT なり DROP なりのアクションを起こす条件となります。 上の場合、 ! --syn で条件が反転しますから、 SYN フラグはとにかく無効のパケットで、 RST と ACK フラグを調べて有効なものが対象になるようです。 --state NEW が新規コネクションに該当しますから、やはりこの部分で 3way Handshake のマッチングを司っているのでしょう。 hohoho さんの仰るように、明示的に iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN とか、 iptables -A FORWARD -p tcp --tcp-flags ALL ALL ルールは違いますがこんな書き方もできるみたいですね。 そういや、AtMarkIt の過去ログにもこういうのが・・・ http://www.atmarkit.co.jp/flinux/rensai/security05/security05a.html 次、/proc/sys/net/ipv4 以下には、/etc/sysctl.conf も絡んできますが、 カーネルパラメータの値でネットワークの挙動が変わったりするファイルがいっぱい 置いてあります。 tcp_syn_retries tcp_synack_retries tcp_syncookies 今回の質問に対応するものとしてはこの三つは限りなく必須に近いのではないかと。 私の場合、フリーのポートスキャンツールで最強と言われてる nmap を使ってます。 |
|
投稿日時: 2004-02-19 16:01
ヤマハのルーターを使っているようなので
ルーターのファイアーウォール機能の説明も参考になるかもしれないので載せておきます (長文なので読むのがちょっと大変かも) http://www.rtpro.yamaha.co.jp//RT/docs/firewall/index.html |
|
投稿日時: 2004-02-26 16:37
ソリューションとしては、境界線のセキュリティ、つまりFirewall/Router上で制御する場合と、サーバの水際で制御する場合が考えられます。例えばご利用のサーバがSolarisの場合、nddによるパラメータ変更で、この手の攻撃の可能性がをあるパケットをある程度食い止めることが可能です。また、Routerなどには試行回数により、閾値を越えるとパケットを一定期間無視する設定などが可能な製品があります。しかしある程度ハイエンドの製品になってくるので、財布の事情と相談ということになると思います。
_________________ Hiroaki Kondo Security Management Service Division Hucom,Inc. Japan hkondo@hucom.co.jp |
1