FreeBSD連載(75):防火牆技術

2000年1月16日 15:26 王波

防火牆技術

  將本地網路連接到Internet之後,Internet上的電腦就能自由訪問本地網路中的電腦了。顯然 ,由於本地網路屬於同一個組織,本地網路中的電腦相互之間都可以信任,而外部Internet上的電腦可能來自任 意地方,因此不可信任。如何給可信任的本地網路中的電腦提供資源,而不給其他Internet上的電腦提供訪問或 入侵的機會,同時又不妨礙本地網路中的電腦正常訪問Internet,就成為了建立內部網路的一個要求。

  當然,針對每個電腦進行設置,也可以達到屏蔽外部網路訪問的目的。然而這樣做一方面不太方便,對每個電腦 都要進行設置,另一方面不太安全,內部網路中不是每台電腦使用的操作系統都具備良好的保護措施,而外部網路中的計算 機可以通過這些不安全的操作系統進入內部網路,提供了攻擊的途徑。因此更好的辦法是御入侵者於網路之外,在內部網路和 外部網路中架設一個防火牆,所有的訪問都需要經過它進行驗証,對內部網路提供了保護作用。

  • 包過濾技術

  為了對內部網路提供保護,就有必要對通過防火牆的數據包進行檢查,例如檢查其源地址和目的地址、端口地址、數 據包的類型等,根據這些數據來判斷這個數據包是否為合法數據包,如果不符合預定義的規則,就不將這個數據包發送到其目 的電腦中去。由於包過濾技術要求內外通信的數據包必須通過使用這個技術的電腦,才能進行過濾,因而包過濾技術必須 用在路由器上。因為只有路由器才是連接多個網路的橋梁,所有網路之間交換的數據包都得經過它,所以路由器就有能力對每 個數據包進行檢查。

  通常的路由器都支持基本的包過濾能力,路由器在轉發IP數據包的時候,預設狀態並不涉及數據包中的內容,只是 按照IP包的目的地址和本身的路由表進行轉發。為了使得它進行包過濾,就必須定義一系列過濾規則,使得路由器能進行過 濾。通常情況下,過濾能針對IP地址、端口地址、連接類型等進行設定,還能夠針對數據包進行轉發,將數據包轉發到合適 的電腦中。

  在包過濾的條件下,內部網路的電腦還是直接和外部電腦相通信的。由於這是直接在IP層工作,可以適合所有 的應用服務,靈活性和效率都較高。但也存在缺點,比如不能了解應用協議的具體形式,也不能提供清晰的日誌記錄等。

  • 代理服務

  代理服務是另一種防火牆技術,與包過濾不同,它直接和應用服務程序打交道。它不會讓數據包直接通過,而是自己 接收了數據包,並對其進行分析。當代理程序理解了連接請求之後,它將自己啟動另一個連接,向外部網路發送同樣的請求, 然後將返回的數據發送回那個提出請求的內部網電腦。

  雖然代理伺服器不必連接到兩個網路上就能提供代理服務,然而要想通過代理伺服器限制網路之間的通信,提供代理 服務的電腦必須連接到兩個網路上,所有的網路之間通信都需要通過它的代理才行,而不能直接連接到Internet上 。因此代理伺服器也不能打開包轉發能力,如果代理伺服器同時也是路由器,那麼內部電腦就可以通過它的路由能力而非代 理能力在不同的網路之間通信,代理伺服器就起不到防火牆的作用。除非特定情況下,才能設置路由能力,此時也應該配置了 更嚴格的包過濾規則,以保護網路安全。

  在有代理服務的情況下,內部網路的電腦必須配置具體的代理服務使用的代理伺服器,它只同代理伺服器打交道, 而由代理伺服器發送請求並返回結果。代理伺服器必須要了解它要代理的服務,並為每一種服務都提供詳細的訪問日誌記錄, 並能針對不同的使用者進行認証。

  一般來講,由於代理伺服器要針對一個請求啟動一個代理服務連接,因此代理伺服器效率不高,但是如果針對具體的 服務應用,可以在代理伺服器上配置大量的緩衝區,通過緩衝區可以提高其工作效率,提供更高的性能。例如對於使用HTTP 代理伺服器時,代理伺服器就能在緩衝區中查找到同樣的數據,因而不必再次訪問Internet,減少了對寶貴的Internet 帶寬的占用。代理伺服器不僅是一個防火牆技術,它還能用來提高訪問Internet的效率。

  常用的代理伺服器有http代理,ftp代理等,所有的代理服務能力都需要客戶軟體的支持,這也意味著當用戶 要使用代理功能的時候,需要設置客戶軟體,如瀏覽器,如果客戶軟體不支持代理功能,就無法使用代理伺服器。然而,為了 減輕配置負擔、利用代理伺服器的緩衝能力,可以設置一種透明代理伺服器,這種方式不需要設置客戶軟體,通過設置路由器 ,將本來發送到其他電腦的IP數據包,依據IP地址和端口轉發到代理伺服器中。

  • 網路地址翻譯

  在TCP/IP開始開發的時候,沒有人會想象到它發展的如此之快。目前使用的IPv4地址空間為32位大小, 因而地址資源已經十分緊張了。而下一代的IPv6還沒有得到大家的認可。FreeBSD雖然有支持IPv6的開發計劃 ,正由於整個Internet上IPv6還沒有實施,因此FreeBSD還沒有將以開發的IPv6合並入正式發布的系 統中去。

  為了解決地址緊張的問題,提出了網路地址翻譯(Network Address Translation, NAT)的方法。NAT能處理每個IP數據包,將其中的地址部分進行轉換,將對內部和外部IP進行直接映射,從一批可 使用的IP地址池中動態選擇一個地址分配給內部地址,或者不但轉換IP地址,也轉換端口地址,從而使得多個內部地址能 共享一個外部IP地址。

  動態分配外部IP地址的方法只能有限的解決IP地址緊張的問題,而讓多個內部地址共享一個外部IP地址的方式 能更有效的解決IP地址緊張的問題。讓多個內部IP地址共享一個外部IP地址,就必須轉換端口地址,這樣內部不同IP 地址但具有同樣端口地址的數據包就能轉換為同一個IP地址而端口地址不同,這種方法又被稱為端口地址轉換(Port Address Translation, PAT),或者稱為IP偽裝(IP masquerading)

  網路地址翻譯也是一個重要的防火牆技術,因為它對外隱藏了內部的網路結構,外部攻擊者無法確定內部電腦的連 接狀態。並且不同的時候,內部電腦向外連接使用的地址都是不同的,給外部攻擊造成了困難。同樣NAT也能通過定義各 種映射規則,屏蔽外部的連接請求,並可以將連接請求映射到不同的電腦中。

  網路地址翻譯都和IP數據包過濾一起使用,就構成一種更複雜的包過濾型的防火牆。僅僅具備包過濾能力的路由器 ,其防火牆能力還是比較弱,抵抗外部入侵的能力也較差,而和網路地址翻譯技術相結合,就能起到更好的安全保証。

  • 主動監測技術

  無論是包過濾,還是代理服務,都是根據管理員預定義好的規則提供服務或者限制某些訪問。然而在提供網路訪問能 力和防止網路安全方面,顯然存在矛盾,只要允許訪問某些網路服務,就有可能造成某種系統漏洞,然而如果限制太嚴厲,合 法的網路訪問就受到不必要的限制。代理型的防火牆的限制就在這個方面,必須為一種網路服務分別提供一個代理程序,當網 絡上的新型服務出現的時候,就不可能立即提供這個服務的代理程序。事實上代理伺服器一般只能代理最常用的幾種網路服務 ,可提供的網路訪問十分有限。

  為了在開放網路服務的同時也提供安全保証,必須有一種方法能監測網路情況,當出現網路攻擊時就立即告警或切斷 相關連接。主動監測技術就是基於這種思路發展起來的,它維護一個記錄各種攻擊模式的數據庫,並使用一個監測程序時刻運 行在網路中進行監控,當一旦發現網路中存在與數據庫中的某個模式相匹配時,就能推斷可能出現網路攻擊。由於主動監測程 序要監控整個網路的數據,因此需要運行在路由器上,或路由器旁能獲得所有網路流量的位置。由於監測程序會消耗大量內存 ,並會影響路由器的性能,因此最好不在路由器上運行。

  主動檢測方式作為網路安全的一種新興技術,由於需要維護各種網路攻擊的數據庫,因此需要一個專業性的公司維護 。理論上這種技術能在不妨礙正常網路使用的基礎上保護網路安全,然而這依賴於網路攻擊的數據庫和監測程序對網路數據的 智能分析,而且在網路流量較大時,使用sniffing技術的監測程序可能會遺漏數據包信息,因此這種技術主要用於要 求較高,只用於對網路安全要求非常高的網路系統中,常用的網路並不需要使用這種方式。