方立公
(徐州工業(yè)職業(yè)技術(shù)學(xué)院 圖文中心 江蘇 徐州 221140)
摘 要:基于匯文服務(wù)器的網(wǎng)絡(luò)環(huán)境特點(diǎn),運(yùn)用IPFW 制作一個(gè)透明網(wǎng)橋防火墻,對其動(dòng)態(tài)規(guī)則進(jìn)行分析,作出一個(gè)適合數(shù)據(jù)庫長連接的規(guī)則集。
關(guān)鍵詞:防火墻;透明網(wǎng)橋;包過濾;連接保活
前言
匯文文獻(xiàn)信息服務(wù)系統(tǒng)采用Client/Server體系結(jié)構(gòu),采用大型關(guān)系型數(shù)據(jù)庫 oracle作為數(shù)據(jù)庫服務(wù)平臺(tái)。支持TCP/IP、NetBEUI等多種通訊協(xié)議。本文討論如何用IPFW 為匯文服務(wù)器制作透明網(wǎng)橋防火墻,以構(gòu)建一個(gè)比較安全的拓?fù)浣Y(jié)構(gòu).
1.FREEBSD的IPFW 透明網(wǎng)橋防火墻
1.1IPFW
IPFW是一個(gè)由FREEBSD 發(fā)起的防火墻應(yīng)用軟件,用來控制IPFW防火墻和流量整形.可以創(chuàng)建信息包進(jìn)入系統(tǒng)規(guī)則集,使得過濾出入系統(tǒng)的數(shù)據(jù)流成為可能[1].
1.2透明網(wǎng)橋防火墻
FREEBSD可以將一臺(tái)PC機(jī)加兩個(gè)網(wǎng)卡制作成以太網(wǎng)橋,將這個(gè)網(wǎng)橋串接于匯文服務(wù)器前.FreeBSD 的網(wǎng)橋設(shè)備配合IP Filter可以建立一個(gè)不可見的防火墻.
2.匯文系統(tǒng)網(wǎng)絡(luò)拓?fù)浜?oracle穿過防火墻的問題及端口復(fù)用
2.1匯文系統(tǒng)網(wǎng)絡(luò)拓?fù)浼巴该骶W(wǎng)橋防火墻加載位置
匯文系統(tǒng)網(wǎng)絡(luò)拓?fù)浼巴该骶W(wǎng)橋防火墻加載位置,如圖1所示
對網(wǎng)橋和網(wǎng)卡而言,流入的包為in,流出的包為out.
2.2 Oracle服務(wù)器與客戶端通訊過程
服務(wù)器上的監(jiān)聽進(jìn)程在1521端口上進(jìn)行偵聽,客戶端發(fā)起一個(gè)數(shù)據(jù)庫連接請求,監(jiān)聽進(jìn)程fork一個(gè) Oracle服務(wù)器進(jìn)程(Server Process),服務(wù)器進(jìn)程選擇一個(gè)大于1024的端口號進(jìn)行偵聽,監(jiān)聽進(jìn)程把偵聽個(gè)端口號發(fā)回到客戶端,要求客戶端重新連接這個(gè)指定的偵聽端口.客戶端重新連接監(jiān)聽指定的新端口,與Server Process直接對話,不再通過監(jiān)聽,進(jìn)行會(huì)話認(rèn)證(登錄),執(zhí)行SQL等等[2].
3. 配置透明網(wǎng)橋防火墻
3.1安裝FreeBSD
硬件包括聯(lián)想萬全1050,兩張intel pro100 網(wǎng)卡.最小化安裝FreeBSD6.1.
3.2 配置網(wǎng)橋
以root用戶登陸,編輯/etc/rc.conf.
ee etc/rc.conf,加入如下參數(shù):
cloned_interfaces="bridge0",ifconfig_bridge0="addm fxp0addm fxp1up"
ifconfig_fxp0="up",ifconfig_fxp1="up",保存,重啟后系統(tǒng)創(chuàng)建網(wǎng)橋.
3.3 加載IPFW防火墻
ee/etc/rc.conf,加入如下參數(shù):
firewall_enable="YES"(啟用IPFW防火墻)
firewall_script="/etc/ipfw.conf"(指定自定義規(guī)則集文件).
開啟日志.在/etc/sysctl.conf,加入如下參數(shù):net.inet.ip.fw.verbose=1(啟動(dòng)日志),net.inet.ip.fw.verbose_limit=5(同一個(gè)信息只記錄5次)
4.配置IPFW自定義規(guī)則集
4.1匯文服務(wù)器防火墻要求及特點(diǎn)分析
匯文服務(wù)器端口復(fù)用,多個(gè)OracleServer Proces使用一個(gè)端口(1521)和客戶端進(jìn)行通信.因此,在防火墻上只需開放一個(gè)端口為1521,IPFW默認(rèn)是deny any,這樣能較好地保護(hù)匯文服務(wù)器[3].
4.2 生成及調(diào)試規(guī)則
4.2.1生成規(guī)則ee/etc/ipfw.conf加入如下內(nèi)容:
ipfw add 19007check-state,
ipfw add 19008al-low tcp from any to 192.168.10.2:1521in via fxp0 setup keep-state,
4.2.2規(guī)則解釋
當(dāng)有數(shù)據(jù)包進(jìn)入防火墻時(shí),IPFW會(huì)從規(guī)則集里的第1個(gè)規(guī)則開始進(jìn)行比較,并自頂向下進(jìn)行匹配.當(dāng)包與某個(gè)選擇規(guī)則參數(shù)相匹配時(shí),將會(huì)執(zhí)行規(guī)則所定義的動(dòng)作,
并停止規(guī)則集搜索.19007條用來識別在IPFW規(guī)則集中的包是否符合動(dòng)態(tài)規(guī)則機(jī)制的規(guī)則.19008條在in via fxp0上,允許any訪問192.168.10.2:1521端口,并生成一個(gè)動(dòng)態(tài)規(guī)則.setup keep-state
匹配TCP會(huì)話,發(fā)起請求,在發(fā)生匹配時(shí),防火墻將創(chuàng)建一個(gè)動(dòng)態(tài)規(guī)則,其默認(rèn)行為是,匹配使用同一協(xié)議的,從源到目的IP/端口的雙向網(wǎng)絡(luò)流量.19009條在invia fxp1上,允許anyto any,并生成一個(gè)動(dòng)態(tài)規(guī)則.30000條拒絕所有,并記錄日志.重新啟動(dòng)后,規(guī)則生效.
4.2.3規(guī)則測試
將防火墻加入到匯文網(wǎng)絡(luò)后,運(yùn)行匯文客戶端,各模塊正常,
在客戶端用工具對匯文數(shù)據(jù)庫進(jìn)行備份,工作正常.當(dāng)客戶端工作清閑時(shí),出現(xiàn)與服務(wù)器斷接問題.根據(jù)動(dòng)態(tài)規(guī)則表檢查數(shù)據(jù)包,如果匹配,則執(zhí)行規(guī)則所指定的動(dòng)作,亦即生成動(dòng)態(tài)規(guī)則.否則,轉(zhuǎn)移到下一個(gè)規(guī)則.
4.2.4 實(shí)例解釋
192.168.010.208:1130訪問過192.168.10.2:
1521后,就形成一個(gè)動(dòng)態(tài)規(guī)則,并形成一個(gè)雙向的通道,并在一定的時(shí)間內(nèi)保持這個(gè)通道,下次192.168.010.208:1130再訪問192.168.10.2:1521時(shí)就直接走這個(gè)通道就可以了.
動(dòng)態(tài)規(guī)則生存時(shí)間為300s.如果192.168.010.208:1130在生存時(shí)間在300s內(nèi)不訪問192.168.10.2:1521,這條動(dòng)態(tài)規(guī)則就撤銷了,
數(shù)據(jù)庫訪問斷開.
keep-state只適用于對web網(wǎng)頁的無狀態(tài)訪問,時(shí)間短,連接數(shù)多,效率高,不適用于數(shù)據(jù)庫類的長時(shí)間連接.
4.3規(guī)則改進(jìn)與tcp連接?;?/p>
4.3.1 規(guī)則改進(jìn)
ipfw add 19008allow tcp fromany to 192.168.10.2:1521in via fxp0
ipfw add 19009allow all from any to any invia fxp1,
ipfw add 19010allow ip from any to any out via fxp0,
ipfw add 19011allow ip from any to any out via fxp1,
不使用keep-state,不再生成動(dòng)態(tài)規(guī)則,也不再形成雙向通道,除了原有的兩條in方向,加上了兩條out方向,由于使用網(wǎng)橋,19010允許在網(wǎng)橋上通過數(shù)據(jù)包.
5.結(jié)語
透明網(wǎng)橋式接入點(diǎn)無需地址配置或做NAT,且無IP地址,因而具有隱蔽性,可避免多種攻擊,并避開一般3層防火墻的NAT帶給oracle應(yīng)用程序的局限性,所以更具有相對的優(yōu)越性.
參考文獻(xiàn)
[1]張輝,F(xiàn)reeBSD操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:人民郵電出版社,2006.
[2]鄭勇,馮銳.TCP連接斷連問題剖析.
[3]特瑞亞奧特.Oracle安全手冊[M].潘德宏,譯.北京:機(jī)械工業(yè)出版社,2002.