PktFilter

Windows 2000 や XP Pro には,標準でパケットフィルタリング機能があったりする。
しかしルールの設定方法に融通性がなかったりして,なにか良いものはないかというときに,
この PktFilter の存在を教えていただいた。

■ PktFilter
PktFilter は IP Filter ライクな構文でステートレスなパケットフィルタを実現できる。
Windows 2000/XP/Server 2003 上で使用可能なパケットフィルタである。
BSD license で配布され,ソースも添付される。


■ 配布元
PktFilter v0.06-beta2
http://www.hsc.fr/ressources/outils/pktfilter/


■ インストール

・アーカイブを展開し,作成されたディレクトリ "PktFilter" を C:\Program Files 以下等に移動する。
・コマンドプロンプトから以下のコマンドを実行し,レジストリへの登録を行う。
C:\>"C:\Program Files\PktFilter\pktfltsrv\pktfltsrv.exe" (実際は改行なし)
 -i "C:\Program Files\PktFilter\pktctl\rules.txt" (実際は改行なし)
 "C:\Program Files\PktFilter\pktctl\PktFilter.log"

Installation of Packet Filtering service was successful
が表示されれば OK 。

・net start コマンドを用い,サービスを開始する。
C:\>net start pktfilter
Stateless Packet Filtering サービスを開始します.
Stateless Packet Filtering サービスは正常に開始されました。

以上でデフォルトルールでの運用が開始される。
デフォルトで全てを禁止しているため,ネットワークを介してのやり取りはできない。

フィルタリングルールを編集したら,
サービス名 PktFilter
サービス表示名 Stateless Packet Filtering
を再起動する必要がある。

あと,サービスの自動開始設定も忘れずに。

・アンインストール
バージョンアップや再インストールの際には,先にアンインストールが必要となる。
アンインストールはサービスを停止してから,
C:\>"C:\Program Files\PktFilter\pktfltsrv\pktfltsrv.exe -u
を実行すればよい。


■ フィルタリングルール
IP Filter ライクな文法でルールが定義できる。
ロギング等,若干の差異があり注意が必要。
デフォルト拒否モデルになっているので,必要な通信を列挙すれば良い。

# drop packets composed of small fragments
option small_frags on eth0

# default policy = block everything
block in  on eth0 all
block out on eth0 all

# for dns
pass out on eth0 proto udp from 192.168.0.32 port > 1023 to 192.168.0.254 port = 53
pass in  on eth0 proto udp from 192.168.0.254 port = 53 to 192.168.0.32 port > 1023
# for proxy
pass out on eth0 proto tcp from 192.168.0.32 port > 1023 to 192.168.0.253 port = 3128
pass in  on eth0 proto tcp from 192.168.0.253 port = 3128 to 192.168.0.32 port > 1023 established
# ICMP
pass out on eth0 proto icmp from any to any icmp-type echo
pass out on eth0 proto icmp from any to any icmp-type unreach
pass in  on eth0 proto icmp from any to any icmp-type echorep
pass in  on eth0 proto icmp from any to any icmp-type unreach


■ コントロール
・インターフェース名の表示
pktctl -I

C:\>"C:\Program Files\PktFilter\pktctl\pktctl.exe" -I
eth0: (Intel(R) PRO Adapter): 192.168.0.32

このインターフェース名を用いてルールを記述する必要がある。

・ステータス表示
pktctl -S eth0


■ 管理用バッチファイル
以下の3つのバッチファイルを作成すると便利。

###### GetState-pktfilter.bat
@echo off
echo ### GetState pktfilter ###
cmd /c "C:\Progra~1\PktFilter\pktctl\pktctl -S eth0"
pause
###### GetState-pktfilter.bat


###### Start-pktfilter.bat
@echo off
echo ### starting pktfilter ###
cmd /c net start "Stateless Packet Filtering"
pause
###### Start-pktfilter.bat


###### Stop-pktfilter.bat
@echo off
echo ### stopping pktfilter ###
cmd /c net stop "Stateless Packet Filtering"
pause
###### Stop-pktfilter.bat


■ その他
・システム起動時に,PktFilter のサービスが起動するまで,結構なタイムラグがある模様。
・詳細なドキュメントが附属しているので,詳しくはそちらをご参照あれ。
・最近は,日本語での紹介も充実してきた。
・何よりも大切なのは,方針の決定と設定後の動作確認。


    

[Top Page]