pf 続き

ちょろっとメモです。

まずは使い方ですが

  1. /etc/rc.conf に pf_enable="YES"
  2. /etc/pf.conf(デフォルト)にルール記述
  3. /etc/rc.d/pf start で pf 開始、/etc/rc.d/pf stop で停止

です。ちなみに

  • pfctl -nf /etc/pf.conf でルールテスト可能
  • ipfilter と違い、/etc/pf.conf にフィルタルール/NAT ルール共に記載

も私的にはポイントです。

loadable module なので kernel の再構築が必要ない*1のは ipfilter 同様で便利ですが、ファイアウォールとしてのデフォルトポリシーを明示的に指定しないと DENY にできないのはチョッと... ま、かといって ipfw.ko みたいに load した瞬間に DENY ポリシーが適応されて、ネットワーク経由での操作が一切できなくなるのもかなり怖いですが :p)。

とりあえず自宅の VMWare 環境*2では、以下のルールを設定しています。

ext_if = "lnc0"
table  const { 10.0.0.0/8 172.16.0.0/12 }

scrub in all

pass in  quick on lo0 all
pass out quick on lo0 all

antispoof quick for $ext_if inet

block in  on $ext_if from  to any
block out on $ext_if from any to 

自宅では 192.168.0.0/24 を使っているので、それは除外してます。で、これを load すると、実際にはこんな感じに展開されます。

# pfctl -sr
scrub in all fragment reassemble
pass in quick on lo0 all
pass out quick on lo0 all
block drop in quick on ! lnc0 inet from 192.168.0.0/24 to any
block drop in quick on ! lnc0 inet from 192.168.0.53 to any
block drop in quick on ! lnc0 inet from 192.168.0.54 to any
block drop in quick on ! lnc0 inet from 192.168.0.55 to any
block drop in quick on ! lnc0 inet from 192.168.0.56 to any
block drop in quick inet from 192.168.0.52 to any
block drop in quick inet from 192.168.0.53 to any
block drop in quick inet from 192.168.0.54 to any
block drop in quick inet from 192.168.0.55 to any
block drop in quick inet from 192.168.0.56 to any
block drop in on lnc0 from  to any
block drop out on lnc0 from any to 
# pfctl -t rfc1918_wo_192 -Tshow
   10.0.0.0/8
   172.16.0.0/12

ipfilter も 4.x になると大分変わったみたいなので一概には言えませんが、現行の ipfilter 3.x と比較すると、ルールの記述がかなりシンプルにできるので、既存のルールがゴチャゴチャしてきたなぁ... と思っていた私には嬉しい限りです(ので、こうしてメモメモ :-)。

*1:シツコイようですが ALTQ 使うときは要りますよ

*2:昨日、『あと 1日』警告を受けて慌てて購入しました...