rule が完成したならば、最初に紹介した ipftest を用いてテストをします。 この場合、SYN ビットなどを指定したテストや、ICMPのパラメータを指定 したテストを行う必要があります。
下は、tcp のフラグをセットしたテストのためのデータの例です。
in on out0 tcp 202.11.200.10,200000 192.168.1.1,80 S out on out0 tcp 192.168.1.1,80 202.11.200.10,20000 SA in on out0 tcp 202.11.200.10,200000 192.168.1.1,80 A out on out0 tcp 192.168.1.1,80 202.11.200.10,20000 A in on out0 tcp 202.11.200.10,200000 192.168.1.1,80 A out on out0 tcp 192.168.1.1,80 202.11.200.10,20000 FA in on out0 tcp 202.11.200.10,200000 192.168.1.1,80 A in on out0 tcp 202.11.200.10,200000 192.168.1.1,80 FA out on out0 tcp 192.168.1.1,80 202.11.200.10,20000 A |
この場合、202.11.200.10,20000 から内部の 192.168.1.1,80 への アクセスがあり、データをやり取りして終了するという流れを想定 したデータになっています。
一方、不正なTCPフラグを持ったテストは以下のようなものです。
in on out0 tcp 202.11.200.10,20000 192.168.1.1,80 S in on out0 tcp 202.11.200.10,20000 192.168.1.1,80 SA in on out0 tcp 202.11.200.10,20000 192.168.1.1,80 SFP in on out0 tcp 202.11.200.10,20000 192.168.1.1,80 SPU |
一方、ICMP については、
in on out0 icmp 202.11.200.10 192.168.1.1 echo in on out0 icmp 202.11.200.10 192.168.1.1 echorep in on out0 icmp 202.11.200.10 192.168.1.1 unreach |
のようにします。勿論、応答があるICMPについてはその方向を考慮した テストが必要です。
もう一度、IPFilter におけるICMP type の表記を書いておきましょう。
"unreach","echo","echorep","squench", "redir", "timex","paramprob","timest", "timestrep","inforeq", "inforep","maskreq","maskrep" ,"routerad","routersol"
勿論、番号でも構いません。
同様に、UDP についてもテストを行う必要がありますが、この際に注意すべきは、 keep state を使っている場合に、どちらからどちらへのコネクションを keep state を用いて許しているかです。許している方向、許していない方向、両方についての テストが必要です。
その他に、IP オプションやフラグメンテーション、TCP オプションなどのテスト もできますが man や IPFilter のドキュメントを参照してください。