俺だけのために Ore! Tips!

ファイアウォール(ipfw)を利用する

2004年06月19日 作業

ファイアウォール(ipfw)の利用設定〜FreeBSD 4.8-RELEASE の場合〜

FreeBSD 4.8-RELEASE では、新たにファイアウォールソフトなどをインストールしなくても、カーネルの再構築をすれば、ファイアウォール(ipfw)の利用が出来るようになる。

下記オプションを追加して、カーネル再構築。
(今回は、/usr/src/sys/i386/conf/SHINODA を使用)

options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100



カーネル再構築がすんだら、/etc/rc.conf に、下記の記述を追加。

firewall_enable="YES"
firewall_type="open"


このように、ファイアウォールのタイプにとりあえず "open" を指定しておかないと、再起動後に別のマシンから telnet が出来なくなり("closed" を指定したのと同じ状態なんかな?)、コンソールから操作をしなくてはいけなくなるので面倒やで。
ちなみにわしは、firewall_enable="YES" の記述もしてなかったので、「ファイアウォールを使えるようにはしたが、有効にはしていない」状態なのかと思っていたが、再起動後に telnet 接続が出来なくなってたんで焦った。
なんでやろう?
/etc/defaults/rc.conf を見ると、ちゃんと firewall_enable="NO" がディフォルトのようだが・・・。何か、別に原因があったのか???
ま、ちゃんと /etc/rc.conf に設定を書けば問題ないけど。

で、再起動後、手動でルールを追加してテストをしながら通常設定するルールを決めていく。
で、そのルールを適当なファイル(/etc/rc.ipfw 等)に保存して、/etc/rc.conf の中で、

firewall_enable="YES"
firewall_script="/etc/rc.ipfw"


のように記述。(firewall_type="open" の記述は、削除するかコメントにする)

で、一旦、

mikan# /etc/rc.ipfw

のように実行して、ipfw のルールの設定状況をきれいにしましょうで。


<特別付録>

一番最初に設定した /etc/rc.ipfw の中身。

#!/bin/sh
# rc.ipfw

fwcmd="/sbin/ipfw -q"

${fwcmd} -f flush

# Only in rare cases do you want to change these rules
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

${fwcmd} add 410 deny all from 192.168.10.0:255.255.255.0 to any in recv ed0
${fwcmd} add 420 deny all from 192.168.0.0:255.255.255.0 to any in recv dc0

${fwcmd} add 430 deny all from 10.0.0.0/8 to any via ed0
${fwcmd} add 440 deny all from 172.16.0.0/12 to any via ed0

# maintenance IP
# 192.168.0.7 Windows 2000 PC
# 192.168.0.17 Fedora Core 1 PC
${fwcmd} add 510 allow ip from 192.168.0.7 to 192.168.0.5
${fwcmd} add 520 allow ip from 192.168.0.5 to 192.168.0.7
${fwcmd} add 530 allow ip from 192.168.0.17 to 192.168.0.5
${fwcmd} add 540 allow ip from 192.168.0.5 to 192.168.0.17


この後、Samba サーバにつながらない等の諸症状を解決するため、問題が出るたびにルールの追加をしていっています。

前ページに戻る


Copyright (C) 2003-2004 S.Maaasamasa.