- - PR -
「! --syn -m state --state NEW -j DROP」のパケット?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-27 14:48
Kenny と申します。
このサイトには大変世話になっています。 Linux 初心者です。宜しくお願いします。 現在、このサイトの「習うよりなれろ!!iptables テンプレート集」を参考にiptables を学んでいるのですが、そこから質問があります。 参考にしているのは「テンプレート3 ssh接続のステートフル性を確認(http://www.atmarkit.co.jp/flinux/rensai/iptables01/iptables01d.html)」です。 この内容ではステートフル性を使って trusthost ー> myhost 許可 myhost <ー trusthost 不許可 を実現するための設定が説明されています。 全体のテンプレートは 「http://www.atmarkit.co.jp/flinux/rensai/iptables01/template03.html」にありますが、抜粋すると 33 ####################### 34 #ssh trusthost-> myhost 35 ####################### 36 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 37 iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $trusthost -d $myhost --dport 22 -j ACCEPT 38 iptables -A OUTPUT -p tcp -s $myhost --sport 22 -d $trusthost -j ACCEPT となっています。 37,38行目でSSH接続が実現できますが、それでは myhost -> trusthost SSH 不許可 ができません。そこで36行目があるの思うのですがこの記述がいまいち理解できないのです。 直訳?すれば「synパケットでなく、ステートがNEWのパケットはDROP」といことになるのですが、これが myhost -> trusthost SSH 不許可 と理解できません。 3ウェイハンドシェークで考えると 1) myhost -> trusthost へSSH接続要求(SYN)を投げる。 38行目の記述で可能。 2)trusthost が SYN/ACK を myhost へ返す。 この SYN/ACK パケットはNEWの状態なのでしょうか? だとすれば「synパケットでなく、ステートがNEWのパケットはDROP」が成立し、 myhost -> trusthost SSH接続 不許可 となりますね。 いろんなサイトへでステートの定義を調べているのですが、どこまでが「NEW」でどこまでが「ESTABLISHED」なのか境界がはっきりわからないのです。どなたかわかる方がいらしたら教えてください。お願いします。 |
|
投稿日時: 2005-12-27 15:42
TCPコネクション、普通は ACK が完了した時点で ESTABLISHED になるかと。。。
SYN や SYN/ACK まで完了やと、短時間の SYN パケット連続や SYN/ACK を受信した際のACK の作為無応答で SYN FLOOD とか ハーフスキャンと看做す、そういう分岐を想定して DENY や DROP の対象にする必要性からやと思う。 |
1