于韶杰
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0510020-01
一、緒論
傳統(tǒng)的包過濾防火墻系統(tǒng)主要是包過濾規(guī)則以IP 信息包為基礎(chǔ),對IP 源地址、IP 目標(biāo)地址、封裝協(xié)議(TCP/UDP)、端口號等進(jìn)行篩選。只有符合訪問條件的數(shù)據(jù)包才被轉(zhuǎn)發(fā),其它包被丟棄。其功能設(shè)計(jì)主要是為在IP層和傳輸層上進(jìn)行過濾的,而內(nèi)容過濾在傳統(tǒng)的包過濾防火墻上是難以做到的,其功能主要是依靠代理防火墻來實(shí)現(xiàn)。而筆者所在的學(xué)院包過濾防火墻主要安置在校園網(wǎng)和外部網(wǎng)絡(luò)的出入口,內(nèi)部網(wǎng)絡(luò)通過這個(gè)防火墻與外網(wǎng)進(jìn)行聯(lián)系,其瀏覽訪問Internet的作用比較多,而目前各種暴力、色情等不良信息充斥網(wǎng)絡(luò),如果能在邊界的包過濾防火墻中加入對網(wǎng)頁內(nèi)容過濾的功能,使其既能保持包過濾防火墻對用戶完全透明和過濾速度比較快的特點(diǎn),又能實(shí)現(xiàn)一定的內(nèi)容過濾功能,就大大增加了邊界包過濾防火墻在校園網(wǎng)絡(luò)安全中的實(shí)用性。本文試圖利用Linux自帶的包過濾防火墻模塊Iptable的拓展模塊,進(jìn)行在包過濾防火墻上實(shí)現(xiàn)字符內(nèi)容的過濾的功能研究。
二、Netfilter/layer7匹配簡介
netfilter的設(shè)計(jì)主要是為在IP層和傳輸層上進(jìn)行過濾的,layer7匹配的出現(xiàn)使得netfilter具備了一定的內(nèi)容檢測能力,其代碼可http://l7-filter.sf.net下載,layer7可用于TCP、UDP、ICMP協(xié)議的數(shù)據(jù)內(nèi)容匹配。
Layer7匹配的源碼包括兩個(gè)文件l7-protocols-
ilter-layer7-
由于模式只定義服務(wù)器段,而服務(wù)器返回的數(shù)據(jù)對于netfilter來說是屬于ESTABLISHED的數(shù)據(jù),所以要使用layer7匹配,必須是針對返回的數(shù)據(jù)進(jìn)行匹配,而且要在通常的狀態(tài)檢測允許通過(iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT)的命令前進(jìn)行,否則是檢測不出什么來的。
三、網(wǎng)頁內(nèi)容的過濾的具體實(shí)現(xiàn)
首先我們有Iptable做NAT實(shí)現(xiàn)內(nèi)部機(jī)器透過NAT共享能上Internet:
1.下載所需要的軟件包:
下載新內(nèi)核linux-2.6.19.7;下載iptables1.2.7;下載Layer-7補(bǔ)丁,模塊協(xié)議:
l7-protocols-2007-01-13.tar.gz 和netfilter-layer7-v2.9.tar.gz
2.配置好內(nèi)核選項(xiàng):
把源碼都放在/usr/src下:tar -jvf linux-2.6.19.7.tar.bz2#解壓
3.安裝下列L7補(bǔ)丁
安裝l7協(xié)議、L7內(nèi)核支持補(bǔ)丁。
make menuconfig進(jìn)去 ,把Layer 7 match support選上 。
四、編譯內(nèi)核、升級iptables(略)
五、測試內(nèi)容過濾功能
string模塊是匹配ASCII那種漢字編碼的,也就是用UltraEdit用十六進(jìn)制方式打開可以直接看懂的,我們以屏蔽網(wǎng)頁中暴力和色情關(guān)鍵字為例,首先我們分別轉(zhuǎn)換暴力和色情的utf-8和gb2212的十六進(jìn)制編碼,具體結(jié)果如下:
B1A9C1A6 #暴力ASCLL碼
E69AB4E48A9B #暴力UTF-8碼
C9ABC7E9 #色情ASCLL碼
E889B2E68384#色情UTF-8碼
然后配置iptables規(guī)則:
iptables -I FORWARD -m string --hex-string "| B1A9C1A6|" --algo bm --to 64424 -j DROP
iptables -I FORWARD -m string --hex-string "| E69AB4E48A9B |" --algo bm --to 64424 -j DROP
iptables -I FORWARD -m string --hex-string "| C9ABC7E9|" --algo bm --to 64424 -j DROP
iptables -I FORWARD -m string --hex-string "| E889B2E683848|" --algo bm --to 64424 -j DROP
將配置好的iptables防火墻過濾規(guī)則保存,經(jīng)過測試,瀏覽含有“暴力”和“色情”關(guān)鍵字的網(wǎng)頁時(shí),iptables防火墻會自動對其進(jìn)行過濾,阻止了客戶端機(jī)器的瀏覽行為。
六、結(jié)論
使用Iptables配合L-7模塊為校園網(wǎng)構(gòu)建一個(gè)實(shí)用的具有字符過濾功能的包過濾防火墻系統(tǒng),做為校園網(wǎng)邊界防火墻系統(tǒng),具備了對不良信息的過濾功能,以往這種過濾功能基本上是代理防火墻的工作,而代理防火墻的速度較慢,如果作為邊界防火墻會大大影響內(nèi)部主機(jī)的訪問速度,因此我們利用Iptable的新增模塊具有的網(wǎng)絡(luò)層UTF-8碼和 ASCLL碼的過濾功能,將文字轉(zhuǎn)換成UTF-8碼和 ASCLL碼的形式添加到過濾規(guī)則中去,在包過濾防火墻中實(shí)現(xiàn)字符的過濾,并通過測試,速度比較滿意。
參考文獻(xiàn):
[1]唐建國,防火墻的安全及其效能分析[J].中國科技信息2007.4:120.
[2]張琦,防火墻包過濾技術(shù)剖析[J].網(wǎng)管員世界,2007.11:95.
[3]施怡,使用iptables構(gòu)建Linux防火墻[J].福建電腦,2004.10:71.
[4]劉君堯,Linux下基于Netfilter的防火墻設(shè)計(jì)[J].微機(jī)發(fā)展,2003.13(8):25-27。
[5]楊剛、陳蜀宇,Linux中基于Netfilter/Iptables的防火墻研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007.9,(28)17:4124.
[6]李洋、汪虎松等,RedHat Linux9.0系統(tǒng)與網(wǎng)絡(luò)管理教程[M].北京:電子工業(yè)出版社,2006.07.
[7]邱桔、韋理麗,Linux下包過濾防火墻的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)工程與設(shè)計(jì).2006.7(27),13:2472-2475.