next up previous contents
Next: ICMP対策 Up: フィルタリングルール Previous: private address と spoofing

ルールセットの整理

ここまでは全てのパケットについて fxp0 についてのみ考えて来ましたが、 ファイアーウォールがルータである場合、実際には fxp0 における in, out 、及び fxp1 における in, out の全てについて考える必要があります。

このように4つのパターン全てについて考えて行くと、多くのルールを 記述する必要があり、その全てのルールについてパケットは検査されることに なってしまいます。これを緩和するために、IPFilter にはグループという考え があります。ルールセットをグループに分けて、パケットに適用するグループを 設定する事が出来るようになっているのです。グループは番号によって区別 されます。それぞれのルールがどのグループに所属するかもこの番号を用いて 行います。まず、パケットにどのグループを適用するかは、head オプションを 使って決めます。次の例は、fxp0 に入って来たパケット全てにグループ番号 100 を適用出来るように、番号100をマークしています。


pass in log on fxp0 all head 100

但し、この場合はデフォルトで pass を指定しているので、このパケットを block するようなルールが他になければ通ってしまいます。通常、外側から 入って来るパケットについては、デフォルトで block にしておいた方が 良いでしょう。


block in log on fxp0 all head 100

これによって、fxp0 に入って来るパケットは全てログを取った上で、100 の 番号がマークされているので、fxp0 の入って来るパケットには100のグループの ルールが適用されます。 (先に quick ともに head を用いると、という話がありましたが、結論としては quick と共に head を指定すると、head で指定された番号のルールセットは 必ずチェックされます。従って、quick を使っても、すぐにその場ではルール の適用が終りません。)

これらを用いて、これまでの内容を書き直したものが次のルールセットです。


block in log on fxp0 all head 100
block out log on fxp0 all head 200
pass  in log on fxp1 all head 300
pass  out log on fxp1 all head 400
# Deny reserved addresses
block in log quick from 10.0.0.0/8 to any group 100
block in log quick from 192.168.0.0/16 to any group 100
block in log quick from 172.16.0.0/12 to any group 100
# Deny ip spoofing
block in log quick on fxp0 from 202.11.96.0/24 to any group 100
block out log quick on fxp0 from any to 202.11.96.0/24 group 200
# loop back
block in log quick from 127.0.0.0/8 to any group 100
block in log quick from any to 127.0.0.0/8 group 100
block in log quick from 127.0.0.0/8 to any group 300
block in log quick from any to 127.0.0.0/8 group 300
# pass loop back on lo0
pass  in  quick on lo0 all
pass  out quick on lo0 all

以上のように、各々のルールがどのグループに所属するルールかは、ルールの 末尾に付けた group [number] で区別する訳です。



Noriyo Kanayama