【 摘 要 】 隨著Internet的普及,網(wǎng)絡(luò)的安全顯得尤為重要。Linux提供的基于Netfilter/iptables的防火墻,具有通用性和可擴(kuò)展的特點(diǎn),實(shí)現(xiàn)了一種性價(jià)比較高的安全方案,可以有效地阻止惡意攻擊,成為很多網(wǎng)絡(luò)管理員的選擇。
【 關(guān)鍵詞 】 Netfilter;Iptables;Linux;包過(guò)濾;防火墻
TheResearchandPracticeofPacketFilteringFirewallBasedonthePlatformofLinux
Han Yan
(English College of Dalian University LiaoningDalian 116622)
【 Abstract 】 With the popularization of the internet, the security of network is more and more concerned . Netfilter/iptables framework firewall in Lin-ux Kernel that have the characteristic of general availability, extensible, and they implement a liable safety scheme. It can effectively prevent hostility attack, and becomes choices of many administrators of network.
【 Keywords 】 netfilter; iptables; linux; packet-filtering; firewall
0 引言
網(wǎng)絡(luò)安全需要解決的主要問(wèn)題是在使用互聯(lián)網(wǎng)時(shí)如何保護(hù)單位或私人的內(nèi)部網(wǎng)絡(luò)免受外部攻擊。防火墻是指一個(gè)能把內(nèi)部計(jì)算機(jī)網(wǎng)絡(luò)與互聯(lián)網(wǎng)隔開的屏障,它由計(jì)算機(jī)硬件和特殊的軟件有機(jī)結(jié)合而成,使內(nèi)部計(jì)算機(jī)網(wǎng)絡(luò)與互聯(lián)網(wǎng)之間建立起一個(gè)安全的網(wǎng)關(guān),從而保護(hù)內(nèi)部計(jì)算機(jī)網(wǎng)絡(luò)免受外部非法用戶的入侵。
1 包過(guò)濾防火墻
1.1 實(shí)現(xiàn)原理
防火墻一般分為數(shù)據(jù)包過(guò)濾型和代理服務(wù)器型??紤]到病毒及黑客軟件發(fā)出大量的網(wǎng)絡(luò)數(shù)據(jù)包造成網(wǎng)絡(luò)主干部分堵塞等因素,一般多可采用包過(guò)濾防火墻技術(shù),制定相應(yīng)的數(shù)據(jù)包過(guò)濾規(guī)則,對(duì)各種類型的傳輸協(xié)議數(shù)據(jù)包做過(guò)濾。內(nèi)部的網(wǎng)絡(luò)需要以防火墻為網(wǎng)關(guān),所有內(nèi)部網(wǎng)絡(luò)所發(fā)出的數(shù)據(jù)包都會(huì)經(jīng)過(guò)此防火墻,所有的數(shù)據(jù)包都需要套用包過(guò)濾規(guī)則。通過(guò)分析和查看數(shù)據(jù)包的包頭信息,完成丟棄(阻攔)或接受(放行)數(shù)據(jù)包的目的。而外部數(shù)據(jù)包要進(jìn)入內(nèi)部網(wǎng)絡(luò)也需要經(jīng)防火墻做包過(guò)濾。
1.2 操作流程
數(shù)據(jù)包過(guò)濾是通過(guò)對(duì)數(shù)據(jù)包的IP頭和TCP或UDP頭的檢查來(lái)實(shí)現(xiàn),主要包括:IP源地址;IP目的地址;協(xié)議(TCP包、UDP包和ICMP包);TCP或UDP包的源端口;TCP或UDP包的目標(biāo)端口;ICMP消息類型;TCP包頭中的ACK位;數(shù)據(jù)包到達(dá)的端口;數(shù)據(jù)包出去的端口。
2 Netfilter/Iptables結(jié)構(gòu)及工作原理
2.1 總體結(jié)構(gòu)
Linux提供的防火墻軟件包內(nèi)置于Linux內(nèi)核中,是一種基于包過(guò)濾型的防火墻實(shí)現(xiàn)技術(shù)。其中心思想是根據(jù)網(wǎng)絡(luò)層IP包頭中的源地址、目的地址及包類型等信息來(lái)控制包的流向,更徹底的過(guò)濾則是檢查包中的源端口、目的端口以及連接狀態(tài)等信息。
Netfilter/Iptables 是與最新的 2.4.x 版本 Linux 內(nèi)核集成的 IP 信息包過(guò)濾系統(tǒng)。如果 Linux 系統(tǒng)連接到LAN和或因特網(wǎng)和代理服務(wù)器,則該系統(tǒng)有利于在 Linux 系統(tǒng)上更好地控制 IP 信息包過(guò)濾和防火墻配置。Netfilter是Linux核心中一個(gè)通用架構(gòu),用于擴(kuò)展各種服務(wù)的結(jié)構(gòu)化底層服務(wù)。它提供一系列的表(Tables),每個(gè)表由若干鏈(Chains)組成,而每條鏈中可以由一條或數(shù)條規(guī)則(Rule)組成。它可以和其它模塊(如Iptables模塊和Nat模塊)結(jié)合起來(lái)實(shí)現(xiàn)包過(guò)濾功能。Iptables是一個(gè)管理內(nèi)核包過(guò)濾的工具,可以插入或刪除核心包過(guò)濾表格中的規(guī)則。實(shí)際上真正來(lái)執(zhí)行這些過(guò)濾規(guī)則的是Netfilter 。
2.2 數(shù)據(jù)包過(guò)濾過(guò)程
Netfilter/Iptables IP 信息包過(guò)濾系統(tǒng)是一種功能強(qiáng)大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過(guò)濾決定時(shí)防火墻所遵循和組成的規(guī)則。規(guī)則存儲(chǔ)在專用的信息包過(guò)濾表中,而這些表集成在 Linux 內(nèi)核中。在信息包過(guò)濾表中,規(guī)則被分組放在所謂的鏈中。
雖然Netfilter/Iptables IP 信息包過(guò)濾系統(tǒng)被稱為單個(gè)實(shí)體,但它實(shí)際上由兩個(gè)組件 Netfilter 和 Iptables 組成。Netfilter 組件也稱為內(nèi)核空間,是內(nèi)核的一部分,由一些信息包過(guò)濾表組成,這些表包含內(nèi)核用來(lái)控制信息包過(guò)濾處理的規(guī)則集。Iptables 組件是一種工具,也稱為用戶空間,它使插入、修改和除去信息包過(guò)濾表中的規(guī)則變得更容易。
3 Netfilter/Iptables防火墻的應(yīng)用
對(duì)于連接到網(wǎng)絡(luò)上的 Linux 系統(tǒng)來(lái)說(shuō),防火墻是必不可少的防御機(jī)制,它只允許合法的網(wǎng)絡(luò)流量進(jìn)出系統(tǒng),而禁止其它任何網(wǎng)絡(luò)流量。為了確定網(wǎng)絡(luò)流量是否合法,防火墻依靠它所包含的由網(wǎng)絡(luò)或系統(tǒng)管理員預(yù)定義的一組規(guī)則,這些規(guī)則告訴防火墻某個(gè)流量是否合法以及對(duì)于來(lái)自某個(gè)源、至某個(gè)目的地或具有某種協(xié)議類型的網(wǎng)絡(luò)流量要做些什么。
下面是在Linux平臺(tái)下,使用Netfilter/Iptables建立的一些典型包過(guò)濾防火墻的應(yīng)用。
(1)內(nèi)容過(guò)濾,對(duì)數(shù)據(jù)包中含有“騰訊”、“色情”、“廣告”等字段內(nèi)容的所有網(wǎng)站進(jìn)行屏蔽。
iptables -I FORWARD -m string --string "騰訊" -j DROP
iptables -I FORWARD -s 192.168.1.1 -m string --string "qq.com" -j DROP
iptables -I FORWARD -d 192.168.1.0/24 -m string --string "寬頻影院" -j DROP
iptables -I FORWARD -s 192.168.1.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "廣告" -j DROP
(2)并發(fā)連接,只允許每個(gè)IP同時(shí)使用5個(gè)80端口轉(zhuǎn)發(fā),超過(guò)的丟棄。主要可以限制內(nèi)網(wǎng)用戶的網(wǎng)絡(luò)使用,對(duì)服務(wù)器而言則可以限制每個(gè)IP發(fā)起的連接數(shù)。
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
(3)IP范圍限制,允許地址范圍為192.168.1.1- 192.168.1.200的數(shù)據(jù)包通過(guò)。
iptables -A FORWARD -m iprange --src-range 192.168.1.1-192.168.1.200 -j ACCEPT
(4)封殺BT類的P2P軟件,限制網(wǎng)絡(luò)用戶使用BT軟件占用大量網(wǎng)絡(luò)帶寬下載網(wǎng)絡(luò)資源。
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
(5)速度匹配擴(kuò)展,指定單位時(shí)間內(nèi)允許通過(guò)的數(shù)據(jù)包數(shù)量,限制每小時(shí)通過(guò)100個(gè)數(shù)據(jù)包。
iptables –A INPUT –m limit –limit 100/hour
(6)WWW服務(wù),設(shè)置Etho允許目的為內(nèi)部網(wǎng)WWW服務(wù)的數(shù)據(jù)包。
iptables -A FORWARD -p tcp –d $WWW-SERVER –dport www –I etho –j ACCEPT
(7)ICMP包過(guò)濾,防止黑客使用ICMP進(jìn)行攻擊,對(duì)來(lái)自任何地方的ICMP包進(jìn)行限制,允許每秒通過(guò)一個(gè)包,觸發(fā)條件是10個(gè)包。
iptables -A FORWARD -p imcp -m limit –limit 1/s –limit-burst 10 –j ACCEPT
(8)防火墻策略,設(shè)置防火墻FORWARD鏈的策略為DROP
iptables –P FORWARD DROP
4 結(jié)束語(yǔ)
基于Netfilter/Iptables的Linux包過(guò)濾防火墻的應(yīng)用,通過(guò)制定有效的防火墻規(guī)則,不僅可以保護(hù)內(nèi)部網(wǎng)絡(luò)用戶的安全,確保用戶能夠正常使用內(nèi)部網(wǎng)絡(luò)和互聯(lián)網(wǎng)資源,同時(shí)也為核心網(wǎng)絡(luò)管理人員提供一個(gè)學(xué)習(xí)和提高的機(jī)會(huì)。
參考文獻(xiàn)
[1] Smar Training工作室,梁如軍等.Red Hat Linux 9網(wǎng)絡(luò)服務(wù)[M].北京:機(jī)械工業(yè)出社,2004.02.
[2] 趙海全,曾詳萍.基于Linux系統(tǒng)的校園網(wǎng)安全設(shè)計(jì)方案[J].電腦與信息技術(shù),2004.
[3] 潘瑜.基于Linux環(huán)境的網(wǎng)絡(luò)安全防火墻和入侵檢測(cè)系統(tǒng)的研究[J].江蘇技術(shù)師范學(xué)院學(xué)報(bào),2005.
[4] http://www.xxlinux.com/linux/article/network/security/20061025/5378.html.
作者簡(jiǎn)介:
韓嚴(yán)(1973-),男,實(shí)驗(yàn)師;研究方向:多媒體教學(xué)、網(wǎng)絡(luò)技術(shù)。