利用しているOS は FreeBSD 5.2-RELEASE
いくつかの方法がありますが、ここでは IP Filter を利用します。
モジュールとして利用する方法を採ります。
以下のオプションを設定してカーネルを作り直します。
options PFIL_HOOKS
/boot/loader.conf に以下を追加。
起動時にロードするモジュールとして指定します
ipl_load="YES" # IP Filter
/etc/rc.conf に以下を追加。
IP Filterを利用することを宣言します。
ipfilter_enable="YES"
起動時に以下のようなログが出ればOKだと思います。
IP Filter: v3.4.31 initialized. Default = pass all, Logging = enabled
/etc/ipf.rule を編集。
ネットワーク構成や、利用するプロトコルによって変わりますが、
必要なもの以外は通らないように設定しておくのが無難でしょう。
参考までに、とりあえずこんな感じにしてみました。
# 基本的なルールを quick指定で指定 block in log quick from any to any with ipopts frag block in log quick proto tcp from any to any with short # 一旦、全てのインタフェースに対して入力を可能にしておく pass in from any to any pass out from any to any # ルーティングしてはいけないIPアドレスをquick指定で遮断。 block in quick from 169.254.0.0/16 to any ####### input from Internet ####### # インターネットからの入力に対して、一旦全部のパケットを遮断。 block in on tun0 all head 100 # インターネットから絶対来ないはずのIPアドレスを遮断。 block in quick from 192.168.0.0/16 to any group 100 block in quick from 172.16.0.0/12 to any group 100 block in quick from 127.0.0.0/8 to any group 100 block in quick from 10.0.0.0/8 to any group 100 block in quick from 0.0.0.0/8 to any group 100 block in quick from 192.0.2.0/24 to any group 100 block in quick from 224.0.0.0/4 to any group 100 block in quick from 240.0.0.0/4 to any group 100 # マイクロソフトのファイル共有関係を一応遮断。 block in quick proto tcp/udp from any port 136 >< 140 to any group 100 block in quick proto tcp/udp from any to any port 136 >< 140 group 100 block in quick proto tcp/udp from any to any port = 445 group 100 block in quick proto tcp/udp from any to any port = 3389 group 100 # 通すパケットを記述。 pass in quick proto tcp all flags A/A group 100 pass in proto tcp from any to any port = 22 flags S/SA group 100 pass in proto tcp from any to any port = 23 flags S/SA group 100 pass in proto tcp from any to any port = 25 flags S/SA group 100 pass in proto tcp from any to any port = 53 flags S/SA group 100 pass in proto tcp from any to any port = 80 flags S/SA group 100 pass in proto tcp from any to any port = 110 flags S/SA group 100 pass in proto udp from any to any port = 53 group 100 pass in proto udp from any port = 53 to any group 100 pass in proto udp from any port = 123 to any group 100 pass in proto icmp from any to any group 100 pass in proto gre from any to any group 100 pass in proto tcp from any to any port = 1723 group 100 pass in proto igmp from any to any group 100 pass in proto 50 from any to any group 100 pass in proto udp from any to any port 33433 >< 33690 group 100 pass in proto tcp from any to any port = 113 flags S/SA keep state group 100 pass in proto tcp from any to any port = 21 flags S/SA keep state group 100 pass in proto tcp from any to any port = 20 flags S/SA keep state group 100 pass in proto tcp from any port = 20 to any port > 1023 flags S/SA keep state group 100 # output to Internet # インターネットへの出力は全部通す。(後で制限する) pass out on tun0 all head 200 # インターネットへ流してはいけないものは遮断 block out from any to 192.168.0.0/16 group 200 block out from any to 172.16.0.0/12 group 200 block out from any to 127.0.0.0/8 group 200 block out from any to 10.0.0.0/8 group 200 block out from any to 0.0.0.0/8 group 200 block out from any to 192.0.2.0/24 group 200 block out from any to 224.0.0.0/4 group 200 block out from any to 240.0.0.0/4 group 200 block out from any to 169.254.0.0/16 block out proto tcp/udp from any port 136 >< 140 to any group 200 block out proto tcp/udp from any to any port 136 >< 140 group 200 block out proto tcp/udp from any to any port = 445 group 200 block out proto tcp/udp from any to any port = 3389 group 200 # 以降、ローカルな設定を記述
OSの起動時には自動的に実行されますが、明示的に設定を変更するには以下のとおり。
# /sbin/ipf -Fa -f /etc/ipf.rules
起動後は、正しく設定できているか確認しましょう。
# /sbin/ipfstat -i
# /sbin/ipfstat -o
Copyright© All rights reserved. Junkie 2002-2004
Last Update 2004.01.25