FreeBSD防火墻設(shè)定_第1頁
FreeBSD防火墻設(shè)定_第2頁
FreeBSD防火墻設(shè)定_第3頁
FreeBSD防火墻設(shè)定_第4頁
FreeBSD防火墻設(shè)定_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、freebsd 防火牆設(shè)定臺中縣教網(wǎng)中心黃國順.tw 1.什麼是防火牆防火牆是一個雙向的安全管理機制,不僅能防止外界的入侵,也可以限制內(nèi)部主機對外的通訊。2.需要的網(wǎng)路基礎(chǔ)2-1 了解 tcp/ip 與 ethernet運作模式2-2 ip address的資訊是存放在( internet protocol)封包 head中source port (16) destination port (16) sequence number (32) acknowledgment number (32) data offset(4) reserved (6) u g

2、 r a c k p s h r s t s y n f i n window (16) checksum (16) urgent pointer (16) options (0 or more 32 bit words + padding) data . ip(internet protocol)封包格式2-3 tcp/udp 傳送及 port 的概念source port (16) destination port (16) sequence number (32) acknowledgment number (32) data offset(4) reserved (6) u g r a

3、 c k p s h r s t s y n f i n window (16) checksum (16) urgent pointer (16) options (0 or more 32 bit words + padding) data . tcp 封包表頭格式udp source port (16) udp destination port (16) message length (16) udp checksum (16) data . udp 封包表頭格式在 tcp/ip 協(xié)定,關(guān)於傳送層的協(xié)定就是tcp 和 udp 了,簡而言之,tcp 提供的是一個可靠的資料流傳送服務(wù),udp

4、 提供的是一個非可靠的非連線型(connectionless) 的資料流傳送服務(wù)。埠(port)的概念:無論是 tcp 都還是 udp 必須要藉由埠 (port)方法達到同時多個連線及多工的。藉由分析來源或目的port 可以了解使用者所進行的服務(wù)。下圖是一個典型 internet 連線方式 (client/server)的如下所示 : 01255347616553502280165535browserputtysshdhttpdclientserver1254browser2-4nat mode vs. routing mode vs. bridge mode nat/2

5、4/2454nat mode router/24/24routing mode /24/24bridgebridge mode bridge mode典型的應(yīng)用internet28/25routerinternet28/25routerbridge/firewall3.啟用 freebsd 防火牆傳統(tǒng)上 freebsd使用 ipfw 作為防火牆,在此則介紹另一套原本被使用在openbsd上之防火牆 packet

6、 filter (pf),freebsd 在 5.3 之後的版本也加入支援使用 pf 作為防火牆。3-1 重新編譯核心 (kernel) # cd /usr/src/sys/i386/conf/ #cp generic fwkernel #ee fwkernel 加入或修改下面參數(shù)# kernel name ident fwkernel # pf support device pf device pflog device pfsync # altq support options altq options altq_cbq options altq_red options altq_rio o

7、ptions altq_hfsc options altq_priq # for smp machine #options altq_nopcc # other stuff #options ipstealth options hz=1000 # bridge support device if_bridge 存檔後 , 執(zhí)行下列命令編譯核心#cd /usr/src #make buildkernel kernconf=fwkernel #make installkernel kernconf=fwkernel 成功後需重新開機#sync;sync;sync;reboot 萬一無法使用新編譯好

8、的kernel 開機,請在開機選單時選6 進入 loader 模式,並輸入下列指令可以使用舊的kernel 開機:ok unload ok boot /boot/kernel.old 3-2 package filter (pf) 啟用 pf 防火牆無論使用哪一種防火牆,首先我們應(yīng)該要先確認網(wǎng)路相關(guān)的設(shè)定,所以請利用ifconfig 了解目前的設(shè)定。若是有問題請修改/etc/rc.conf #網(wǎng)卡 ip ifconfig_ lnc0=inet 00 netmask #設(shè)定好 default gateway defaultrouter=163.

9、17.154.254 加入啟用 pf 的設(shè)定# enable pf firewall pf_enable=yes pf_rules=/etc/pf.conf pf_flags= # enable pf logging pflog_enable=yes pflog_logfile=/var/log/pflog pflog_flags= 若以命令列操作 pf 時,可利用 pfctl 命令,以下列出常用的語法:命令說明pfctl -e enable pf pfctl -d disable pf pfctl -f /etc/pf.conf load the pf.conf file pfctl -nf

10、 /etc/pf.conf parse the file, but dont load it pfctl -sr show the current filter rules pfctl -sn show the current nat rules pfctl -sa show everything it can show /etc/pf.conf 的格式在編寫 pf.conf 內(nèi)容時請按照下列區(qū)段順序:macros: user-defined variables that can hold ip addresses, interface names, etc. tables: a struct

