JDP 發表於 2005-5-9 18:24:43

FreeBSD 架設 NAT 及 Firewall Server

使用Firewall
有三個阊護的要素:port, host, protocol
兩種基本Firewall種類:
1.filter packets
2.accounting,統計
IPFW這兩種都可作,可直接用在FreeBSD機器或當gateway router,保護LAN中的多部機器。
※最好在本機操作,以免出問題時而無法連線

【啟用Firewall】
在核心設定檔中加入以下options,並重編核心
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10

或是不要重新編譯核心,而是利用/etc/rc.network script自動載入kernel module,在/etc/rc.conf加入幾個項目
※如果要用NATD,還是要重新編譯核心,因natd需要IPDIVERT這個option
# vi /etc/rc.conf
firewall_enable="YES"
firewall_type="open"
若抒有指定firewall_type,會使用預設編號65535的rule:deny ip from any to any
也就是重開機後,所有的綊路連線完全被封住無法使用。而設定open就是讓封包通過,而不是block。

當設好/etc/rc.conf後,重開機或在本機執行
# /etc/netstart
會看見有哪些rule被啟用,像這樣
Flushed all rules.
00050 divert 8668 ip from any to any via de0
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
65000 allow ip from any to any
Firewall rules loaded, starting divert daemons:

現在可使用ipfw來設定rule,允許哪種traffic或檢視accounting information

【設定IPFW】
ipfw用來自packet filter或account system中add或delete規則(rule)
規則是由幾個部份組成
action: deny, allow
protocol: tcp, udp, all
address: from, to

幾個例子:
#/sbin/ipfw add deny tcp from badguy.com to any
#/sbin/ipfw add deny all from bad.ip.com/16 to www.anyplace.com 80
#/sbin/ipfw add allow all from goodone.bad.ip.com to www.anyplace.com 80
每條rule都有一個號碼,通常以100為一個編號間隔。依號碼順序套用。

檢視目前rule
# ipfw -a list
00050 62 4840 divert 8668 ip from any to any via de0
00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
65000 60 4484 allow ip from any to any
65535 2 356 allow ip from any to any
稍微解釋一下
第一欄:index號碼
第二、三欄:使用統計量,單位是packets/bytes

可在/etc/rc.conf指定數個不同的firewall_types
每個keyword有不同意思,可自/etc/rc.firewall中找到其意思
open:允許全部
closed:除了loopback,關閉所有的IP
client:設定rules,只保護這部機器
simple:設定rules,保護整個綊路
unknown:除了65535這條rule,不載入其它rule
<filename>:從<filename>載入rules

平常用client或simple就夠用了
如果要較特殊的設定,可將rule寫在檔案中,如/etc/firewall.conf,將rule列於其中:
/sbin/ipfw add deny tcp from badguy.com to any
/sbin/ipfw add deny all from bad.ip.com/16 to www.anyplace.com 80
/sbin/ipfw add allow all from goodone.bad.ip.com to www.anyplace.com 80
/sbin/ipfw add 65000 allow all from any to any

變更firewall_type="/etc/firewall.conf"
下回重新開機或執行/etc/netstart會以100, 200, 300的編號順序載入/etc/firewall.conf中的規則。
頁: [1]
查看完整版本: FreeBSD 架設 NAT 及 Firewall Server