next up previous contents
Next: 6.4.2 private address と Up: 6.4 フィルタリングルール Previous: 6.4 フィルタリングルール

6.4.1 基本の書き方

IPFilter におけるルールの記述方法は最も簡単な場合には以下のような ものです。

[block|pass]  [in|out] [quick,log,on IF] [proto {tcp/udp|tcp|udp|icmp}] [IP-set]

まず、パケットは全てのルールを検査し、最後にマッチしたルールが適用されるように なっています。パケットを落したい場合であっても即座に落される訳ではなく、最後 まで検査して、他にマッチしたルールがない場合に落されることになるのです(quick をつけると例外的に即座に実行されます)。パケットを拒否する際には、block を 用いますが、あくまでもすぐに落される訳ではない点に注意して下さい。逆に、 パケットを通したい場合には、pass を用いますが、この場合も同様です。

次に、入ってくるパケットに対して適用するのか、出て行くパケットに対して適用する のかを区別するために、in と out を用います。

特別に、あるインターフェース上で検査したい場合には on IF を付けます。 ここで、IF は、ifconfig で表示されるインターフェース名で、例えばインターフェース 名が dc0 の場合は、on dc0 のように使います。一方、このルールに マッチした場合についてログを取りたい場合には、log を付けます。また、 このルールを即座に適用し、以降のルールを検査したくない場合には quick を使い ます(実は例外が一つだけあり、後述sる head を用いるとこの場合に当てはまり ません)。一般に、IPFilter のルールは全てを検査するために冗長になりがちです。 これを回避するために、何も考えずにこれは通したいような場合には quick を使う 訳です。

それぞれのパケットのプロトコルを指定したい場合には、proto 識別子の後に プロトコルを指定します。利用できるのは以下の4つです。

tcp/udp TCP 及び UDPプロトコル
tcp TCP プロトコルのみ
udp UDP プロトコルのみ
icmp icmp プロトコルのみ

当然、全てのプロトコルについて指定したい場合には、proto 識別は必要ありません。

最後に、IP-set は基本的には、どこからどこに向かうのかという事を指定します。 例えば、202.11.97.17 から発信されている全ての送信先へのパケットを指定したい 場合には、
       from 202.11.97.17 to any
と指定します。ここで、any は全ての 行先を意味します。一方、10/8 から192.168.0.0/16へのパケットを指定する場合 には、
       from 10.0.0.0/8 to 192.168.0.0/16
のように書きます。もちろん、 mask を使って書く事も出来ます。
       from 10.0.0.0 mask 255.0.0.0 to 192.168.0.0 mask 255.255.0.0
とは言え、こうした書き方を選択する必要はないでしょう。 あらゆる発信先からあらゆる送信先を指定する場合には、当然
       from any to any
と書けば良いのですが、これらの代わりに all を使うことも出来ます。

一方、あるWWWサーバへのアクセスを指定したいような場合には、ポートまで 含めて書く事もできます。
       from any to 202.11.97.19 port = 80
また、ある範囲のポート番号を指定したい場合には、>< を使う事が出来ます。 例えば、次の例は、Port 6000 から 6063 までの範囲を指定しています。
       from any to 202.11.97.19 port 5999 >< 6064
ここで注意しなければならないのは、5999 より大きくて、6064 より小さい範囲を 指定しなければならない点です。 他にも、あるポートよりも大きい場合の指定に > や、逆に小さい場合の指定 に <、あるポートに等しくない場合には != 、以上や以下を表す ための >=<= なども用意されています。

ルールには他にも更に様々なオプションがあり、中には重要なものもありますが、 とりあえずは以上のような書き方をすることを知っていれば、以下の具体例を 理解できるでしょうし、必要なものについてはその時に学習することにします。

より詳しく学ぶには、

http://www.obfuscation.org/ipf/ipf-howto.txt
を参照して下さい。



Noriyo Kanayama