11、ure used to hold lists of ip addresses. options: various options to control how pf works. scrub: reprocessing packets to normalize and defragment them. queueing: provides bandwidth control and packet prioritization. translation: controls network address translation and packet redirection. filter rul

12、es: allows the selective filtering or blocking of packets as they pass through any of the interfaces. filter rule 一般我們會將 filter rule 寫在 /etc/pf.conf 中,filter rule 語法如下 : action direction log quick on interface af proto protocol from src_addr port src_port to dst_addr port dst_port flags tcp_flags st

13、ate 參數(shù)說明action pass 通過block 阻斷direction in out log 記錄於 /var/log/pflog quick 符合過濾條件者 ,馬上處理on interface 網(wǎng)路介面 , 例: on lnc0 af inet -ipv4 inet6 -ipv6 proto protocol tcp udp icmp from src_addr port src_port 來源 ip 來源 port to dst_addr port dst_port 目的 ip 目的 port flags tcp_flags tcp flag state keep state mo

14、dulate state pf 的過濾特性傳統(tǒng)上設(shè)定防火牆時有二種模式,一種模式是預(yù)設(shè)拒絕所有連線,再一條一條加入允許的連線;另一種是預(yù)設(shè)接受所有連線,加入幾條拒絕的規(guī)則。如果是非常強調(diào)安全性,應(yīng)該是使用預(yù)設(shè)拒絕所有連線,再一條一條加入我們允許的規(guī)則。pf 預(yù)設(shè)的特性是封包會被全部的規(guī)則所檢查,並且儘可能的滿足pass動作。例: block in on lnc0 proto tcp from any to any port ssh pass in all 上例的 block 將沒有效果 , 正確的方式如下 : block in quick on lnc0 proto tcp from any

15、to any port ssh pass in all 查看 pflog 當我們設(shè)定去 log 封包後,符合規(guī)則的封包將會被記錄在,這個檔案是以二進位的方式存放,因此我們無法直接以文字編輯器打開。但是可以透過tcpdump 來解譯,命令如下:#tcpdump -n -e -ttt -r /var/log/pflog 3-3 本機防火牆在建置本機防火牆時應(yīng)先了解本機對外開啓了哪些服務(wù),並且表列出來以方便建立防火牆規(guī)則時使用。編修/etc/pf.conf #initial paramter me=00 tcp_services=22 80 53 udp_services=5

16、3 #skip pf on lookback set skip on lo #normalization of packets scrub in all #default policy block in log pass out keep state #blacklist block in log quick from #whitelist pass in proto tcp from any to $me port $tcp_services keep state pass in proto udp from any to $me port $udp_services k

17、eep state pass in proto icmp from any to $me icmp-type 8 keep state 存檔後,執(zhí)行# pfctl -f /etc/pf.conf 3-4 pf+nat 環(huán)境說明:nat/24internetlnc000lnc1 依據(jù) rfc 1918的規(guī)定 private ip 範圍:/8 ( - 55) /12 ( - 55) /16

18、( - 55) 修改 rc.conf #ee /etc/rc.conf 加入或修改下面參數(shù) : #設(shè)定好兩張網(wǎng)卡 ip ifconfig_ lnc0=inet 00 netmask 28 ifconfig_ lnc1=inet netmask #設(shè)定好 default gateway defaultrouter=54 # 設(shè)定啟用gateway 的功能。gateway_enable=yes # enable pf fire

19、wall pf_enable=yes pf_rules=/etc/pf.conf pf_flags= # enable pf logging pflog_enable=yes pflog_logfile=/var/log/pflog pflog_flags= 存檔後執(zhí)行#/etc/netstart 擔(dān)任 nat 或 router的 freebsd應(yīng)先檢查系統(tǒng)是否已啟用ip 封包轉(zhuǎn)送功能#sysctl net.inet.ip.forwarding 若結(jié)果的值是 1 便是啟用了,若是沒有啟用,可執(zhí)行下列命令:#sysctl net.inet.ip.forwarding=1 反之;若是要停用ip 封

20、包轉(zhuǎn)送功能,則把值設(shè)為0 即可。編修 pf.conf #initial paramter ext_if=lnc0 int_if=lnc1 int_net=/24 ext_addr=00 tcp_services=22 80 53 udp_services=53 #skip pf on lookback set skip on lo #normalization of packets scrub in all #nat nat on $ext_if from $int_net to any - ($ext_if) #default policy bl

21、ock in log on $ext_if pass in on $int_if from $int_net keep state pass out keep state #blacklist block in log quick from #whitelist pass in proto tcp from any to $ext_addr port $tcp_services keep state pass in proto udp from any to $ext_addr port $udp_services keep state pass in proto icmp

