« 学科、合格です | トップページ | 一応、ラボ予約しました »

2005年10月16日 (日)

ITおやじからの苦言 その2

以前、ITおやじからの苦言というネタを書いた。Helper を例にして書いたと記憶している。
最近、CCO を読んでいてあることを思い出したので、また苦言を呈させてもらおう。
(こんな偉そうな書き方して、嫌われるな。。)

ACL の fragments キーワードを知っているだろうか。
いや、ほとんどの人は知っていると答えるだろう。
フラグメントアタックを防ぐような場合に使うものであると理解しているだろう。

本当に理解していますか?
そもそもフラグメントパケットってどのように認識されるか知ってますか?

動作を理解して使ってますか。
単に「fragments 打てばいいんでしょ」程度で理解したつもりになってないだろうか。

なお、私も検証ベースで理解したつもりでいるが間違いがあれば是非指摘して欲しいと思っている。

あるパケットが、例えば MTU の問題等で Router でフラグメント化されたような場合を考えてみよう。というか、そうやってフラグメントパケットを作るのが簡単だろうと思う。

まず、フラグメント化される場合、下記にようになるはずである。

1パケット目   :FO=0 MFビット=1
2パケット目以降 :FO>0 MFビット=0

ここで、1パケット目は防げないはずである。というのは「普通のパケット」だから。これを防ごうというのはACLで普通に deny しないといけないので、他の通常トラフィックに影響が出るはずだ。

access-list 199 deny   ip any host 192.168.1.1 log fragments  =>(a)
access-list 199 permit tcp any host 192.168.1.1 eq www log  =>(b)
access-list 199 deny   ip any any log

上記のACLを書くと、1パケット目は (b) の行に match する。そして2パケット目以降は (a) の行に match する。つまり1パケット目は permit されるのである。だから、「FO>0 MFビット=0」だけを送ってくるようなアタックの場合には一切を通さずに防げるのかもしれないが、「結果的にフラグメント化されるパケット」の場合、1パケット目は通るが、それ以降は通らない、という動作をする。

結果としてパケットの再組み立てが行われずに通信としては成り立たない。

Router#sh access-lists 199
Extended IP access list 199
    deny ip any host 150.100.1.241 log fragments (2 matches)
    permit tcp any host 150.100.1.241 eq www log (1 match)
    deny ip any any log (315 matches)

ちなみに、ちょっと予想外の動作なのであるが、もし

access-list 199 permit tcp any any eq bgp log =>(c)
access-list 199 deny   ip any host 192.168.1.1 log fragments
access-list 199 permit tcp any host 192.168.1.1 eq www log
access-list 199 deny   ip any any log

みたいに、他のトラフィックを明示的に通したいと思って、上記の例では (c) で bgp を permit する行を書いている。すると、全てのフラグメントパケットはこの ACL を通過してしまう。

なぜかというと、フラグメントされたパケット(2パケット目以降)には Layer4 の情報を持っていないのである。Sniffer 等で拾ってみると「IP Continuation of frame」と見え、1パケット目の続きであるという認識であることがわかる。

この場合、何と (c) の行で match する、すなわち通過するのである。

だから結果として防げていない。
だから (c) のような tcp の permit 文は下の方に書かねばならない。

私も完璧に理解できているわけでもなく、どなたかスペシャリストの方が間違いを発見できたら指摘して欲しいのであるが、ここで言いたいのは、これくらいを自分でやってないと、とても「理解」には程遠いのではないか、という、ITおやじから苦言を呈させてもらいたいと思った次第である。

偉そうな書き方ですいません。。。

|

« 学科、合格です | トップページ | 一応、ラボ予約しました »

コメント

技術本部長としてはちゃんと検証しないといけないところですが、とりあえず第一報にて。

http://www.cisco.com/univercd/cc/td/doc/product/lan/c3550/12225sec/3550scg/swacl.htm#wp1102021

fragmentされた2つめ以降のパケットは、プロトコルタイプとsource/destinationくらいから判定する仕様になっているそうです。

中途半端な・・・

投稿: kazu | 2005年11月22日 (火) 16時05分

こういう細かいところをやってるということは、勉強の進み具合もよくわかります。
ITおやじからの苦言に、これまたITおやじが突っ込むよりは、若者から意見欲しいのですけど。

投稿: ガレージ兵頭 | 2005年11月23日 (水) 00時52分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/115947/6428654

この記事へのトラックバック一覧です: ITおやじからの苦言 その2:

« 学科、合格です | トップページ | 一応、ラボ予約しました »