为您详细解析防火墙的工作原理
http://www.cnw.com.cn/cnw07/security/FireWall/htm2007/20071030_27310.shtml
“黑客會(huì)打上我的主意嗎?”這么想就對(duì)了,黑客就想鉆雞蛋縫的蒼蠅一樣,看到一絲從系統(tǒng)漏洞發(fā)出的光亮就會(huì)蠢蠢欲動(dòng)!好,如何保護(hù)你的網(wǎng)絡(luò)呢?計(jì)算機(jī)的高手們也許一張嘴就提議你安裝網(wǎng)絡(luò)的防火墻,那么第一個(gè)問(wèn)題就來(lái)了:到底什么是防火墻呢?
什么是防火墻?
防火墻就是一種過(guò)濾塞(目前你這么理解不算錯(cuò)),你可以讓你喜歡的東西通過(guò)這個(gè)塞子,別的玩意都統(tǒng)統(tǒng)過(guò)濾掉。在網(wǎng)絡(luò)的世界里,要由防火墻過(guò)濾的就是承載通信數(shù)據(jù)的通信包。
天下的防火墻至少都會(huì)說(shuō)兩個(gè)詞:Yes或者No。直接說(shuō)就是接受或者拒絕。最簡(jiǎn)單的防火墻是以太網(wǎng)橋。但幾乎沒(méi)有人會(huì)認(rèn)為這種原始防火墻能管多大用。大多數(shù)防火墻采用的技術(shù)和標(biāo)準(zhǔn)可謂五花八門。這些防火墻的形式多種多樣:有的取代系統(tǒng)上已經(jīng)裝備的TCP/IP協(xié)議棧;
有的在已有的協(xié)議棧上建立自己的軟件模塊;有的干脆就是獨(dú)立的一套操作系統(tǒng)。還有一些應(yīng)用型的防火墻只對(duì)特定類型的網(wǎng)絡(luò)連接提供保護(hù)(比如SMTP或者HTTP協(xié)議等)。還有一些基于硬件的防火墻產(chǎn)品其實(shí)應(yīng)該歸入安全路由器一類。以上的產(chǎn)品都可以叫做防火墻,因?yàn)樗麄兊墓ぷ鞣绞蕉际且粯拥?#xff1a;分析出入防火墻的數(shù)據(jù)包,決定放行還是把他們?nèi)拥揭贿叀?
所有的防火墻都具有IP地址過(guò)濾功能。這項(xiàng)任務(wù)要檢查IP包頭,根據(jù)其IP源地址和目標(biāo)地址作出放行/丟棄決定。看看下面這張圖,兩個(gè)網(wǎng)段之間隔了一個(gè)防火墻,防火墻的一端有臺(tái)UNIX計(jì)算機(jī),另一邊的網(wǎng)段則擺了臺(tái)PC客戶機(jī)。
?
?
當(dāng)PC客戶機(jī)向UNIX計(jì)算機(jī)發(fā)起telnet請(qǐng)求時(shí),PC的telnet客戶程序就產(chǎn)生一個(gè)TCP包并把它傳給本地的協(xié)議棧準(zhǔn)備發(fā)送。接下來(lái),協(xié)議棧將這個(gè)TCP包“塞”到一個(gè)IP包里,然后通過(guò)PC機(jī)的TCP/IP棧所定義的路徑將它發(fā)送給UNIX計(jì)算機(jī)。在這個(gè)例子里,這個(gè)IP包必須經(jīng)過(guò)橫在PC和UNIX計(jì)算機(jī)中的防火墻才能到達(dá)UNIX計(jì)算機(jī)。
現(xiàn)在我們“命令”(用專業(yè)術(shù)語(yǔ)來(lái)說(shuō)就是配制)防火墻把所有發(fā)給UNIX計(jì)算機(jī)的數(shù)據(jù)包都給拒了,完成這項(xiàng)工作以后,“心腸”比較好的防火墻還會(huì)通知客戶程序一聲呢!既然發(fā)向目標(biāo)的IP數(shù)據(jù)沒(méi)法轉(zhuǎn)發(fā),那么只有和UNIX計(jì)算機(jī)同在一個(gè)網(wǎng)段的用戶才能訪問(wèn)UNIX計(jì)算機(jī)了。
還有一種情況,你可以命令防火墻專給那臺(tái)可憐的PC機(jī)找茬,別人的數(shù)據(jù)包都讓過(guò)就它不行。這正是防火墻最基本的功能:根據(jù)IP地址做轉(zhuǎn)發(fā)判斷。但要上了大場(chǎng)面這種小伎倆就玩不轉(zhuǎn)了,由于黑客們可以采用IP地址欺騙技術(shù),偽裝成合法地址的計(jì)算機(jī)就可以穿越信任這個(gè)地址的防火墻了。不過(guò)根據(jù)地址的轉(zhuǎn)發(fā)決策機(jī)制還是最基本和必需的。另外要注意的一點(diǎn)是,不要用DNS主機(jī)名建立過(guò)濾表,對(duì)DNS的偽造比IP地址欺騙要容易多了。
服務(wù)器TCP/UDP 端口過(guò)濾
僅僅依靠地址進(jìn)行數(shù)據(jù)過(guò)濾在實(shí)際運(yùn)用中是不可行的,還有個(gè)原因就是目標(biāo)主機(jī)上往往運(yùn)行著多種通信服務(wù),比方說(shuō),我們不想讓用戶采用 telnet的方式連到系統(tǒng),但這絕不等于我們非得同時(shí)禁止他們使用SMTP/POP郵件服務(wù)器吧?所以說(shuō),在地址之外我們還要對(duì)服務(wù)器的TCP/ UDP端口進(jìn)行過(guò)濾。
?
比如,默認(rèn)的telnet服務(wù)連接端口號(hào)是23。假如我們不許PC客戶機(jī)建立對(duì)UNIX計(jì)算機(jī)(在這時(shí)我們當(dāng)它是服務(wù)器)的telnet連接,那么我們只需命令防火墻檢查發(fā)送目標(biāo)是UNIX服務(wù)器的數(shù)據(jù)包,把其中具有23目標(biāo)端口號(hào)的包過(guò)濾就行了。這樣,我們把IP地址和目標(biāo)服務(wù)器TCP/UDP端口結(jié)合起來(lái)不就可以作為過(guò)濾標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)相當(dāng)可靠的防火墻了嗎?不,沒(méi)這么簡(jiǎn)單。
?
?
客戶機(jī)也有TCP/UDP端口
TCP/IP是一種端對(duì)端協(xié)議,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都具有唯一的地址。網(wǎng)絡(luò)節(jié)點(diǎn)的應(yīng)用層也是這樣,處于應(yīng)用層的每個(gè)應(yīng)用程序和服務(wù)都具有自己的對(duì)應(yīng)“地址”,也就是端口號(hào)。地址和端口都具備了才能建立客戶機(jī)和服務(wù)器的各種應(yīng)用之間的有效通信聯(lián)系。比如,telnet服務(wù)器在端口23偵聽(tīng)入站連接。同時(shí)telnet客戶機(jī)也有一個(gè)端口號(hào),否則客戶機(jī)的IP棧怎么知道某個(gè)數(shù)據(jù)包是屬于哪個(gè)應(yīng)用程序的呢?
由于歷史的原因,幾乎所有的TCP/IP客戶程序都使用大于1023的隨機(jī)分配端口號(hào)。只有UNIX計(jì)算機(jī)上的root用戶才可以訪問(wèn)1024以下的端口,而這些端口還保留為服務(wù)器上的服務(wù)所用。所以,除非我們讓所有具有大于1023端口號(hào)的數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò),否則各種網(wǎng)絡(luò)連接都沒(méi)法正常工作。
這對(duì)防火墻而言可就麻煩了,如果阻塞入站的全部端口,那么所有的客戶機(jī)都沒(méi)法使用網(wǎng)絡(luò)資源。因?yàn)榉?wù)器發(fā)出響應(yīng)外部連接請(qǐng)求的入站(就是進(jìn)入防火墻的意思)數(shù)據(jù)包都沒(méi)法經(jīng)過(guò)防火墻的入站過(guò)濾。反過(guò)來(lái),打開(kāi)所有高于1023的端口就可行了嗎?也不盡然。由于很多服務(wù)使用的端口都大于1023,比如X client、基于RPC的NFS服務(wù)以及為數(shù)眾多的非UNIX IP產(chǎn)品等(NetWare/IP)就是這樣的。那么讓達(dá)到1023端口標(biāo)準(zhǔn)的數(shù)據(jù)包都進(jìn)入網(wǎng)絡(luò)的話網(wǎng)絡(luò)還能說(shuō)是安全的嗎?連這些客戶程序都不敢說(shuō)自己是足夠安全的。
?
雙向過(guò)濾
OK,咱們換個(gè)思路。我們給防火墻這樣下命令:已知服務(wù)的數(shù)據(jù)包可以進(jìn)來(lái),其他的全部擋在防火墻之外。比如,如果你知道用戶要訪問(wèn)Web服務(wù)器,那就只讓具有源端口號(hào)80的數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò):
?
不過(guò)新問(wèn)題又出現(xiàn)了。首先,你怎么知道你要訪問(wèn)的服務(wù)器具有哪些正在運(yùn)行的端口號(hào)呢? 象HTTP這樣的服務(wù)器本來(lái)就是可以任意配置的,所采用的端口也可以隨意配置。如果你這樣設(shè)置防火墻,你就沒(méi)法訪問(wèn)哪些沒(méi)采用標(biāo)準(zhǔn)端口號(hào)的的網(wǎng)絡(luò)站點(diǎn)了!反過(guò)來(lái),你也沒(méi)法保證進(jìn)入網(wǎng)絡(luò)的數(shù)據(jù)包中具有端口號(hào)80的就一定來(lái)自Web服務(wù)器。有些黑客就是利用這一點(diǎn)制作自己的入侵工具,并讓其運(yùn)行在本機(jī)的80端口!
?
檢查ACK位
源地址我們不相信,源端口也信不得了,這個(gè)不得不與黑客共舞的瘋狂世界上還有什么值得我們信任呢?還好,事情還沒(méi)到走投無(wú)路的地步。對(duì)策還是有的,不過(guò)這個(gè)辦法只能用于TCP協(xié)議。
TCP是一種可靠的通信協(xié)議,“可靠”這個(gè)詞意味著協(xié)議具有包括糾錯(cuò)機(jī)制在內(nèi)的一些特殊性質(zhì)。為了實(shí)現(xiàn)其可靠性,每個(gè)TCP連接都要先經(jīng)過(guò)一個(gè)“握手”過(guò)程來(lái)交換連接參數(shù)。還有,每個(gè)發(fā)送出去的包在后續(xù)的其他包被發(fā)送出去之前必須獲得一個(gè)確認(rèn)響應(yīng)。但并不是對(duì)每個(gè)TCP包都非要采用專門的ACK包來(lái)響應(yīng),實(shí)際上僅僅在TCP包頭上設(shè)置一個(gè)專門的位就可以完成這個(gè)功能了。所以,只要產(chǎn)生了響應(yīng)包就要設(shè)置ACK位。連接會(huì)話的第一個(gè)包不用于確認(rèn),所以它就沒(méi)有設(shè)置ACK位,后續(xù)會(huì)話交換的TCP包就要設(shè)置ACK位了。
?
舉個(gè)例子,PC向遠(yuǎn)端的Web服務(wù)器發(fā)起一個(gè)連接,它生成一個(gè)沒(méi)有設(shè)置ACK位的連接請(qǐng)求包。當(dāng)服務(wù)器響應(yīng)該請(qǐng)求時(shí),服務(wù)器就發(fā)回一個(gè)設(shè)置了ACK位的數(shù)據(jù)包,同時(shí)在包里標(biāo)記從客戶機(jī)所收到的字節(jié)數(shù)。然后客戶機(jī)就用自己的響應(yīng)包再響應(yīng)該數(shù)據(jù)包,這個(gè)數(shù)據(jù)包也設(shè)置了ACK位并標(biāo)記了從服務(wù)器收到的字節(jié)數(shù)。通過(guò)監(jiān)視ACK位,我們就可以將進(jìn)入網(wǎng)絡(luò)的數(shù)據(jù)限制在響應(yīng)包的范圍之內(nèi)。于是,遠(yuǎn)程系統(tǒng)根本無(wú)法發(fā)起TCP連接但卻能響應(yīng)收到的數(shù)據(jù)包了。
?
這套機(jī)制還不能算是無(wú)懈可擊,簡(jiǎn)單地舉個(gè)例子,假設(shè)我們有臺(tái)內(nèi)部Web服務(wù)器,那么端口80就不得不被打開(kāi)以便外部請(qǐng)求可以進(jìn)入網(wǎng)絡(luò)。還有,對(duì)UDP包而言就沒(méi)法監(jiān)視ACK位了,因?yàn)閁DP包壓根就沒(méi)有ACK位。還有一些TCP應(yīng)用程序,比如FTP,連接就必須由這些服務(wù)器程序自己發(fā)起。
FTP帶來(lái)的困難
一般的Internet服務(wù)對(duì)所有的通信都只使用一對(duì)端口號(hào),FTP程序在連接期間則使用兩對(duì)端口號(hào)。第一對(duì)端口號(hào)用于FTP的“命令通道”提供登錄和執(zhí)行命令的通信鏈路,而另一對(duì)端口號(hào)則用于FTP的“數(shù)據(jù)通道”提供客戶機(jī)和服務(wù)器之間的文件傳送。
在通常的FTP會(huì)話過(guò)程中,客戶機(jī)首先向服務(wù)器的端口21(命令通道)發(fā)送一個(gè)TCP連接請(qǐng)求,然后執(zhí)行LOGIN、DIR等各種命令。一旦用戶請(qǐng)求服務(wù)器發(fā)送數(shù)據(jù),FTP服務(wù)器就用其20端口(數(shù)據(jù)通道)向客戶的數(shù)據(jù)端口發(fā)起連接。問(wèn)題來(lái)了,如果服務(wù)器向客戶機(jī)發(fā)起傳送數(shù)據(jù)的連接,那么它就會(huì)發(fā)送沒(méi)有設(shè)置ACK位的數(shù)據(jù)包,防火墻則按照剛才的規(guī)則拒絕該數(shù)據(jù)包同時(shí)也就意味著數(shù)據(jù)傳送沒(méi)戲了。通常只有高級(jí)的、也就是夠聰明的防火墻才能看出客戶機(jī)剛才告訴服務(wù)器的端口,然后才許可對(duì)該端口的入站連接。
UDP端口過(guò)濾
好了,現(xiàn)在我們回過(guò)頭來(lái)看看怎么解決UDP問(wèn)題。剛才說(shuō)了,UDP包沒(méi)有ACK位所以不能進(jìn)行ACK位過(guò)濾。UDP 是發(fā)出去不管的“不可靠”通信,這種類型的服務(wù)通常用于廣播、路由、多媒體等廣播形式的通信任務(wù)。NFS、DNS、WINS、NetBIOS-over-TCP/IP和 NetWare/IP都使用UDP。
看來(lái)最簡(jiǎn)單的可行辦法就是不允許建立入站UDP連接。防火墻設(shè)置為只許轉(zhuǎn)發(fā)來(lái)自內(nèi)部接口的UDP包,來(lái)自外部接口的UDP包則不轉(zhuǎn)發(fā)。現(xiàn)在的問(wèn)題是,比方說(shuō),DNS名稱解析請(qǐng)求就使用UDP,如果你提供DNS服務(wù),至少得允許一些內(nèi)部請(qǐng)求穿越防火墻。還有IRC這樣的客戶程序也使用UDP,如果要讓你的用戶使用它,就同樣要讓他們的UDP包進(jìn)入網(wǎng)絡(luò)。我們能做的就是對(duì)那些從本地到可信任站點(diǎn)之間的連接進(jìn)行限制。但是,什么叫可信任!如果黑客采取地址欺騙的方法不又回到老路上去了嗎?
?
?
有些新型路由器可以通過(guò)“記憶”出站UDP包來(lái)解決這個(gè)問(wèn)題:如果入站UDP包匹配最近出站UDP包的目標(biāo)地址和端口號(hào)就讓它進(jìn)來(lái)。如果在內(nèi)存中找不到匹配的UDP包就只好拒絕它了!但是,我們?nèi)绾未_信產(chǎn)生數(shù)據(jù)包的外部主機(jī)就是內(nèi)部客戶機(jī)希望通信的服務(wù)器呢?如果黑客詐稱DNS服務(wù)器的地址,那么他在理論上當(dāng)然可以從附著DNS的UDP端口發(fā)起攻擊。只要你允許DNS查詢和反饋包進(jìn)入網(wǎng)絡(luò)這個(gè)問(wèn)題就必然存在。辦法是采用代理服務(wù)器。
所謂代理服務(wù)器,顧名思義就是代表你的網(wǎng)絡(luò)和外界打交道的服務(wù)器。代理服務(wù)器不允許存在任何網(wǎng)絡(luò)內(nèi)外的直接連接。它本身就提供公共和專用的DNS、郵件服務(wù)器等多種功能。代理服務(wù)器重寫數(shù)據(jù)包而不是簡(jiǎn)單地將其轉(zhuǎn)發(fā)了事。給人的感覺(jué)就是網(wǎng)絡(luò)內(nèi)部的主機(jī)都站在了網(wǎng)絡(luò)的邊緣,但實(shí)際上他們都躲在代理的后面,露面的不過(guò)是代理這個(gè)假面具。
小結(jié)
IP地址可能是假的,這是由于IP協(xié)議的源路有機(jī)制所帶來(lái)的,這種機(jī)制告訴路由器不要為數(shù)據(jù)包采用正常的路徑,而是按照包頭內(nèi)的路徑傳送數(shù)據(jù)包。于是黑客就可以使用系統(tǒng)的IP地址獲得返回的數(shù)據(jù)包。有些高級(jí)防火墻可以讓用戶禁止源路由。通常我們的網(wǎng)絡(luò)都通過(guò)一條路徑連接ISP,然后再進(jìn)入Internet。這時(shí)禁用源路由就會(huì)迫使數(shù)據(jù)包必須沿著正常的路徑返回。
還有,我們需要了解防火墻在拒絕數(shù)據(jù)包的時(shí)候還做了哪些其他工作。比如,防火墻是否向連接發(fā)起系統(tǒng)發(fā)回了“主機(jī)不可到達(dá)”的ICMP消息?或者防火墻真沒(méi)再做其他事?這些問(wèn)題都可能存在安全隱患。ICMP“主機(jī)不可達(dá)”消息會(huì)告訴黑客“防火墻專門阻塞了某些端口”,黑客立即就可以從這個(gè)消息中聞到一點(diǎn)什么氣味。如果ICMP“主機(jī)不可達(dá)”是通信中發(fā)生的錯(cuò)誤,那么老實(shí)的系統(tǒng)可能就真的什么也不發(fā)送了。反過(guò)來(lái),什么響應(yīng)都沒(méi)有卻會(huì)使發(fā)起通信的系統(tǒng)不斷地嘗試建立連接直到應(yīng)用程序或者協(xié)議棧超時(shí),結(jié)果最終用戶只能得到一個(gè)錯(cuò)誤信息。當(dāng)然這種方式會(huì)讓黑客無(wú)法判斷某端口到底是關(guān)閉了還是沒(méi)有使用。
本文轉(zhuǎn)載自企業(yè)級(jí)IT信息服務(wù)平臺(tái)-網(wǎng)界網(wǎng)-CNW.com.cn
原文地址:http://www.cnw.com.cn/cnw07/security/FireWall/htm2007/20071030_27310_8.shtml
?
==========================
http://www.likespc.cn/the-working-principle-of-a-firewall.html
一、防火墻基本原理?
首先,我們需要了解一些基本的防火墻實(shí)現(xiàn)原理。防火墻目前主要分包過(guò)濾,和狀態(tài)檢測(cè)的包過(guò)濾,應(yīng)用層代理防火
墻。但是他們的基本實(shí)現(xiàn)都是類似的。?
│ │—路由器—–網(wǎng)卡│防火墻│網(wǎng)卡│———-內(nèi)部網(wǎng)絡(luò)│ │?
防火墻一般有兩個(gè)以上的網(wǎng)絡(luò)卡,一個(gè)連到外部(router),另一個(gè)是連到內(nèi)部網(wǎng)絡(luò)。當(dāng)打開(kāi)主機(jī)網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能時(shí),兩個(gè)網(wǎng)卡間的網(wǎng)絡(luò)通訊能直接通過(guò)。當(dāng)有防火墻時(shí),他好比插在網(wǎng)卡之間,對(duì)所有的網(wǎng)絡(luò)通訊進(jìn)行控制。?
說(shuō)到訪問(wèn)控制,這是防火墻的核心了:),防火墻主要通過(guò)一個(gè)訪問(wèn)控制表來(lái)判斷的,他的形式一般是一連串的如下規(guī)則:?
1 accept from+ 源地址,端口 to+ 目的地址,端口+ 采取的動(dòng)作?
2 deny ………..(deny就是拒絕。。)?
3 nat …………(nat是地址轉(zhuǎn)換。后面說(shuō))?
防火墻在網(wǎng)絡(luò)層(包括以下的煉路層)接受到網(wǎng)絡(luò)數(shù)據(jù)包后,就從上面的規(guī)則連表一條一條地匹配,如果符合就執(zhí)行預(yù)先安排的動(dòng)作了!如丟棄包。。。。?
但是,不同的防火墻,在判斷攻擊行為時(shí),有實(shí)現(xiàn)上的差別。下面結(jié)合實(shí)現(xiàn)原理說(shuō)說(shuō)可能的攻擊。?
二、攻擊包過(guò)濾防火墻?
包過(guò)濾防火墻是最簡(jiǎn)單的一種了,它在網(wǎng)絡(luò)層截獲網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)防火墻的規(guī)則表,來(lái)檢測(cè)攻擊行為。他根據(jù)數(shù)據(jù)包的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的端口來(lái)過(guò)濾!!很容易受到如下攻擊:?
1 ip 欺騙攻擊:?
這種攻擊,主要是修改數(shù)據(jù)包的源,目的地址和端口,模仿一些合法的數(shù)據(jù)包來(lái)騙過(guò)防火墻的檢測(cè)。如:外部攻擊者,將他的數(shù)據(jù)報(bào)源地址改為內(nèi)部網(wǎng)絡(luò)地址,防火墻看到是合法地址就放行了:)。可是,如果防火墻能結(jié)合接口,地址來(lái)匹
配,這種攻擊就不能成功了:(?
2 d.o.s拒絕服務(wù)攻擊?
簡(jiǎn)單的包過(guò)濾防火墻不能跟蹤 tcp的狀態(tài),很容易受到拒絕服務(wù)攻擊,一旦防火墻受到d.o.s攻擊,他可能會(huì)忙于處理,而忘記了他自己的過(guò)濾功能。:)你就可以饒過(guò)了,不過(guò)這樣攻擊還很少的。!?
3 分片攻擊?
這種攻擊的原理是:在IP的分片包中,所有的分片包用一個(gè)分片偏移字段標(biāo)志分片包的順序,但是,只有第一個(gè)分片包含有TCP端口號(hào)的信息。當(dāng)IP分片包通過(guò)分組過(guò)濾防火墻時(shí),防火墻只根據(jù)第一個(gè)分片包的Tcp信息判斷是否允許通過(guò),而其他后續(xù)的分片不作防火墻檢測(cè),直接讓它們通過(guò)。?
這樣,攻擊者就可以通過(guò)先發(fā)送第一個(gè)合法的IP分片,騙過(guò)防火墻的檢測(cè),接著封裝了惡意數(shù)據(jù)的后續(xù)分片包就可以直接穿透防火墻,直接到達(dá)內(nèi)部網(wǎng)絡(luò)主機(jī),從而威脅網(wǎng)絡(luò)和主機(jī)的安全。?
4 木馬攻擊?
對(duì)于包過(guò)濾防火墻最有效的攻擊就是木馬了,一但你在內(nèi)部網(wǎng)絡(luò)安裝了木馬,防火墻基本上是無(wú)能為力的。?
原因是:包過(guò)濾防火墻一般只過(guò)濾低端口(1-1024),而高端口他不可能過(guò)濾的(因?yàn)?#xff0c;一些服務(wù)要用到高端口,因此防火墻不能關(guān)閉高端口的),所以很多的木馬都在高端口打開(kāi)等待,如冰河,subseven等。。。?
但是木馬攻擊的前提是必須先上傳,運(yùn)行木馬,對(duì)于簡(jiǎn)單的包過(guò)濾防火墻來(lái)說(shuō),是容易做的。這里不寫這個(gè)了。大概就是利用內(nèi)部網(wǎng)絡(luò)主機(jī)開(kāi)放的服務(wù)漏洞。?
早期的防火墻都是這種簡(jiǎn)單的包過(guò)濾型的,到現(xiàn)在已很少了,不過(guò)也有。現(xiàn)在的包過(guò)濾采用的是狀態(tài)檢測(cè)技術(shù),下面談?wù)劆顟B(tài)檢測(cè)的包過(guò)濾防火墻。
三、攻擊狀態(tài)檢測(cè)的包過(guò)濾?
狀態(tài)檢測(cè)技術(shù)最早是checkpoint提出的,在國(guó)內(nèi)的許多防火墻都聲稱實(shí)現(xiàn)了狀態(tài)檢測(cè)技術(shù)。?
可是:)很多是沒(méi)有實(shí)現(xiàn)的。到底什么是狀態(tài)檢測(cè)??
一句話,狀態(tài)檢測(cè)就是從tcp連接的建立到終止都跟蹤檢測(cè)的技術(shù)。?
原先的包過(guò)濾,是拿一個(gè)一個(gè)單獨(dú)的數(shù)據(jù)包來(lái)匹配規(guī)則的。可是我們知道,同一個(gè)tcp連接,他的數(shù)據(jù)包是前后關(guān)聯(lián)的,先是syn包,-》數(shù)據(jù)包=》fin包。數(shù)據(jù)包的前后序列號(hào)是相關(guān)的。?
如果割裂這些關(guān)系,單獨(dú)的過(guò)濾數(shù)據(jù)包,很容易被精心夠造的攻擊數(shù)據(jù)包欺騙!!!如nmap的攻擊掃描,就有利用syn包,fin包,reset包來(lái)探測(cè)防火墻后面的網(wǎng)絡(luò)。!?
相反,一個(gè)完全的狀態(tài)檢測(cè)防火墻,他在發(fā)起連接就判斷,如果符合規(guī)則,就在內(nèi)存登記了這個(gè)連接的狀態(tài)信息(地址,port,選項(xiàng)。。),后續(xù)的屬于同一個(gè)連接的數(shù)據(jù)包,就不需要在檢測(cè)了。直接通過(guò)。而一些精心夠造的攻擊數(shù)據(jù)包由于沒(méi)有在內(nèi)存登記相應(yīng)的狀態(tài)信息,都被丟棄了。這樣這些攻擊數(shù)據(jù)包,就不能饒過(guò)防火墻了。?
說(shuō)狀態(tài)檢測(cè)必須提到動(dòng)態(tài)規(guī)則技術(shù)。在狀態(tài)檢測(cè)里,采用動(dòng)態(tài)規(guī)則技術(shù),原先高端口的問(wèn)題就可以解決了。實(shí)現(xiàn)原理是:平時(shí),防火墻可以過(guò)濾內(nèi)部網(wǎng)絡(luò)的所有端口(1-65535),外部攻擊者難于發(fā)現(xiàn)入侵的切入點(diǎn),可是為了不影響正常的服務(wù),防火墻一但檢測(cè)到服務(wù)必須開(kāi)放高端口時(shí),如(ftp協(xié)議,irc等),防火墻在內(nèi)存就可以動(dòng)態(tài)地天加一條規(guī)則打開(kāi)相關(guān)的高端口。等服務(wù)完成后,這條規(guī)則就又被防火墻刪除。這樣,既保障了安全,又不影響正常服務(wù),速度也快。!?
一般來(lái)說(shuō),完全實(shí)現(xiàn)了狀態(tài)檢測(cè)技術(shù)防火墻,智能性都比較高,一些掃描攻擊還能自動(dòng)的反應(yīng),因此,攻擊者要很小
心才不會(huì)被發(fā)現(xiàn)。?
但是,也有不少的攻擊手段對(duì)付這種防火墻的。?
1 協(xié)議隧道攻擊?
協(xié)議隧道的攻擊思想類似與VPN的實(shí)現(xiàn)原理,攻擊者將一些惡意的攻擊數(shù)據(jù)包隱藏在一些協(xié)議分組的頭部,從而穿透防火墻系統(tǒng)對(duì)內(nèi)部網(wǎng)絡(luò)進(jìn)行攻擊。?
例如,許多簡(jiǎn)單地允許ICMP回射請(qǐng)求、ICMP回射應(yīng)答和UDP分組通過(guò)的防火墻就容易受到ICMP和UDP協(xié)議隧道的攻擊。
Loki和lokid(攻擊的客戶端和服務(wù)端)是實(shí)施這種攻擊的有效的工具。在實(shí)際攻擊中,攻擊者首先必須設(shè)法在內(nèi)部網(wǎng)絡(luò)的一個(gè)系統(tǒng)上安裝上lokid服務(wù)端,而后攻擊者就可以通過(guò)loki客戶端將希望遠(yuǎn)程執(zhí)行的攻擊命令(對(duì)應(yīng)IP分組)嵌入在ICMP或
UDP包頭部,再發(fā)送給內(nèi)部網(wǎng)絡(luò)服務(wù)端lokid,由它執(zhí)行其中的命令,并以同樣的方式返回結(jié)果。由于許多防火墻允許ICMP和UDP分組自由出入,因此攻擊者的惡意數(shù)據(jù)就能附帶在正常的分組,繞過(guò)防火墻的認(rèn)證,順利地到達(dá)攻擊目標(biāo)主機(jī)下面的命令是用于啟動(dòng)lokid服務(wù)器程序:?
lokid-p CI Cvl?
loki客戶程序則如下啟動(dòng):?
loki Cd172.29.11.191(攻擊目標(biāo)主機(jī))-p CI Cv1 Ct3?
這樣,lokid和loki就聯(lián)合提供了一個(gè)穿透防火墻系統(tǒng)訪問(wèn)目標(biāo)系統(tǒng)的一個(gè)后門。?
2 利用FTP-pasv繞過(guò)防火墻認(rèn)證的攻擊?
FTP-pasv攻擊是針對(duì)防火墻實(shí)施入侵的重要手段之一。目前很多防火墻不能過(guò)濾這種攻擊手段。如CheckPoint的Firewall-1,在監(jiān)視FTP服務(wù)器發(fā)送給客戶端的包的過(guò)程中,它在每個(gè)包中尋找”227″這個(gè)字符串。如果發(fā)現(xiàn)這種包,將從中提取目標(biāo)地址和端口,并對(duì)目標(biāo)地址加以驗(yàn)證,通過(guò)后,將允許建立到該地址的TCP連接。?
攻擊者通過(guò)這個(gè)特性,可以設(shè)
連接受防火墻保護(hù)的服務(wù)器和服務(wù)。
3 反彈木馬攻擊?
反彈木馬是對(duì)付這種防火墻的最有效的方法。攻擊者在內(nèi)部網(wǎng)絡(luò)的反彈木馬定時(shí)地連接外部攻擊者控制的主機(jī),由于連接是從內(nèi)部發(fā)起的,防火墻(任何的防火墻)都認(rèn)為是一個(gè)合法的連接,因此基本上防火墻的盲區(qū)就是這里了。防火墻不能區(qū)分木馬的連接和合法的連接。?
但是這種攻擊的局限是:必須首先安裝這個(gè)木馬!!!所有的木馬的第一步都是關(guān)鍵!
四、攻擊代理?
代理是運(yùn)行在應(yīng)用層的防火墻,他實(shí)質(zhì)是啟動(dòng)兩個(gè)連接,一個(gè)是客戶到代理,另一個(gè)是代理到目的服務(wù)器。?
實(shí)現(xiàn)上比較簡(jiǎn)單,和前面的一樣也是根據(jù)規(guī)則過(guò)濾。由于運(yùn)行在應(yīng)用層速度比較慢/1?
攻擊代理的方法很多。?
這里就以wingate為例,簡(jiǎn)單說(shuō)說(shuō)了。(太累了)?
WinGate是目前應(yīng)用非常廣泛的一種Windows95/NT代理防火墻軟件,內(nèi)部用戶可以通過(guò)一臺(tái)安裝有WinGate的主機(jī)訪問(wèn)外部網(wǎng)絡(luò),但是它也存在著幾個(gè)安全脆弱點(diǎn)。?
黑客經(jīng)常利用這些安全漏洞獲得WinGate的非授權(quán)Web、Socks和Telnet的訪問(wèn),從而偽裝成WinGate主機(jī)的身份對(duì)下一
個(gè)攻擊目標(biāo)發(fā)動(dòng)攻擊。因此,這種攻擊非常難于被跟蹤和記錄。?
導(dǎo)致WinGate安全漏洞的原因大多數(shù)是管理員沒(méi)有根據(jù)網(wǎng)絡(luò)的實(shí)際情況對(duì)WinGate代理防火墻軟件進(jìn)行合理的設(shè)置,只是簡(jiǎn)單地從缺省設(shè)置安裝完畢后就讓軟件運(yùn)行,這就給攻擊者可乘之機(jī)。?
1 非授權(quán)Web訪問(wèn)?
某些WinGate版本(如運(yùn)行在NT系統(tǒng)下的2.1d版本)在誤配置情況下,允許外部主機(jī)完全匿名地訪問(wèn)因特網(wǎng)。因此,外部攻擊者就可以利用WinGate主機(jī)來(lái)對(duì)Web服務(wù)器發(fā)動(dòng)各種Web攻擊( 如CGI的漏洞攻擊等),同時(shí)由于Web攻擊的所有報(bào)文都是
從80號(hào)Tcp端口穿過(guò)的,因此,很難追蹤到攻擊者的來(lái)源。?
檢測(cè)?
檢測(cè)WinGate主機(jī)是否有這種安全漏洞的方法如下:?
1) 以一個(gè)不會(huì)被過(guò)濾掉的連接(譬如說(shuō)撥號(hào)連接)連接到因特網(wǎng)上。?
2) 把瀏覽器的代理服務(wù)器地址指向待測(cè)試的WinGate主機(jī)。?
如果瀏覽器能訪問(wèn)到因特網(wǎng),則WinGate主機(jī)存在著非授權(quán)Web訪問(wèn)漏洞。?
2 非授權(quán)Socks訪問(wèn)?
在WinGate的缺省配置中,Socks代理(1080號(hào)Tcp端口)同樣是存在安全漏洞。與打開(kāi)的Web代理(80號(hào)Tcp端口)一樣,外部攻擊者可以利用Socks代理訪問(wèn)因特網(wǎng)。?
防范?
要防止攻擊WinGate的這個(gè)安全脆弱點(diǎn),管理員可以限制特定服務(wù)的捆綁。在多宿主(multi homed)系統(tǒng)上,執(zhí)行以下步驟以限定如何提供代理服務(wù)。?
1選擇Socks或WWWProxyServer屬性。?
2選擇Bindings標(biāo)簽。?
3按下ConnectionsWillBeAcceptedOnTheFollowingInte***ceOnly按鈕,并指定本W(wǎng)inGate服務(wù)器的內(nèi)部接口。?
非授權(quán)Telnet訪問(wèn)?
它是WinGate最具威脅的安全漏洞。通過(guò)連接到一個(gè)誤配置的inGate服務(wù)器的Telnet服務(wù),攻擊者可以使用別人的主機(jī)隱藏自己的蹤跡,隨意地發(fā)動(dòng)攻擊。?
檢測(cè)?
檢測(cè)WinGate主機(jī)是否有這種安全漏洞的方法如下:?
1.使用telnet嘗試連接到一臺(tái)WinGate服務(wù)器。?
[root@happy/tmp]#telnet172.29.11.191?
Trying172.29.11.191….?
Connectedto172.29.11.191.?
Escapecharacteris‘^]’.?
Wingate>10.50.21.5?
2.如果接受到如上的響應(yīng)文本,那就輸入待連接到的網(wǎng)站。?
3.如果看到了該新系統(tǒng)的登錄提示符,那么該服務(wù)器是脆弱的。?
Connectedtohost10.50.21.5…Connected?
SunOS5.6?
Login:?
對(duì)策?
防止這種安全脆弱點(diǎn)的方法和防止非授權(quán)Socks訪問(wèn)的方法類似。在WinGate中簡(jiǎn)單地限制特定服務(wù)的捆綁就可以解決這個(gè)問(wèn)題。一般來(lái)說(shuō),在多宿主(multihomed)系統(tǒng)管理員可以通過(guò)執(zhí)行以下步驟來(lái)完成:?
1.選擇TelnetSever屬性。?
2.選擇Bindings標(biāo)簽。?
3.按下ConnectionsWillBeAcceptedOnTheFollowingInte***ceOnly按鈕,并指定本W(wǎng)inGate服務(wù)器的內(nèi)部接口。
五、后話?
有防火墻的攻擊不單是上面的一點(diǎn),我有什么寫的不對(duì)的,大家指正。?
一直以來(lái),黑客都在研究攻擊防火墻的技術(shù)和手段,攻擊的手法和技術(shù)越來(lái)越智能化和多樣化。但是就黑客攻擊防火墻的過(guò)程上看,大概可以分為三類攻擊。?
第一類攻擊防火墻的方法是探測(cè)在目標(biāo)網(wǎng)絡(luò)上安裝的是何種防火墻系統(tǒng)并且找出此防火墻系統(tǒng)允許哪些服務(wù)。我們叫它為對(duì)防火墻的探測(cè)攻擊。?
第二類攻擊防火墻的方法是采取地址欺騙、TCP序號(hào)攻擊等手法繞過(guò)防火墻的認(rèn)證機(jī)制,從而 對(duì)防火墻和內(nèi)部網(wǎng)絡(luò)破壞。?
第三類攻擊防火墻的方法是尋找、利用防火墻系統(tǒng)實(shí)現(xiàn)和設(shè)計(jì)上的安全漏洞,從而有針對(duì)性地發(fā)動(dòng)攻擊。這種攻擊難度比較大,可是破壞性很大。
?
總結(jié)
以上是生活随笔為你收集整理的为您详细解析防火墙的工作原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通过 T3 协议使用 WebLogic
- 下一篇: 一个专业搜索公司关于lucene+sol