網絡防火墻設計中的重點問題(1)

字號:

1.方案:硬件?還是軟件?
     現在防火墻的功能越來越多越花哨,如此多的功能必然要求系統有一個高效的處理能力。
     防火墻從實現上可以分為軟件防火墻和硬件防火墻。軟件防火墻以checkpoint 公司的Firewall-I為代表,其實現是通過 dev_add_pack的辦法加載過濾函數(Linux,其他*作系統沒有作分析,估計類似),通過在*作系統底層做工作來實現防火墻的各種功能和優(yōu)化。國內也有一些所謂的軟件防火墻,但據了解大多是所謂“個人”防火墻,而且功能及其有限,故不在此討論范圍。
     在國內目前已通過公安部檢驗的防火墻中,硬件防火墻占絕大多數。硬件防火墻一種是從硬件到軟件都單獨設計,典型如Netscreen防火墻不但軟件部分單獨設計,硬件部分也采用專門的ASIC集成電路。另外一種就是基于PC架構的使用經過定制的通用*作系統的所謂硬件防火墻。目前國內絕大多數防火墻都屬于這種類型。雖然都號稱硬件防火墻,國內廠家和國外廠家還是存在著巨大區(qū)別。硬件防火墻需要在硬 件和軟件兩方面同時下功夫,國外廠家的通常做法是軟件運算硬件化,其所設計或選用的運行平臺本身的性能可能并不高,但它將主要的運算程序(查表運算是防火墻的主要工作)做成芯片,以減少主機CPU的運算壓力。國內廠家的防火墻硬件平臺基本上采用通用PC系統或工業(yè)PC架構(直接原因是可以節(jié)省硬件開發(fā)成 本),在提高硬件性能方面所能做的工作僅僅是提升系統CPU的處理能力,增大內存容量而已?,F在國內防火墻的一個典型結構就是:工業(yè)主板+x86+128 (256)M內存+DOC/DOM+硬盤(或不要硬盤而另增加一個日志服務器)+百兆網卡這樣一個工業(yè)PC結構。
     在軟件性能方面,國內外廠家的差別就更大了,國外(一些)廠家均是采用專用的* 作系統,自行設計防火墻。而國內所有廠家*作系統系統都是基于通用的 Linux,無一例外。各廠家的區(qū)別僅僅在于對Linux系統本身和防火墻部分(2.2內核為ipchains,2.4以后內核為netfilter)所 作的改動量有多大。事實上,Linux只是一個通用*作系統,它并沒有針對防火墻功能做什么優(yōu)化,而且 其處理大數據量通信方面的能力一直并不突出,甚至比較低下(這也是 Linux一直只是低端服務器的寵兒的重要原因,我自己認為,在這一點上它還不如BSD系列,據說國外有用BSD做防火墻的,國內尚未見到)?,F在絕大部 分廠家,甚至包括號稱國內的天融信,在軟件方面所作的工作無非也就是系統有針對性的裁減、防火墻部分代碼的少量改動(絕大部分還是沒有什么改動)和少 量的系統補丁。而且我們在分析各廠家產品時可以注意這一點,如果哪個廠家對系統本身做了什么大的改動,它肯定會把這個視為一個重要的賣點,大吹特吹,遺憾 的是似乎還沒有什么廠家有能力去做宣傳(天融信似乎有一個類似于checkpoint的功能:開放式的安全應用接口 SEC,但它究竟做了多少工作,還需要去仔細了解)。
     目前國內廠家也已經認識到這個問題,有些在做一些底層的工作,但有明顯成效的,似乎還沒有。在此我們僅針對以Linux(或其他通用*作系統)為基礎的、以PC架構為硬件載體的防火墻做討論,以下如不特別提出,均同。
     2.內核和防火墻設計
     現在有一種商業(yè)賣點,即所謂“建立在安全*作系統之上的第四代防火墻”(關于防火墻 分代的問題,目前有很多討論,比較一致的是把濾防火墻稱為第一代防火墻,把應用型防火墻(一般結合了濾功能,因此也成為混合型防火墻)稱為第二代 防火墻,有些廠家把增加了檢測通信信息、狀態(tài)檢測和應用監(jiān)測的防火墻稱為第三代防火墻,更有甚者在此基礎上提出了采用安全*作系統的防火墻,并把這個稱為 第四代防火墻)。所謂安全*作系統,其實大多用的還是Linux,所不同的是需要做一些內核加固和簡單改造的工作,主要有以下:取消危險的系統調用,或者截獲系統調用,稍加改動(如加載一些llkm);限制命令執(zhí)行權限;取消IP轉發(fā)功能;檢查每個分組的接口;采用隨機連接序號;駐留分組過濾模塊;取消動態(tài)路由功能;采用多個安全內核(這個只見有人提出,但未見到實例,對此不是很清楚)。以上諸多工作,其實基本上都沒有對內核源碼做太大改動,因此從個人角度來看算不上可以太夸大的地方。
     對于防火墻部分,國內大部分已經升級到2.4內核所支持的netfilter。netfilter已經是一個功能比較完善的防火墻框架,它已經支持基于狀態(tài)的監(jiān)測(通過connection track模塊實現)。而且netfilter是一個設計很合理的框架,可以在適當的位置上登記一些需要的處理函數,正式代碼中已經登記了許多處理函數, 如在NF_IP_FORWARD點上登記了裝發(fā)的濾功能(濾等功能便是由這些正式登記的函數實現的)。我們也可以登記自己的處理函數,在功能上作 擴展(如加入簡單的IDS功能等等)。這一點是國內廠家可以做文章的地方,至于netfilter源碼的修改,對國內廠家來說似乎不太現實。
     至于采用其它防火墻模型的,目前還沒有看到(可能是netfilter已經設計的很成功,不需要我們再去做太多工作)。
     3.自我保護能力(安全性)
     由于防火墻的特殊功能和特殊位置,它自然是眾多攻擊者的目標,因此它的自我包括能力在設計過程中應該放在首要的位置。
     A.管理上的安全性
     防火墻需要一個管理界面,而管理過程如何設計的更安全,是一個很重要的問題。目前有兩種方案。
     a.設置專門的服務端口
     為了減少管理上的風險和降低設計上的難度,有一些防火墻(如東方龍馬)在防火墻上專 門添加了一個服務端口,這個端口只是用來和管理主機連接。除了專用的服務口外,防火墻不接受來自任何其它端口的直接訪問。這樣做的顯著特點就是降低了設計 上的難度,由于管理通信是單獨的通道,無論是內網主機、外網主機還是DMZ內主機都無法竊聽到該通信,安全性顯然很高,而且設計時也無需考慮通信過程加密 的問題。然而這樣做,我們需要單獨設置一臺管理主機,顯然太過浪費,而且這樣管理起來的靈活性也不好。
     b.通信過程加密
     這樣無需一個專門的端口,內網任意一臺主機都可以在適當的情況下成為管理主機,管理主機和防火墻之間采用加密的方式通信。目前國內有采用的是使用自定義協議、一次性口令認證。對加密這個領域了解不多,不做詳細討論。
     B.對來自外部(和內部)攻擊的反應能力
     目前常見的來自外部的攻擊方式主要有:
     a.DOS(DDOS)攻擊
     (分布式)拒絕服務攻擊是目前一種很普遍的攻擊方式,在預防上也是非常困難的。目前 防火墻對于這種攻擊似乎沒有太多的解決辦法,主要是提高防火墻本身的健壯性(如增加緩沖區(qū)大?。?。在Linux內核中有一個防止Syn flooding攻擊的選項:CONFIG_SYN_COOKIES,它是通過為每一個Syn建立一個緩沖(cookie)來分辨可信請求和不可信請求。另外對于ICMP攻擊,可以通過關閉ICMP 回應來實現。
     b.IP假冒(IP spoofing)
     IP假冒是指一個非法的主機假冒內部的主機地址,騙取服務器的“信任”,從而達到對網絡的攻擊目的。第一,防火墻設計上應該知道網絡內外的IP地址分配,從而丟棄所有來自網絡外部但卻有內部地址的數據包。實際實現起來非常簡單,只要在內核中打開rp_filter功能即可。第二,防火墻將內網的實際地址隱蔽起來,外網很難知道內部的IP地址,攻擊難度加大。IP假冒主要來自外部,對內網無需考慮此問題(其實同時內網的IP假冒情況也可以得到遏制)。
     c.特洛伊木馬
     防火墻本身預防木馬比較簡單,只要不讓系統不能執(zhí)行下載的程序即可。一個需要說明的地方是必須指出的是,防火墻能抗特洛伊木馬的攻擊并不意味著內網主機 也能防止木馬攻擊。事實上,內網主機可能會透過防火墻下載執(zhí)行攜帶木馬的程序而感染。內網主機的在預防木馬方面的安全性仍然需要主機自己解決(防火墻只能 在內網主機感染木馬以后起一定的防范作用)。
     d.口令字攻擊
     口令字攻擊既可能來自外部,也可能來自內部,主要是來自內部。(在管理主機與防火墻通過單獨接口通信的情況下,口令字攻擊是不存在的)來自外部的攻擊即用窮舉的辦法猜測防火墻管理的口令字,這個很容易解決,只要不把管理部分提供給外部接口即可。內部的口令字攻擊主要是窮舉和嗅探,其中以嗅探危害。嗅探指監(jiān)測網絡截獲管理主機給防火墻的口令字,如果口令字已加密,則解密得到口令字。目前一般采用一次性口令和禁止直接登錄防火墻的措施來防止對口令字的攻擊。
     e.郵件詐騙
     郵件詐騙是目前越來越突出的攻擊方式。防火墻本身防止郵件詐騙非常簡單,不接收任何郵件就可以了。然而象木馬攻擊一樣,內網主機仍可收發(fā)郵件,郵件詐騙的危險仍然存在,其解決辦法一個是內網主機本身采取措施防止郵件詐騙,另一個是在防火墻上做過濾。
     f.對抗防火墻(anti-firewall)
     目前一個網絡安全中一個研究的熱點就是對抗網絡安全產品如防火墻。一種是分析防火墻 功能和探測防火墻內部網絡結構,典型的如Firewalk。另外有一些其他的網絡安全性分析工具本身具有雙刃性,這類工具用于攻擊網絡,也可能會很有效的 探測到防火墻和內部網絡的安全缺陷,典型的如SATAN和ISS公司的 Internet Security Scanner。目前對于這種探測(攻擊)手段,尚無有效的預防措施,因為防火墻本身是一個被動的東西,它只能靠隱藏內部網絡結構和提高自身的安全性來對 抗這些攻擊。
     C.透明代理的采用
     應用代理防火墻一般是通過設置不同用戶的訪問權限來實現,這樣就需要有用戶認證體 系。以前的防火墻在訪問方式上主要是要求用戶登錄進系統(如果采用 sock代理的方式則需要修改客戶應用)。透明代理的采用,可以降低系統登錄固有的安全風險和出錯概率,從而提高了防火墻的安全性。
     4.透明性
     防火墻的透明性指防火墻對于用戶是透明的,在防火墻接入網絡時,網絡和用戶無需做任何設置和改動,也根本意識不到防火墻的存在。
     防火墻作為一個實際存在的物理設備,要想放入已存在地網絡中又不對網絡有任何影響, 就必須以網橋的方式置入網絡。傳統方式下,防火墻安裝時,更象是一臺路由器或者網關,原有網絡拓撲結構往往需要改變,網絡設備(包括主機和路由器)的設置 (IP和網關、DNS、路由表等等)也需要改變。但如果防火墻采用了透明模式,即采用類似網橋的方式運行,用戶將不必重新設定和修改路由,也不需要知道防 火墻的位置,防火墻就可以直接安裝和放置到網絡中使用。透明模式的好處在于現有網絡無需做任何改動,這就方便了很多客戶,再者,從透明模式轉換到非透明模式又很容易,適用性顯然較廣。當然,此時的防火墻僅僅起到一個防火墻的作用,其他網關位置的功能如NAT、VPN功能不再適用,當然, 其他功能如透明代理還可以 繼續(xù)使用。
     目前透明模式的實現上可采用ARP代理和路由技術實現。此時防火墻相當于一個ARP代理的功能。內網(可以仍含有路由器或子網,依次類推)、防火墻、路由器的位置大致如下: 內網―――――防火墻―――――路由器 (需要說明的是,這種方式是絕大多數校園網級網絡的實現方式)
     內網主機要想實現透明訪問,必須能夠透明的傳送內網和路由器之間的ARP包,而此時 由于事實上內網和路由器之間無法連通,防火墻就必須配置成一個ARP代理(ARP Proxy)在內網主機和路由器之間傳遞ARP包。防火墻所要做的就是當路由器發(fā)送ARP廣播包詢問內網內的某一主機的硬件地址時,防火墻用和路由器相連接口的MAC地址回送ARP包;內網內某一主機發(fā)送ARP廣播包詢問路由器的硬件地址時,防火墻用和內網相連接口的MAC地址回送ARP包,因此路由器和 內網主機都認為將數據包發(fā)給了對方,而實際上是發(fā)給了防火墻轉發(fā)。