- PR -

「! --syn -m state --state NEW -j DROP」のパケット?

1
投稿者投稿内容
kenny
会議室デビュー日: 2005/12/27
投稿数: 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」なのか境界がはっきりわからないのです。どなたかわかる方がいらしたら教えてください。お願いします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-12-27 15:42
TCPコネクション、普通は ACK が完了した時点で ESTABLISHED になるかと。。。
SYN や SYN/ACK まで完了やと、短時間の SYN パケット連続や SYN/ACK を受信した際のACK の作為無応答で SYN FLOOD とか ハーフスキャンと看做す、そういう分岐を想定して DENY や DROP の対象にする必要性からやと思う。
1

スキルアップ/キャリアアップ(JOB@IT)