- 旧バージョンの FreeBSD ではカーネルを再構築する
# cd /usr/src/sys/i386/conf
# cp GENERIC NEWKERNEL
以下のオプションを/usr/src/sys/i386/conf/NEWKERNELに追加.
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPDIVERT
カーネルを再構築する.
ここで書いた手順は、旧バージョンの FreeBSD で
の手順である.新しい FreeBSD では、この手順で行なわないこと。
# /usr/sbin/config NEWKERNEL
# cd /usr/src/sys/compile/NEWKERNEL
# make depend
# make
# make install
# sync
# reboot
ゲートウェイとして働くようにする.
/etc/rc.confに以下の行を追加する.
gateway_enable="YES"
natd_enable="YES"
natd_interface="外側インターフェース名"
- IPFWを有効にする.
/etc/rc.conf以下の行を追加する
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_quiet="YES"
- IPFWの設定を行う
- 禁止されたパケットについてのログを録ること
- telnetでの外部への接続を禁止
- 192.168.33.*に向けての接続はtelnet以外すべて許可
- tcpで外部に接続するのはtelnet以外すべて許可
- udpで192.168.33.*以外への接続はDNS(port番号 53)のみ許可
- icmpはすべて許可
- 許可していないものはすべて禁止
/etc/rc.firewallの以下の部分を
############
# 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
# If you're using 'options BRIDGE', uncomment the following line to pass ARP
#${fwcmd} add 300 pass udp from 0.0.0.0 2054 to 0.0.0.0
次のように書き直す
${fwcmd} add deny log tcp from any to any 23 in via 外側インターフェース名
${fwcmd} add deny log tcp from any to any 23 out via 外側インターフェース名
${fwcmd} add deny log tcp from any to any 23 in via 内側インターフェース名
${fwcmd} add allow ip from 192.168.33.0/24 to 外側IPアドレス in via 外側インターフェース名
${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.33.255/32 in via 外側インターフェース名
${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.40.0/24 in via 外側インターフェース名
${fwcmd} add allow ip from 外側IPアドレス to 192.168.33.0/24 out via 外側インターフェース名
${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.33.0/24 out via 外側インターフェース名
${fwcmd} add allow ip from 192.168.40.0/24 to 内側IPアドレス in via 内側インターフェース名
${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.40.255/32 in via 内側インターフェース名
${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.33.0/24 in via 内側インターフェース名
${fwcmd} add allow ip from 内側IPアドレス to 192.168.40.0/24 out via 内側インターフェース名
${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.40.0/24 out via 内側インターフェース名
${fwcmd} add allow tcp from any to 外側IPアドレス in via 外側インターフェース名
${fwcmd} add allow tcp from any to 192.168.40.0/24 in via 外側インターフェース名
${fwcmd} add allow tcp from 外側IPアドレス to any out via 外側インターフェース名
${fwcmd} add allow tcp from 192.168.40.0/24 to any out via 外側インターフェース名
${fwcmd} add allow tcp from 192.168.40.0/24 to any in via 内側インターフェース名
${fwcmd} add allow tcp from any to 192.168.40.0/24 out via 内側インターフェース名
${fwcmd} add allow udp from any 53 to 外側IPアドレス in via 外側インターフェース名
${fwcmd} add allow udp from any to 外側IPアドレス 53 in via 外側インターフェース名
${fwcmd} add allow udp from 外側IPアドレス to any 53 out via 外側インターフェース名
${fwcmd} add allow udp from 外側IPアドレス 53 to any out via 外側インターフェース名
${fwcmd} add allow icmp from any to any
${fwcmd} add deny log ip from any to any
- 再起動する
# sync
# reboot
- 確認
以下のコマンドでIPFWのルールリストを見る
# ipfw list