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]