全面分析防火牆及防火牆的滲透(轉)

amyz發表於2007-08-13
全面分析防火牆及防火牆的滲透(轉)[@more@]

  (一)防火牆介紹 

  防火牆是一種功能,它使得內部網路和外部網路或Internet互相隔離,以此來保護內部網路或主機。簡單的防火牆可以由Router,3 Layer Switch的ACL(access control list)來充當,也可以用一臺主機,甚至是一個子網來實現。複雜的可以購買專門的硬體防火牆或軟體防火牆來實現。 

  防火牆的功能有: 

  1、過濾掉不安全服務和非法使用者 

  2、控制對特殊站點的訪問 

  3、提供監視Internet安全和預警的方便端點 

  防火牆並不是萬能的,也有很多防火牆無能為力的地方: 

  1、防火牆防不住繞過防火牆的攻擊。比如,防火牆不限制從內部網路到外部網路的連線,那麼,一些內部使用者可能形成一個直接通往Internet的連線,從而繞過防火牆,造成一個潛在的backdoor.惡意的外部使用者直接連線到內部使用者的機器上,以這個內部使用者的機器為跳板,發起繞過防火牆的不受限制的攻擊。 

  2、防火牆不是防毒牆,不能攔截帶病毒的資料在網路之間傳播。 

  3、防火牆對資料驅動式攻擊也無能為力。 

  因此,我們不能過分依賴防火牆。網路的安全是一個整體,並不是有某一樣特別出色的配置。網路安全遵循的是“木桶原則”。 

  一般防火牆具備以下特點: 

  1、廣泛的服務支援:透過將動態的、應用層的過濾能力和認證相結合,可實現WWW瀏覽器、HTTP伺服器、 FTP等; 

  2、對私有資料的加密支援:保證透過Internet進行虛擬私人網路和商務活動不受損壞; 

  3、客戶端認證只允許指定的使用者訪問內部網路或選擇服務:企業本地網與分支機構、商業夥伴和移動使用者間安全通訊的附加部分; 

  4、反欺騙:欺騙是從外部獲取網路訪問權的常用手段,它使資料包好似來自網路內部。防火牆能監視這樣的資料包並能扔掉它們; 

  5、C/S模式和跨平臺支援:能使執行在一平臺的管理模組控制執行在另一平臺的監視模組。 

  讓我們來看看傳統的防火牆工作原理及優缺點: 

  1.(傳統的)包過濾防火牆的工作原理 

  包過濾是在IP層實現的,因此,它可以只用路由器完成。包過濾根據包的源IP地址、目的IP地址、源埠、目的埠及包傳遞方向等報頭資訊來判斷是否允許包透過。過濾使用者定義的內容,如IP地址。其工作原理是系統在網路層檢查資料包,與應用層無關,包過濾器的應用非常廣泛,因為CPU用來處理包過濾的時間可以忽略不計。而且這種防護措施對使用者透明,合法使用者在進出網路時,根本感覺不到它的存在,使用起來很方便。這樣系統就具有很好的傳輸效能,易擴充套件。但是這種防火牆不太安全,因為系統對應用層資訊無感知——也就是說,它們不理解通訊的內容,不能在使用者級別上進行過濾,即不能識別不同的使用者和防止IP地址的盜用。如果攻擊者把自己主機的IP地址設成一個合法主機的IP地址,就可以很輕易地透過包過濾器,這樣更容易被駭客攻破。 基於這種工作機制,包過濾防火牆有以下缺陷: 

  通訊資訊:包過濾防火牆只能訪問部分資料包的頭資訊; 

  通訊和應用狀態資訊:包過濾防火牆是無狀態的,所以它不可能儲存來自於通訊和應用的狀態資訊; 

  資訊處理:包過濾防火牆處理資訊的能力是有限的。 

  比如針對微軟IIS漏洞的Unicode攻擊,因為這種攻擊是走的防火牆所允許的80埠,而包過濾的防火牆無法對資料包內容進行核查,因此此時防火牆等同於虛設,未打相應patch的提供web服務的系統,即使在防火牆的屏障之後,也會被攻擊者輕鬆拿下超級使用者的許可權。 

  包過濾防火牆的缺點和不足,可以在應用層解決。下面我們來看看應用層閘道器。 

  2.應用閘道器 

  1、應用代理伺服器(Application Gateway Proxy) 

  在網路應用層提供授權檢查及代理服務。當外部某臺主機試圖訪問受保護網路時,必須先在防火牆上經過身份認證。透過身份認證後,防火牆執行一個專門為該網路設計的程式,把外部主機與內部主機連線。在這個過程中,防火牆可以限制使用者訪問的主機、訪問時間及訪問的方式。同樣,受保護網路內部使用者訪問外部網時也需先登入到防火牆上,透過驗證後,才可訪問。 

  應用閘道器代理的優點是既可以隱藏內部IP地址,也可以給單個使用者授權,即使攻擊者盜用了一個合法的IP地址,也通不過嚴格的身份認證。因此應用閘道器比報文過濾具有更高的安全性。但是這種認證使得應用閘道器不透明,使用者每次連線都要受到認證,這給使用者帶來許多不便。這種代理技術需要為每個應用寫專門的程式。 

  2、迴路級代理伺服器 

  即通常意義的代理伺服器,它適用於多個協議,但不能解釋應用協議,需要透過其他方式來獲得資訊,所以,迴路級代理伺服器通常要求修改過的使用者程式。 

  套接字伺服器(Sockets Server)就是迴路級代理伺服器。套接字(Sockets)是一種網路應用層的國際標準。當受保護網路客戶機需要與外部網互動資訊時,在防火牆上的套伺服器檢查客戶的User ID、IP源地址和IP目的地址,經過確認後,套伺服器才與外部的伺服器建立連線。對使用者來說,受保護網與外部網的資訊交換是透明的,感覺不到防火牆的存在,那是因為網路使用者不需要登入到防火牆上。但是客戶端的應用軟體必須支援 “Socketsified API”,受保護網路使用者訪問公共網所使用的IP地址也都是防火牆的IP地址。 

  3、代管伺服器 

  代管伺服器技術是把不安全的服務如FTP、Telnet等放到防火牆上,使它同時充當伺服器,對外部的請求作出回答。與應用層代理實現相比,代管伺服器技術不必為每種服務專門寫程式。而且,受保護網內部使用者想對外部網訪問時,也需先登入到防火牆上,再向外提出請求,這樣從外部網向內就只能看到防火牆,從而隱藏了內部地址,提高了安全性。 

  4、IP通道(IP Tunnels) 

  如果一個大公司的兩個子公司相隔較遠,透過Internet通訊。這種情況下,可以採用IP Tunnels來防止Internet上的駭客擷取資訊,從而在Internet上形成一個虛擬的企業網。 

  5、網路地址轉換器(NAT Network Address Translate) 

  當受保護網連到Internet上時,受保護網使用者若要訪問Internet,必須使用一個合法的IP地址。但由於合法Internet IP地址有限,而且受保護網路往往有自己的一套IP地址規劃(非正式IP地址)。網路地址轉換器就是在防火牆上裝一個合法IP地址集。當內部某一使用者要訪問Internet時,防火牆動態地從地址集中選一個未分配的地址分配給該使用者,該使用者即可使用這個合法地址進行通訊。同時,對於內部的某些伺服器如Web伺服器,網路地址轉換器允許為其分配一個固定的合法地址。外部網路的使用者就可透過防火牆來訪問內部的伺服器。這種技術既緩解了少量的IP地址和大量的主機之間的矛盾,又對外隱藏了內部主機的IP地址,提高了安全性。 

  6、隔離域名伺服器(Split Domain Name Server ) 

  這種技術是透過防火牆將受保護網路的域名伺服器與外部網的域名伺服器隔離,使外部網的域名伺服器只能看到防火牆的IP地址,無法瞭解受保護網路的具體情況,這樣可以保證受保護網路的IP地址不被外部網路知悉。 

  7、郵件技術(Mail Forwarding) 

  當防火牆採用上面所提到的幾種技術使得外部網路只知道防火牆的IP地址和域名時,從外部網路發來的郵件,就只能送到防火牆上。這時防火牆對郵件進行檢查,只有當傳送郵件的源主機是被允許透過的,防火牆才對郵件的目的地址進行轉換,送到內部的郵件伺服器,由其進行轉發。 

  應用閘道器是檢查所有應用層的資訊包,並將檢查的內容資訊放入決策過程,這樣安全性有所提高。然而,它們是透過打破客戶機/伺服器模式實現的,每一個客戶機/伺服器通訊需要兩個連線:一個是從客戶端到防火牆,另一個是從防火牆到伺服器。另外,每一個代理需要一個不同的應用程式,或一個後臺執行的服務程式,這樣如果有一個新的應用就必須新增對此應用的服務程式,否則不能使用該種服務,可伸縮性差。 基於這種工作機制,應用閘道器防火牆有以下缺陷: 

  連線限制:每一個服務需要自己的代理,所以可提供的服務數和伸縮性受到限制; 

  技術限制:應用閘道器不能為UDP、RPC及普通協議族的其他服務提供代理; 

  效能:實現應用閘道器防火牆犧牲了一些系統效能。

  防火牆的體系結構及組合形式 

  1、遮蔽路由器(Screening Router) 

  這是防火牆最基本的構件。它可以由廠家專門生產的路由器實現,也可以用主機來實現。遮蔽路由器作為內外連線的唯一通道,要求所有的報文都必須在此透過檢查。路由器上可以裝基於IP層的報文過濾軟體,實現報文過濾功能。許多路由器本身帶有報文過濾配置選項,但一般比較簡單。 

  單純由遮蔽路由器構成的防火牆的危險帶包括路由器本身及路由器允許訪問的主機。它的缺點是一旦被攻陷後很難發現,而且不能識別不同的使用者。 

  2、雙宿主機閘道器(Dual Homed Gateway) 

  任何擁有多個介面卡的系統都被稱為多宿的,雙宿主機閘道器是用一臺裝有兩塊網路卡的主機做防火牆。兩塊網路卡各自與受保護網和外部網相連。主機上執行著防火牆軟體,可以轉發應用程式,提供服務等。 

  雙宿主機閘道器優於遮蔽路由器的地方是:堡壘主機的系統軟體可用於維護系統日誌、硬體複製日誌或遠端日誌。這對於日後的檢查很有用。但這不能幫助網路管理者確認內網中哪些主機可能已被駭客入侵。 

  雙宿主機閘道器的一個致命弱點是:一旦入侵者侵入堡壘主機並使其只具有路由功能,則任何網上使用者均可以隨便訪問內網。 

  3、被遮蔽主機閘道器(Screened Host Gateway) 

  遮蔽主機閘道器易於實現也很安全,因此應用廣泛。例如,一個分組過濾路由器連線外部網路,同時一個堡壘主機安裝在內部網路上,通常在路由器上設立過濾規則,並使這個堡壘主機成為從外部網路唯一可直接到達的主機,這確保了內部網路不受未被授權的外部使用者的攻擊。 

  如果受保護網是一個虛擬擴充套件的本地網,即沒有子網和路由器,那麼內網的變化不影響堡壘主機和遮蔽路由器的配置。危險帶限制在堡壘主機和遮蔽路由器。閘道器的基本控制策略由安裝在上面的軟體決定。如果攻擊者設法登入到它上面,內網中的其餘主機就會受到很大威脅。這與雙穴主機閘道器受攻擊時的情形差不多。 

  4、被遮蔽子網 (Screened Subnet) 

  這種方法是在內部網路和外部網路之間建立一個被隔離的子網,用兩臺分組過濾路由器將這一子網分別與內部網路和外部網路分開。在很多實現中,兩個分組過濾路由器放在子網的兩端,在子網內構成一個“非軍事區”DMZ。有的遮蔽子網中還設有一堡壘主機作為唯一可訪問點,支援終端互動或作為應用閘道器代理。這種配置的危險帶僅包括堡壘主機、子網主機及所有連線內網、外網和遮蔽子網的路由器。 

  如果攻擊者試圖完全破壞防火牆,他必須重新配置連線三個網的路由器,既不切斷連線又不要把自己鎖在外面,同時又不使自己被發現,這樣也還是可能的。但若禁止網路訪問路由器或只允許內網中的某些主機訪問它,則攻擊會變得很困難。在這種情況下,攻擊者得先侵入堡壘主機,然後進入內網主機,再返回來破壞遮蔽路由器,整個過程中不能引發警報。 

  建造防火牆時,一般很少採用單一的技術,通常是多種解決不同問題的技術的組合。這種組合主要取決於網管中心向使用者提供什麼樣的服務,以及網管中心能接受什麼等級風險。採用哪種技術主要取決於經費,投資的大小或技術人員的技術、時間等因素。一般有以下幾種形式: 

  1、使用多堡壘主機; 

  2、合併內部路由器與外部路由器; 

  3、合併堡壘主機與外部路由器; 

  4、合併堡壘主機與內部路由器; 

  5、使用多臺內部路由器; 

  6、使用多臺外部路由器;   

  7、使用多個周邊網路;   

  8、使用雙重宿主主機與遮蔽子網。 

  隨著人們對網路安全意識的提高,防火牆的應用越來越廣泛。有錢的用高階硬體防火牆,沒錢的用免費的軟體防火牆。那麼,硬體防火牆和軟體防火牆相比,有哪些優點呢? 

  硬體防火牆採用專用的硬體裝置,然後整合生產廠商的專用防火牆軟體。從功能上看,硬體防火牆內建安全軟體,使用專屬或強化的作業系統,管理方便,更換容易,軟硬體搭配較固定。硬體防火牆效率高,解決了防火牆效率、效能之間的矛盾,可以達到線性。 

  軟體防火牆一般基於某個作業系統平臺開發,直接在計算機上進行軟體的安裝和配置。由於客戶平臺的多樣性,軟體防火牆需支援多作業系統,如Unix、Linux、SCO-Unix、Windows等,程式碼龐大、安裝成本高、售後支援成本高、效率低。 

  1、效能優勢。防火牆的效能對防火牆來說是至關重要的。它決定了每秒鐘透過防火牆的資料流量。單位是Bps,從幾十M到幾百M不等,還有千兆防火牆甚至達到幾G的防火牆。而軟體防火牆則不可能達到如此高的速率。 

  2、CPU佔用率的優勢。硬體防火牆的CPU佔用率當然是0了,而軟體防火牆就不同了,如果處於節約成本的考慮將防火牆軟體安裝在提供服務的主機上,當資料流量較大時,CPU佔用率將是主機的殺手,將拖跨主機。

  3、售後支援。硬體防火牆廠家會對防火牆產品有跟蹤的服務支援,而軟體防火牆的使用者能得到這種機會的相對較少,而且廠家也不會在軟體防火牆上下太大的功夫和研發經費。 

  (二)防火牆滲透 

  以上我們簡單的介紹了防火牆的原理,分類,優缺點等。下面,我們將對防火牆的滲透技術做一下簡單的介紹。 

  精心配置過的防火牆固然將讓絕大多數crackers擋在外圍,掌握網路控制的主動權,但是,防火牆並不是萬能的,我們也在上一節的內容中簡單的講了防火牆的缺點。沒有任何一樣網路產品可以說是絕對安全的。綠盟的san的一篇的文章介紹了滲透防火牆的shellcode,有興趣的朋友可以參考一下: ,我在這裡想再提起“通道技術”。 

  說到通道技術,我想再提一下“埠複用”,很多朋友以為通道技術就是埠複用技術。那麼,錯了,埠複用是指一個埠上建立了多個連線,而不是在一個埠上面開放了多個服務而互不干擾。假如你想在已經開放了WWW服務的主機上,在80埠再新增一項服務,只有2種可能:1.新增服務失敗 2.WWW服務出錯。那麼什麼是通道呢?這裡所謂的通道,是指一種繞過防火牆埠遮蔽的通訊方式。防火牆兩端的資料包封裝在防火牆所允許透過的資料包型別或是埠上,然後穿過防火牆與處在防火牆後面的主機通訊,當封裝的資料包到達目的地時,再將資料包還原,並將還原後的資料包交送到相應的服務上,是在一個埠上面開放了多個服務而互不干擾的。 

  為了通訊,不論是什麼防火牆,都不可能把所有的服務,所有的埠都封閉。(如果有那樣的防火牆,還不如拔網線來的直接,呵呵)大多數的防火牆或多或少都要開放一個埠或服務(比如HTTP),只要開放了埠和服務,就給了我們滲透的可能。HTTP是一種比較簡單而常用的互交式協議,你給伺服器傳送一個請求,伺服器就返回給你一個回應。幾乎所有的主機都被允許傳送HTTP請求。網路上HTTP協議使用的是如此廣泛,這也決定了我們可以透過使用通道技術而輕鬆的透過防火牆或其他類似裝置而將我們需要的資料傳送至目標。一個很典型的例子就是http-tunnel. 

  在http-tunnel的官方網站上有這麼一句話:“http-tunnel在HTTP請求中建立了一個雙向的虛擬資料連線。HTTP請求可以經過代理而被髮送,這就可以被那些處在限制了埠的防火牆背後的使用者使用。如果透過HTTP代理的WWW瀏覽是被允許的,那麼http-tunnel也就可以成立,也就是說,可以在防火牆外telnet或者PPP到防火牆的內部。”這樣看來,攻擊者可以使用這種技術來實現遠端控制。我們來看看http-tunnel的設計思路: 

  A主機在防火牆的外面,沒有做任何限制。B主機在防火牆內部,受到防火牆保護,防火牆配置的訪問控制原則是隻允許80埠的資料進出,但主機開放了telnet服務。現在假設需要從A系統Telnet到B系統上去,怎麼辦?使用正常的telnet肯定是不可能了,因為telnet使用的23埠被防火牆遮蔽,防火牆收到這個telnet的包後,發現不符合只允許80埠的資料透過的過濾原則,就丟棄了。但我們知道可用的有80埠,那麼這個時候使用Httptunnel通道,就是一個好的辦法,思路如下: 

  在A機器上執行tunnel的客戶端,讓它偵聽本機的一個不被使用的任意指定埠(最好是1024以上65535以下),如,8888。同時將來自8888埠上的資料指引到B機的80埠上,因為是80埠,防火牆是允許透過的。然後在B機上起一個服務端,(在只有80埠對外開放的情況下,只能先得到一個WEBSHELL,想辦法提升自己的許可權,並執行服務端)同樣掛接在80埠上,同時指引80埠的來自客戶端的轉發到本機的telnet服務埠23,這樣就OK了。現在在A機上telnet本機埠8888,根據剛才的設定資料包會被轉發到目標埠為80的B機,因為防火牆允許透過80埠的資料,因此資料包暢通的穿過防火牆,到達B機。此時B機在80埠偵聽的程式收到來自A的資料包,會將資料包還原,再交還給telnet程式。當資料包需要由B到A返回時,將由80埠再回送,同樣可以順利的透過防火牆。 

  上述功能似乎用埠對映也能做的到,把A主機上的23埠重定向到80埠,再把B主機上的80埠重定向到23埠就行了。但如果B主機已經開啟了WWW服務了呢?要使用上述功能,使用埠對映必須犧牲B主機的80埠,這是得不償失的。試想在一次滲透防火牆的對某臺主機的攻擊中,把別人本來已經開啟的WWW服務DOWN了,你還能在這臺主機上呆多久?但是,使用http-tunnel就可以完美實現,即使B主機已經開放80,提供WWW,我們也照樣可以傳送telnet到其80埠上,享受到“正版”的telnet服務。 

  對於通道技術,我們的解決方案是採用應用層的資料包檢測技術,因為在正常的HTTP請求中,GET、POST等行為是必不可少的,如果來自一個連線的HTTP請求中,總是沒有GET、POST,那麼這個連線肯定有問題。從而終止此連線。現在已經有公司的IDS產品能夠查出隱藏在80中的tunnel,但是這些IDS產品的費用恐怕也不是中小型企業能承受的了的。 

  對於防火牆的滲透,還有一些方法,比如找防火牆本身的設計缺陷等等,但那些難度太大。恐怕不是我們應該考慮的了。 

  總結: 

  我們又把防火牆和防火牆的滲透深入淺出的複習了一遍。現在我們應該更清楚的知道,防火牆不是萬能的,即使是經過精心配置的防火牆也抵擋不住隱藏在看似正常資料下的通道程式。那麼,對於一個網路來說,我們應該怎麼做才能夠保證它的最大安全呢? 

  1.根據需要合適的配置防火牆,儘量少開埠。 

  2.採用過濾嚴格的WEB程式。 

  3.採用加密的HTTP協議(HTTPS)。 

  4.如果條件允許,購買一臺功能較強大的NIDS。 

  5.管理好你的內網使用者,防止攻擊者和內網使用者直接連線繞過防火牆。 

  6.經常升級你的firewall產品

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955467/,如需轉載,請註明出處,否則將追究法律責任。

相關文章