【閒聊】談防火牆及防火牆的滲透



贊助商連結


網路天行者
2005-02-26, 01:29 AM
文章出處:
http://hackbase.com/hacker/tutorial/2005022310121.html

防火牆介紹

防火牆是一種功能,它使得內部網路和外部網路或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,有興趣的朋友可以參考一下:_blank>http://www.winnerinfo.net/infoview.asp?Kind=145&ID=529 ,我在這媟Q再提起“通道技術”。

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

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

在http-tunnel的官方網站_blank>http://www.http-tunnel.com上有這麼一句話:“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產品。

多一份認識,少一些傷害,相信還有很多人對防火牆不是很了解,所以可以參考一下,不過記住防火牆不是萬能的, :corkysm:

贊助商連結


inutoneko
2005-02-26, 01:45 AM
謝謝您提供此文,不過轉載文章最好提供來源並徵求作者同意。
還是說這篇真的就是您寫的?如果是的話那當我在廢話吧 :D 。

這裡有一模一樣的文章(不確定是不是最原始出處)
http://www.xfocus.net/articles/200502/774.html

另外一提,這文章一堆"_blank">"交雜在裡面,閱讀起來很痛苦。

阿 土
2005-02-26, 10:42 AM
轉貼的文章最好在開頭註明原始來源 , 這樣是比較好的作法
另外最好是可以再加上您自己的想法 , 這樣才有轉貼的意義存在 , Thanks!

FYI
2006-05-15, 02:54 PM
GNU httptunnel (http://www.nocrew.org/software/httptunnel.html)
輕輕鬆鬆穿透防火牆 (http://www.vlan9.com/safe-tech/r321136118.html)
一種新的穿透防火牆的數據傳輸技術 (http://www.vlan9.com/safe-tech/c301136118.html)

補充:
你應該通過ISA防火牆來允許SSL嗎 (http://www.vlan9.com/safe-tech/o431136118.html)

ISA防火牆解決了隱藏SSL加密注入的問題
在常規的狀態過濾硬件防火牆不能識別SSL隧道的內容,因此不能阻止隱藏在SSL隧道中的應用協議時,ISA防火牆卻具有這種能力。ISA防火牆作為第三代的狀態過濾和應用層識別防火牆,比簡單的包過濾防火牆具有更高級別的應用層安全特性。ISA防火牆可以中斷SSL連接,對SSL連接的內容進行檢查,然後對SSL的會話重新進行加密,然後轉發這個連接到內部網絡中對應的SSL站點中
...
我們仍然受到出站SSL連接的威脅
儘管ISA防火牆具有那麼多的優點,也不是說ISA防火牆的管理員生活就是完美的。儘管ISA防火牆對進入的SSL連接提供了應用層過濾識別保護,但是我們仍然擔心從內部網絡中到Internet站點的SSL隧道連接。在這種情況中,ISA防火牆和常規狀態過濾硬件防火牆提供同等級別的保護
...
小弟不瞭解ISA防火牆, 有這麼強嗎?

acer1832a
2006-05-19, 11:09 PM
雖然排名第一,但,真的很難上手,連用中文版的也搞不懂
還是Look "n" Stop比較好用,可以自定規則,才不會像有的防火牆不用自定,一定要關掉才行

FYI
2006-05-25, 09:28 PM
如何利用SSH隧道穿越你的企業級防火牆 (http://www.vlan9.com/cio/s411136628.html)
Cisco及華為網絡技術 > 安全技術 > 網絡安全 (http://www.vlan9.com/netsafe/)