22、 from any to $ext_addr icmp-type 8 keep state 存檔後,執(zhí)行# pfctl -f /etc/pf.conf 在 pf.conf 中使用了一個新的命令nat ,命令參數(shù)如下nat pass log on interface af from src_addr port src_port to dst_addr port dst_port - ext_addr pool_type static-port 最典型的使用方法 : nat on $ext_if from $int_net to any - ($ext_if) nat 內(nèi)部的電腦應(yīng)該已經(jīng)能透過pf

23、 進行 nat 轉(zhuǎn)換上網(wǎng)。但是使用ftp 時便會遇到問題了。原因是ftp 在使用時會建立兩條tcp connection,一條用來傳送命令 (port 21),一條用來傳送資料 (active mode port 20 ,passive mode 則是任意 port)。當使用 passive mode取得目錄 list 時便會產(chǎn)生問題,為了解決這樣問題,pf 採用將 ftp 封包轉(zhuǎn)向給本機 ftp-proxy 的方法。所以還要作一些修改才可。修改/etc/inetd.conf,將 ftp-proxy 設(shè)定為啟用ftp-proxy stream tcp nowait root /usr/libe

24、xec/ftp-proxy ftp-proxy 修改/etc/rc.conf加入下面這一行,設(shè)定為開機時啟動inetd_enable=yes 執(zhí)行/etc/rc.d/inetd start。並且用 netstate -na 檢查 port 8021 是否已啟動接著還要再修改 /etc/pf.conf 在 nat 命令之後加入nat-anchor ftp-proxy/* rdr-anchor ftp-proxy/* rdr pass on $int_if proto tcp to port ftp - port 8021 在最後的地方加入pass in on $ext_if

25、inet proto tcp from any to $ext_if user proxy keep state rdr 命令用來達成 port forwarding 配合 squid 達成透通式的 proxy 穿透式的 proxy 的優(yōu)點是使用者不需要在瀏覽器設(shè)定proxy,封包可藉由 pf 的重新導(dǎo)向便能自動經(jīng)由預(yù)設(shè)的proxy server來處理。要逹成穿透式的proxy 功能 pf及 squid 都需要在設(shè)定上加以修改。修改/usr/local/etc/squid/squid.conf acl our_networks src /24 # 修改為 nat 內(nèi)部網(wǎng)段

26、http_access allow our_networks httpd_accel_host localhost.localdomain # 請修改為您的squid 主機位址名稱httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on squid常用命令首次啟動建立cache # squid -z 啟動 squid # squid reload squid.conf # squid -k reconfigure 修改/etc/pf.conf,加入rdr pass on $int_if proto

27、 tcp from any to any port www - port 3128 頻寬限制pf 還有一項功能便是透過啟用alternate queueing (altq)功能可以控制上傳或下載的頻寬或是優(yōu)先權(quán)。簡單的例子 : /etc/pf.conf 加入 queue設(shè)定#queue altq on lnc1 cbq bandwidth 1000kb queue std, adv queue std bandwidth 100kb cbq(default) queue adv bandwidth 900kb rule pass out on $int_if to 192.

28、168.1.10 keep state queue adv pass out on $int_if to !0 keep state queue std 3-5 bridge mode firewall 實作由於 bridge mode是一個 layer 2的設(shè)備,因此連接兩方的網(wǎng)路介面原則上是最好不用設(shè)定 ip。因此最佳的情況是有三片的網(wǎng)路介面,二片擔(dān)任bridge 一片用來管理。在 freebsd 6.x 提供了一個新的方式可以將多片網(wǎng)卡綁在一起,建立一個新 bridge 介面。測試的範例如下 : lnc0,lnc1 綁在一起產(chǎn)生一個名為bridge0 的介面outs

29、ideinsidebridge firewalllnc0lnc1修改 rc.conf 加入或修改下面參數(shù) : ifconfig_lnc0=inet 00 netmask 28 ifconfig_lnc1=up defaultrouter=54 # enable pf firewall pf_enable=yes pf_rules=/etc/pf.conf pf_flags= # enable pf logging pflog_enable=yes pflog_logfile=/var/log/pflog pflog_flags= # create bridge cloned_interfaces=bridge0 ifconfig_bridge0=addm lnc0 addm lnc1 up 存檔後重新開機,即可啟用bridge0 這個新介面,我們可以使用ifconfig 驗證介面是否正常啟用。修改 sysctl 執(zhí)行下列命令將 bridge 封包導(dǎo)向由pf 處理#sysctl net.link.bridge.pfi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論