| ポリシーのルールは/etc/opt/ipf/ipf.confに記述します。次に設定項目を示しますのでそれを参考に設定ファイルipf.confを作成してください。
pass
行の先頭には必ずpassか次に紹介するblockのどちらかを記述します。passは以降の条件にマッチしたパケットの通過の許可を意味します。
block
blockは、以降の条件にマッチしたパケットの通過の拒否を意味します。
in
2番目には必ずinか次に紹介するoutのどちらかを記述します。inは入力パケットを意味します。
out
outは出力パケットを意味します。
quick
このキーワードを指定するとこの行の条件にマッチした時点で、そのパケットに対してpassかblockの条件を適用し、パケットのマッチング処理を終了します。特に問題がなりかぎり、このキーワードも全ての行に記述しておきましょう。このキーワードを指定しない場合は、ファイルの先頭から順にパケットがその行のルールにマッチするかチェックが行われ、最後にマッチした行のルールがパケットに適用されます。
on xxx
このキーワードはインターフェイスを指定するルールであることを示します。xxxにはインターフェイス名を指定して下さい。
proto tcp
プロトコルを指定します。指定可能なキーワードはtcp udp icmp tcp/udpです。
from any
パケットの始点アドレスを指定します。anyは全てのアドレスを意味するキーワードです。その他にIPアドレスやプレフィックス(127.0.0.0/8)などの表記が使えます。
to x.x.x.x port = xx
パケットの終点アドレスを指定します。ここではx.x.x.xのIPアドレスのxx番ポートを指定しています。名をportの設定はproto
tcpを指定した場合のみ有効です。
keep state
ダイナミックにパケットを許可する場合に記述します。一般にTCPのSYN/ACKパケットを通過させる場合に使用します。もちろん戻りパケットの通過を許可している場合そのルールを記述すれば不要です。
all
from any to anyの省略形で全ての通信を意味します。
log
これを記述された行のルールはlogキーワードによって記録される事を意味します。
<優先順位>
例としまして次のルールを参考にしてください。ipfilterの特徴の1つに、初めに全て拒否するルールを記してある事がわかると思います(ここでquickを入れてはいけません)。その後で該当するルールがあればそのルールに従った許可が有効になります。
| block
in log quick from any to any with ipopts
block in log quick proto tcp from any to any
with short
#
block in log all
pass in from 127.0.0.1/32 to 127.0.0.1/32
pass in from 192.168.3.1/32 to any
pass in from 192.168.3.2/32 to any
block out log all
pass out from any to 127.0.0.1/32
pass out from any to 192.168.3.1/32
pass out from any to 192.168.3.2/32
|
まず初めに入ってくる方向のルールが記されています
。中断は192.168.3.セグメントと192.168.3.セグメントのホストから許可します。下段は,出ていく方のパケットに対するルールです。
<スプーフィング防止>
もっとも基本的なFireWallのセキュアな設定です。外部からローカルに割り振られたIPアドレスで侵入してくるスプーフィングを防ぎます。
| block in log quick
from any to any with ipopts
block in log quick proto tcp from any to any
with short
#
block
in log quick on dmfe0 from 127.0.0.0/8 to any
block in log
quick on dmfe1 from 127.0.0.0/8 to any
block
in log quick on dmfe1 from 10.0.0.0/8 to any
block
in log quick on dmfe1 from 169.254.0.0/16 to any
block
in log quick on dmfe1 from 172.16.0.0/12 to any
block
in log quick on dmfe1 from 192.168.0.0/16 to any
|
<ループバックの許可>
下記はlocalhostで送受信するパケットの許可を許可ししています。
| pass in quick on
lo0 all
pass out quick on lo0 all
|
<Keep Stateを用いた特定のサービスの許可>
下記はwww(192.168.3.10)で送受信するパケットの許可を許可ししています。(外部→内部)
| block
in log all
pass in quick on dmfe0 proto tcp from any to 192.168.3.10
port = 80 keep state
|
これに対し、各NICに対応させたパケットフィルタを行いたい場合は次の様にグループ化します。
| block in on dmfe0 log all
head 100
pass in quick on dmfe0 proto tcp from
any to 192.168.3.10
port = 80 keep state group 100
block in on dmfe1 log all head 200
pass in quick on dmfe1 proto tcp from
any to 192.168.4.10
port = 80 keep state group 200
block in on dmfe2 log
all head 300
pass in quick on dmfe2 proto tcp from 192.168.0.0/24 to any
port = 80 keep state group 300
|
keep stateを用いる事によりこの様に双方(SYN SYN/ACK)のパケットを意識せずにルールを記述できます、これはダイナミックにSYN/ACKパケットが対応することより、ダイナミックパケットフィルタとも呼ばれています。詳しくは次を参考にしてください。
|