FreeBSD5.3設定メモ IP Filter

この記事は2005年頃に執筆した文書がもとになっている。

使用した OS は FreeBSD5.3-RELEASE。IP Filter のバージョンは 3.4.35。

有効化

カーネルを再構築しても良いが、最近のトレンドはモジュールをカーネルにロードする方法らしいので、手軽な方を選ぶ。kldstatipl.ko がなかったら、

# kldload ipl

起動時に組み込むには、

# vi /boot/locader.conf
ipl_load="YES"
# vi /etc/rc.conf
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipf_log"

ipmon を指定する事でログを採取してもらえる。

設定

デフォルトの ipf.rules を作成。grep -v inet6 で IPv6 非使用。

# perl /usr/src/contrib/ipfilter/mkfilters | grep -v inet6 > /etc/ipf.rules

以下は ipf.rules の設定例。ローカルネットワークは 192.168.1.0/24、サーバのアドレスは、192.168.1.10/32、NIC は ed0、httpd・ftpd・sshd・ntpd・IRC 用の bot が走っていて、ルータから syslog を受け取っていると仮定する。

#
# The following routes should be configured, if not already:
#
#
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short
# loop back
pass out quick on lo0 all
pass in quick on lo0 all


# out
pass out on ed0 all head 150
# IPspoofing
block out log quick from any to 192.168.1.10/32 group 150
block out log from 127.0.0.0/8 to any group 150
block out log from any to 127.0.0.0/8 group 150


# in
block in log quick on ed0 all head 100
# IPspoofing
block in log quick from 10.0.0.0/8 to any group 100
block in log quick from 172.16.0.0/12 to any group 100
block in log quick from 0.0.0.0/8 to any group 100
block in log quick from 169.254.0.0/16 to any group 100
block in log quick from 224.0.0.0/4 to any group 100
block in log quick from 240.0.0.0/4 to any group 100
block in log quick from 192.168.1.10/32 to any group 100
block in log quick from 127.0.0.0/8 to any group 100
block in log quick from any to 127.0.0.0/8 group 100
# www server
pass in quick proto tcp from any to 192.168.1.10/32 port = 80 flags S keep state group 100
# www client
pass in quick proto tcp from any port = 80 to 192.168.1.10/32 flags A/A group 100
pass in quick proto tcp from any port = 443 to 192.168.1.10/32 flags A/A group 100
# NTP
pass in quick proto udp from any to 192.168.1.10/32 port = 123 keep state group 100
# syslog
pass in quick proto udp from 192.168.0.1/32 to 192.168.1.10/32 port = 514 keep state group 100
# DNS return
pass in quick proto udp from 192.168.0.1/32 port = 53 to 192.168.1.10/32 group 100
# FTP
pass in quick proto tcp from 192.168.1.0/24 to 192.168.1.10/32 port = 20 flags A/A group 100
pass in quick proto tcp from 192.168.1.0/24 to 192.168.1.10/32 port = 21 flags S keep state group 100
pass in quick proto tcp from any port = 20 to 192.168.1.10/32 flags S group 100
pass in quick proto tcp from any port = 21 to 192.168.1.10/32 flags S group 100
# SSH
pass in quick proto tcp from 192.168.1.0/24 to 192.168.1.10/32 port = 22 flags S/SA keep state group 100
# IRC
pass in quick proto tcp from any port = 6667 to 192.168.1.10/32 flags A/A group 100
# CVSup
pass in quick proto tcp from any port = 5999 to 192.168.1.10/32 flags A/A group 100

ログをローテートする。

# vi /etc/newsyslog.conf
/var/log/ipf_log	640  10  *  #M1D0 Z

起動

ルールを再読み込み。

# ipf -FA -Z -f /etc/ipf.rules

out と in の設定を確認するにはそれぞれ、

# ipfstat -o
# ipfstat -i
Pocket

コメントを残す

メールアドレスが公開されることはありません。