以前對防火墻接觸甚少,所了解的也是從系統底層實現角度看的一些分析細節,最近由于工作需要,對防火墻的發展、分類、現狀和趨向等方面做了概略的了解,也有一些體會,做個簡單的總結。
第一部分,防火墻的基本概念
首先說明一些文中大量用到的概念:
外網(非受信網絡):防火墻外的網絡,一般為Internet;
內網(受信網絡):防火墻內的網絡;
受信主機和非受信主機分別對照內網和外網的主機。
非軍事化區(DMZ):為了配置管理方便,內網中需要向外提供服務的服務器往往放在一個單獨的網段,這個網段便是非軍事化區。防火墻一般配備三塊網卡,在配置時一般分別分別連接內部網,Internet和DMZ。
近來隨著網絡安全問題日益嚴重,網絡安全產品也被人們重視起來。防火墻作為最早出現的網絡安全產品和使用量最大的安全產品,也受到用戶和研發機構的青睞。
以往在沒有防火墻時,局域網內部上的每個節點都暴露給Internet上的其它主機,此時局域網的安全性要由每個節點的堅固程度來決定,并且安全性等同于其中最弱的節點。而防火墻是放置在局域網與外部網絡之間的一個隔離設備,它可以識別并屏蔽非法請求,有效防止跨越權限的數據訪問。防火墻將局域網的安全性統一到它本身,網絡安全性是在防火墻系統上得到加固,而不是分布在內部網絡的所有節點上,這就簡化了局域網安全管理。
防火墻的經典功能,僅僅是以下:
1.作為一個中心“遏制點”,將局域網的安全管理集中起來;
2.屏蔽非法請求,防止跨權限訪問(并產生安全報警);
一.防火墻的分類
隨后隨著技術的發展,防火墻的技術也在不斷發展,到今天,防火墻的分類和功能也在不斷細化,但總的來說,可以分為以下兩大類:
包過濾防火墻、應用級防火墻。
至于和入侵檢測系統、分布式探測器融合起來的防火墻(系統),不在本報告討論范圍,其簡介見第三部分。
1.包過濾防火墻
又叫網絡級防火墻,因為它是工作在網絡層。
它一般是通過檢查單個包的地址、協議、端口等信息來決定是否允許此數據包通過。路由器便是一個“傳統”的網絡級防火墻。
防火墻可以提供內部信息以說明所通過的連接狀態和一些數據流的內容,把判斷的信息同規則表進行比較,在規則表中定義了各種規則來表明是否同意或拒絕包的通過。包過濾防火墻檢查每一條規則直至發現包中的信息與某規則相符。如果沒有一條規則能符合,防火墻就會使用默認規則,一般情況下,默認規則就是要求防火墻丟棄該包。其次,通過定義基于TCP或UDP數據包的端口號,防火墻能夠判斷是否允許建立特定的連接,如Telnet、FTP連接。
專門的防火墻系統一般在此之上加了功能的擴展,如狀態檢測等。狀態檢測又稱動態包過濾,是在傳統包過濾上的功能擴展,最早由checkpoint提出。傳統的包過濾在遇到利用動態端口的協議時會發生困難,如ftp,防火墻事先無法知道哪些端口需要打開,而如果采用原始的靜態包過濾,又希望用到此服務的話,就需要實現將所有可能用到的端口打開,而這往往是個非常大的范圍,會給安全帶來不必要的隱患。而狀態檢測通過檢查應用程序信息(如ftp的PORT和PASS命令),來判斷此端口是否允許需要臨時打開,而當傳輸結束時,端口又馬上恢復為關閉狀態。
網絡級防火墻簡潔、速度快、費用低,并且對用戶透明,但是對網絡的保護很有限,因為它只檢查地址和端口,對網絡更高協議層的信息無理解能力。
2.應用級防火墻
應用級防火墻主要工作在應用層。應用級防火墻往往又稱為應用級網關,它此時也起到一個網關的作用。
應用級防火墻檢查進出的數據包,通過自身(網關)復制傳遞數據,防止在受信主機與非受信主機間直接建立聯系。應用級防火墻能夠理解應用層上的協議,能夠做復雜一些的訪問控制,并做精細的注冊和審核。其基本工作過程是:當客戶機需要使用服務器上的數據時,首先將數據請求發給代理服務器,代理服務器再根據這一請求向服務器索取數據,然后再由代理服務器將數據傳輸給客戶機。由于外部系統與內部服務器之間沒有直接的數據通道,外部的惡意侵害也就很難傷害到內網。
常用應用級防火墻已有了相應的代理服務軟件,如HTTP、SMTP、FTP、Telnet、r系列等等,但是對于新開發的應用,尚沒有相應的代理服務,它們將通過網絡級防火墻和一般的代理服務(如sock代理)。
應用級網關有較好的訪問控制,是目前最安全的防火墻技術,但實現麻煩,而且有的應用級網關缺乏“透明度”。在實際使用中,用戶在受信任網絡上通過防火墻訪問Internet時,經常會出現延遲和多次登錄才能訪問外網的問題。
顯然可知,應用級防火墻每一種協議需要相應的代理軟件,使用時工作量大,效率明顯不如網絡級防火墻。
在現在的防火墻分類中,還有“電路級網關”、“規則過濾防火墻”、“監測型防火墻”等等,但自己認為這些只是以上兩大種防火墻中某一種技術上具體實現時的一種說法或者是兩種防火墻的融合,故不再單獨討論。如所謂電路級網關是用來監控受信主機與非受信主機間的TCP握手信息來決定該會話(Session)是否合法,是從OSI模型的角度來稱呼(會話層),而在TCP/IP模型中,它仍是屬于網絡層的。又如規則過濾防火墻即前邊討論的加入狀態檢測功能的包過濾防火墻。
從趨勢上看,未來的防火墻將位于網絡級防火墻和應用級防火墻之間,也就是說,網絡級防火墻將變得更加能夠識別通過的信息,而應用級防火墻在目前的功能上則向“透明”、“低級”方面發展。最終防火墻將成為一個快速注冊稽查系統,可保護數據以加密方式通過,使所有組織可以放心地在節點間傳送數據。
二.防火墻的附加功能
由于防火墻所處的優越位置(內網與外網的分界點),它在實際應用中也往往加入一些其他功能如NAT、VPN、路由管理等功能。
NAT(Network Address Translation)即網絡地址轉換。即將內網的IP地址或者外網的IP地址轉換,一般分為源地址轉換Source NAT(SNAT)和目的地址轉換Destination NAT (DNAT)。常見的包偽裝(Masquerading)就是一個SNAT特例,主要用來將有限的IP地址動態或靜態地與內部的IP地址對應起來,用來緩解地址空間短缺的問題。端口轉發(Port forwarding)、負載分擔、以及透明代理,都屬于DNAT,主要用于外網主機訪問內網主機。
虛擬專用網(VPN)是指在公共網絡中建立專用網絡,數據通過安全的“加密通道”在公共網絡中傳播。VPN的基本原理是通過對IP包的封裝及加密,認證等手段,從而達到保證安全的目的。它往往是在防火墻上附加一個加密模塊實現。
路由安全管理典型實現可見checkpoint公司的Fire Wall-1防火墻,它主要指為路由器提供集中管理和訪問列表控制。
以上是防火墻的一些附加功能,有些(如NAT)已經成為大多數防火墻的“標準”配置,但我們必須認識到,這些并非防火墻本身必須實現的功能,這對我們分析一個防火墻的市場定位,在有限成本下實現一個防火墻是很重要的。
【小結】
以上是對防火墻的一些基本概念做的討論,自己并不認為這一部分是可有可無的,只有了解防火墻的工作原理、分類,我們才知道自己要去作些什么。
第二部分,防火墻實現
一.防火墻功能分析
當前防火墻(應該)主要實現如下功能:
1.包過濾
包過濾是防火墻所要實現的最基本功能,現在的防火墻已經由最初的地址、端口判定控制,發展到判斷通信報文協議頭的各部分,以及通信協議的應用層命令、內容、用戶認證、用戶規則甚至狀態檢測等等。
特別要提到的是狀態監測技術,一般是加載一個檢測模塊,在不影響網絡正常工作的前提下,模塊在網絡層截取數據包,然后在所有的通信層上抽取有關的狀態信息,據此判斷該通信是否符合安全策略。由于它是在網絡層截獲數據包的,因此它可以支持多種協議和應用程序,并可以很容易地實現應用的擴充。
目前國內防火墻大多號稱已實現了狀態檢測技術,然而據朋友介紹,這些所謂的“狀態檢測”防火墻并不是真正的狀態檢測,因沒有接觸過此類防火墻,沒有太多了解,不能做過多評論。
2.審計和報警機制
在防火墻結合網絡配置和安全策略對相關數據分析完成以后,就要作出接受、拒絕、丟棄或加密等決定(target)。如果某個訪問違反安全規定,審計和報警機制開始起作用,并作記錄,報告等等。
審計是一種重要的安全措施,用以監控通信行為和完善安全策略,檢查安全漏洞和錯誤配置,并對入侵者起到一定的威懾作用。報警機制是在通信違反相關策略以后,以多種方式如聲音、郵件、電話、手機短信息及時報告給管理人員。
防火墻的審計和報警機制在防火墻體系中是很重要的,只有有了審計和報警,管理人員才可能知道網絡是否受到了攻擊。另外,防火墻的該功能也有很大的發展空間,如日志的過濾、抽取、簡化等等。日志還可以進行統計、分析、(按照特征)存儲(在數據庫中),稍加擴展便又是一個網絡分析與查詢模塊。
日志由于數據量比較大,主要通過兩種方式解決,一種是將日志掛接在內網的一臺專門存放日志的日志服務器上;一種是將日志直接存放在防火墻本身的存儲器上。日志單獨存放這種方式配置較為麻煩,然而可以存放的日志量可以很大;日志存放在防火墻本身時,無需做額外配置,然而由于防火墻容量一般很有限,所存放的日志量往往較小。目前這兩種方案國內(包括國外)都有使用。
3.遠程管理
管理界面一般完成對防火墻的配置、管理和監控。
管理界面設計直接關系到防火墻的易用性和安全性。目前防火墻主要有兩種遠程管理界面:web界面和GUI界面。對于硬件防火墻,一般還有串口配置模塊和/或控制臺控制界面。
管理主機和防火墻之間的通信一般經過加密。國內比較普遍采用自定義協議、一次性口令進行管理主機與防火墻之間通信(適用GUI界面)。
GUI界面可以設計的比較美觀和方便,并且可以自定義協議,也為多數廠商使用。一般使用語言VB、VC,有部分廠家使用Java開發,并把此作為一個賣點(所謂跨平臺)。Web界面也有廠商使用,然而由于防火墻因此要增加一個CGI解釋部分,減少了防火墻的可靠性(GUI界面只需要一個簡單的后臺進程就可以),故應用不是太廣泛。
部分廠家增加了校驗功能,即系統會自動識別用戶配置上的錯誤,防止因配置錯誤而造成的不安全隱患。
目前國內大部分防火墻廠商均是在管理界面上做文章,反觀之管理界面固然很重要,然而它畢竟不是一個防火墻的全部,一個系統功能設計完善的防火墻其管理部分必然容易設計。
4.NAT
網絡地址轉換似乎已經成了防火墻的“標配”,絕大多數防火墻都加入了該功能。
目前防火墻一般采用雙向NAT:SNAT和DNAT。SNAT用于對內部網絡地址進行轉換,對外部網絡隱藏起內部網絡的結構,使得對內部的攻擊更加困難;并可以節省IP資源,有利于降低成本。DNAT主要實現用于外網主機對內網和DMZ區主機的訪問。
5.代理
目前代理主要有如下幾種實現方式:
a.透明代理(Transparent proxy)
透明代理實質上屬于DNAT的一種,它主要指內網主機需要訪問外網主機時,不需要做任何設置,完全意識不到防火墻的存在,而完成內外網的通信。但其基本原理是防火墻截取內網主機與外網通信,由防火墻本身完成與外網主機通信,然后把結果傳回給內網主機,在這個過程中,無論內網主機還是外網主機都意識不到它們其實是在和防火墻通信。而從外網只能看到防火墻,這就隱藏了內網網絡,提高了安全性。
b.傳統代理
傳統代理工作原理與透明代理相似,所不同的是它需要在客戶端設置代理服務器。
如前所述,代理能實現較高的安全性,不足之處是響應變慢。
5.MAC與IP地址的綁定
這其實是一個可有可無的功能。
MAC與IP地址綁定起來,主要用于防止受控(不可訪問外網)的內部用戶通過更換IP地址訪問外網。
因為它實現起來太簡單了,內部只需要兩個命令就可以實現,所以絕大多數防火墻都提供了該功能。
6.流量控制(帶寬管理)和統計分析、流量計費
流量控制可以分為基于IP地址的控制和基于用戶的控制?;贗P地址的控制是對通過防火墻各個網絡接口的流量進行控制,基于用戶的控制是通過用戶登錄來控制每個用戶的流量,從而防止某些應用或用戶占用過多的資源。并且通過流量控制可以保證重要用戶和重要接口的連接。
流量統計是建立在流量控制基礎之上的。一般防火墻通過對基于IP、服務、時間、協議等等進行統計,并可以與管理界面實現掛接,實時或者以統計報表的形式輸出結果。流量計費從而也是非常容易實現的。
7.VPN
VPN在前邊已經介紹過。在以往的網絡安全產品中VPN是作為一個單獨一個產品出現的,現在更多的廠家把兩者捆綁到一起,這似乎體現了一種產品整合的趨勢。
8.URL級信息過濾
這往往是代理模塊的一部分,很多廠家把這個功能單獨提取出來,作為一個賣點,但是我們要知道,它實現起來其實是和代理結合在一起的。
URL過濾用來控制內部網絡對某些站點的訪問,如禁止訪問某些站點、禁止訪問站點下的某些目錄、只允許訪問某些站點或者其下目錄等等。
9.其他特殊功能
這些功能純粹是為了迎合特殊客戶的需要或者為贏得賣點而加上的。
如有時用戶要求,如限制同時上網人數;限制使用時間;限制特定使用者才能發送E-mail;限制FTP只能下載文件不能上傳文件;阻塞Java、ActiveX控件等,這些依需求不同而定。
有些防火墻更加入了掃毒功能,一般是與防病毒軟件搭配。
綜上所述,防火墻市場由于競爭激烈,各個廠家都在層出不窮的挖掘新功能,發明出新名詞,但總的不出以上討論范圍,因為操作系統(多為Linux)本身也就能完成這么多功能。挖掘出一個象checkpoint的狀態監測那樣的有一定意義的功能,似乎遠遠超出了目前國內廠商的實力。
二.防火墻設計中的一些重點問題
1.方案:硬件?還是軟件?
從上面討論可以看出,現在防火墻的功能越來越多越花哨,如此多的功能必然要求系統有一個高效的處理能力。
防火墻從實現上可以分為軟件防火墻和硬件防火墻。軟件防火墻以checkpoint公司的Firewall-I為代表,其實現是通過dev_add_pack的辦法加載過濾函數(Linux,其他操作系統沒有作分析,估計類似),通過在操作系統底層做工作來實現防火墻的各種功能和優化。國內也有一些所謂的軟件防火墻,但據了解大多是所謂“個人”防火墻,而且功能及其有限,故不在此討論范圍。
在國內目前已通過公安部檢驗的防火墻中,硬件防火墻占絕大多數。硬件防火墻一種是從硬件到軟件都單獨設計,典型如Netscreen防火墻不但軟件部分單獨設計,硬件部分也采用專門的ASIC集成電路。
另外一種就是基于PC架構的使用經過定制的通用操作系統的所謂硬件防火墻。目前國內絕大多數防火墻都屬于這種類型。
雖然都號稱硬件防火墻,國內廠家和國外廠家還是存在著巨大區別。硬件防火墻需要在硬件和軟件兩方面同時下功夫,國外廠家的通常做法是軟件運算硬件化,其所設計或選用的運行平臺本身的性能可能并不高,但它將主要的運算程序(查表運算是防火墻的主要工作)做成芯片,以減少主機CPU的運算壓力。國內廠家的防火墻硬件平臺基本上采用通用PC系統或工業PC架構(直接原因是可以節省硬件開發成本),在提高硬件性能方面所能做的工作僅僅是提升系統CPU的處理能力,增大內存容量而已?,F在國內防火墻的一個典型結構就是:工業主板+x86+128(256)M內存+DOC/DOM+硬盤(或不要硬盤而另增加一個日志服務器)+百兆網卡 這樣一個工業PC結構。
在軟件性能方面,國內外廠家的差別就更大了,國外(一些著名)廠家均是采用專用的操作系統,自行設計防火墻。而國內所有廠家操作系統系統都是基于通用的Linux,無一例外。各廠家的區別僅僅在于對Linux系統本身和防火墻部分(2.2內核為ipchains,2.4以后內核為netfilter)所作的改動量有多大。
事實上,Linux只是一個通用操作系統,它并沒有針對防火墻功能做什么優化,而且其處理大數據量通信方面的能力一直并不突出,甚至比較低下(這也是Linux一直只是低端服務器的寵兒的重要原因,我自己認為,在這一點上它還不如BSD系列,據說國外有用BSD做防火墻的,國內尚未見到)?,F在絕大部分廠家,甚至包括號稱國內最大的天融信,在軟件方面所作的工作無非也就是系統有針對性的裁減、防火墻部分代碼的少量改動(絕大部分還是沒有什么改動)和少量的系統補丁。而且我們在分析各廠家產品時可以注意這一點,如果哪個廠家對系統本身做了什么大的改動,它肯定會把這個視為一個重要的賣點,大吹特吹,遺憾的是似乎還沒有什么廠家有能力去做宣傳(天融信似乎有一個類似于checkpoint的功能:開放式的安全應用接口 TOPSEC,但它究竟做了多少工作,還需要去仔細了解)。
目前國內廠家也已經認識到這個問題,有些在做一些底層的工作,但有明顯成效的,似乎還沒有。
在此我們僅針對以Linux(或其他通用操作系統)為基礎的、以PC架構為硬件載體的防火墻做討論,以下如不特別提出,均同。
2.內核和防火墻設計
現在有一種商業賣點,即所謂“建立在安全操作系統之上的第四代防火墻”(關于防火墻分代的問題,目前有很多討論,比較一致的是把包過濾防火墻稱為第一代防火墻,把應用型防火墻(一般結合了包過濾功能,因此也成為混合型防火墻)稱為第二代防火墻,有些廠家把增加了檢測通信信息、狀態檢測和應用監測的防火墻稱為第三代防火墻,更有甚者在此基礎上提出了采用安全操作系統的防火墻,并把這個稱為第四代防火墻)。所謂安全操作系統,其實大多用的還是Linux,所不同的是需要做一些內核加固和簡單改造的工作,主要有以下:
取消危險的系統調用,或者截獲系統調用,稍加改動(如加載一些llkm);
限制命令執行權限;
取消IP轉發功能;
檢查每個分組的接口;
采用隨機連接序號;
駐留分組過濾模塊;
取消動態路由功能;
采用多個安全內核(這個只見有人提出,但未見到實例,對此不是很清楚)。
以上諸多工作,其實基本上都沒有對內核源碼做太大改動,因此從個人角度來看算不上可以太夸大的地方。
對于防火墻部分,國內大部分已經升級到2.4內核所支持的netfilter。netfilter已經是一個功能比較完善的防火墻框架,它已經支持基于狀態的監測(通過connection track模塊實現)。而且netfilter是一個設計很合理的框架,可以在適當的位置上登記一些需要的處理函數,正式代碼中已經登記了許多處理函數,如在NF_IP_FORWARD點上登記了裝發的包過濾功能(包過濾等功能便是由這些正式登記的函數實現的)。我們也可以登記自己的處理函數,在功能上作擴展(如加入簡單的IDS功能等等)。這一點是國內廠家可以做文章的地方,至于netfilter源碼的修改,對國內廠家來說似乎不太現實。
至于采用其它防火墻模型的,目前還沒有看到(可能是netfilter已經設計的很成功,不需要我們再去做太多工作)。
3.自我保護能力(安全性)
由于防火墻的特殊功能和特殊位置,它自然是眾多攻擊者的目標,因此它的自我包括能力在設計過程中應該放在首要的位置。
A.管理上的安全性
防火墻需要一個管理界面,而管理過程如何設計的更安全,是一個很重要的問題。目前有兩種方案。
a.設置專門的服務端口
為了減少管理上的風險和降低設計上的難度,有一些防火墻(如東方龍馬)在防火墻上專門添加了一個服務端口,這個端口只是用來和管理主機連接。除了專用的服務口外,防火墻不接受來自任何其它端口的直接訪問。
這樣做的顯著特點就是降低了設計上的難度,由于管理通信是單獨的通道,無論是內網主機、外網主機還是DMZ內主機都無法竊聽到該通信,安全性顯然很高,而且設計時也無需考慮通信過程加密的問題。
然而這樣做,我們需要單獨設置一臺管理主機,顯然太過浪費,而且這樣管理起來的靈活性也不好。
b.通信過程加密
這樣無需一個專門的端口,內網任意一臺主機都可以在適當的情況下成為管理主機,管理主機和防火墻之間采用加密的方式通信。
目前國內有采用的是使用自定義協議、一次性口令認證。對加密這個領域了解不多,不做詳細討論。
B.對來自外部(和內部)攻擊的反應能力
目前常見的來自外部的攻擊方式主要有:
a.DOS(DDOS)攻擊
(分布式)拒絕服務攻擊是目前一種很普遍的攻擊方式,在預防上也是非常困難的。
目前防火墻對于這種攻擊似乎沒有太多的解決辦法,主要是提高防火墻本身的健壯性(如增加緩沖區大?。?。在Linux內核中有一個防止Syn flooding攻擊的選項:CONFIG_SYN_COOKIES,它是通過為每一個Syn建立一個緩沖(cookie)來分辨可信請求和不可信請求。另外對于ICMP攻擊,可以通過關閉ICMP 回應來實現。
b.IP假冒(IP spoofing)
IP假冒是指一個非法的主機假冒內部的主機地址,騙取服務器的“信任”,從而達到對網絡的攻擊目的。
第一,防火墻設計上應該知道網絡內外的IP地址分配,從而丟棄所有來自網絡外部但卻有內部地址的數據包。實際實現起來非常簡單,只要在內核中打開rp_filter功能即可。
第二,防火墻將內網的實際地址隱蔽起來,外網很難知道內部的IP地址,攻擊難度加大。
IP假冒主要來自外部,對內網無需考慮此問題(其實同時內網的IP假冒情況也可以得到遏制)。
c. 特洛伊木馬
防火墻本身預防木馬比較簡單,只要不讓系統不能執行下載的程序即可。
一個需要說明的地方是必須指出的是,防火墻能抗特洛伊木馬的攻擊并不意味著內網主機也能防止木馬攻擊。事實上,內網主機可能會透過防火墻下載執行攜帶木馬的程序而感染。內網主機的在預防木馬方面的安全性仍然需要主機自己解決(防火墻只能在內網主機感染木馬以后起一定的防范作用)。
d.口令字攻擊
口令字攻擊既可能來自外部,也可能來自內部,主要是來自內部。(在管理主機與防火墻通過單獨接口通信的情況下,口令字攻擊是不存在的)
來自外部的攻擊即用窮舉的辦法猜測防火墻管理的口令字,這個很容易解決,只要不把管理部分提供給外部接口即可。
內部的口令字攻擊主要是窮舉和嗅探,其中以嗅探危害最大。嗅探指監測網絡截獲管理主機給防火墻的口令字,如果口令字已加密,則解密得到口令字。目前一般采用一次性口令和禁止直接登錄防火墻的措施來防止對口令字的攻擊。
e.郵件詐騙
郵件詐騙是目前越來越突出的攻擊方式。防火墻本身防止郵件詐騙非常簡單,不接收任何郵件就可以了。然而象木馬攻擊一樣,內網主機仍可收發郵件,郵件詐騙的危險仍然存在,其解決辦法一個是內網主機本身采取措施防止郵件詐騙,另一個是在防火墻上做過濾。
f.對抗防火墻(anti-firewall)
目前一個網絡安全中一個研究的熱點就是對抗網絡安全產品如防火墻。一種是分析防火墻功能和探測防火墻內部網絡結構,典型的如Firewalk。另外有一些其他的網絡安全性分析工具本身具有雙刃性,這類工具用于攻擊網絡,也可能會很有效的探測到防火墻和內部網絡的安全缺陷,典型的如SATAN和ISS公司的Internet Security Scanner。目前對于這種探測(攻擊)手段,尚無有效的預防措施,因為防火墻本身是一個被動的東西,它只能靠隱藏內部網絡結構和提高自身的安全性來對抗這些攻擊。
C.透明代理的采用
應用代理防火墻一般是通過設置不同用戶的訪問權限來實現,這樣就需要有用戶認證體系。以前的防火墻在訪問方式上主要是要求用戶登錄進系統(如果采用sock代理的方式則需要修改客戶應用)。透明代理的采用,可以降低系統登錄固有的安全風險和出錯概率,從而提高了防火墻的安全性。
4.透明性
防火墻的透明性指防火墻對于用戶是透明的,在防火墻接入網絡時,網絡和用戶無需做任何設置和改動,也根本意識不到防火墻的存在。
防火墻作為一個實際存在的物理設備,要想放入已存在地網絡中又不對網絡有任何影響,就必須以網橋的方式置入網絡。傳統方式下,防火墻安裝時,更象是一臺路由器或者網關,原有網絡拓撲結構往往需要改變,網絡設備(包括主機和路由器)的設置(IP和網關、DNS、路由表等等)也需要改變。但如果防火墻采用了透明模式,即采用類似網橋的方式運行,用戶將不必重新設定和修改路由,也不需要知道防火墻的位置,防火墻就可以直接安裝和放置到網絡中使用。
透明模式最大的好處在于現有網絡無需做任何改動,這就方便了很多客戶,再者,從透明模式轉換到非透明模式又很容易,適用性顯然較廣。當然,此時的防火墻僅僅起到一個防火墻的作用,其他網關位置的功能如NAT、VPN功能不再適用,當然,其他功能如透明代理還可以繼續使用。
目前透明模式的實現上可采用ARP代理和路由技術實現。此時防火墻相當于一個ARP代理的功能。內網(可以仍含有路由器或子網,依次類推)、防火墻、路由器的位置大致如下:
內網―――――防火墻―――――路由器
(需要說明的是,這種方式是絕大多數校園網級網絡的實現方式)
內網主機要想實現透明訪問,必須能夠透明的傳送內網和路由器之間的ARP包,而此時由于事實上內網和路由器之間無法連通,防火墻就必須配置成一個ARP代理(ARP Proxy)在內網主機和路由器之間傳遞ARP包。防火墻所要做的就是當路由器發送ARP廣播包詢問內網內的某一主機的硬件地址時,防火墻用和路由器相連接口的MAC地址回送ARP包;內網內某一主機發送ARP廣播包詢問路由器的硬件地址時,防火墻用和內網相連接口的MAC地址回送ARP包,因此路由器和內網主機都認為將數據包發給了對方,而實際上是發給了防火墻轉發。
顯然,此時防火墻還必須實現路由轉發,使內外網之間的數據包能夠透明的轉發。另外,防火墻要起到防火墻的作用,顯然還需要把數據包上傳給本身應用層處理(此時實現應用層代理、過濾等功能),此時需要端口轉發來實現(?這個地方不是十分清楚,也沒找到相關資料)。
透明模式和非透明模式在網絡拓撲結構上的最大區別就是:透明模式的兩塊網卡(與路由器相連的和與內網相連的)在一個網段(也和子網在同一個網段);而非透明模式的兩塊網卡分別屬于兩個網段(內網可能是內部不可路由地址,外網則是合法地址)。
這個過程如下:
1. 用ARP代理實現路由器和子網的透明連接(網絡層)
2. 用路由轉發在IP層實現數據包傳遞(IP層)
3. 用端口重定向實現IP包上傳到應用層(IP層)
前邊我們討論過透明代理,和這里所說的防火墻的透明模式是兩個概念。透明代理主要是為實現內網主機可以透明的訪問外網,而無需考慮自己是不可路由地址還是可路由地址。內網主機在使用內部網絡地址的情況下仍然可以使用透明代理,此時防火墻既起到網關的作用又起到代理服務器的作用(顯然此時不是透明模式)。
需要澄清的一點是,內外網地址的轉換(即NAT,透明代理也是一種特殊的地址轉換)和透明模式之間并沒有必然的聯系。透明模式下的防火墻能實現透明代理,非透明模式下的防火墻(此時它必然又是一個網關)也能實現透明代理。它們的共同點在于可以簡化內網客戶的設置而已。
目前國內大多防火墻都實現了透明代理,但實現了透明模式的并不多。這些防火墻可以很明顯的從其廣告中看出來:如果哪個防火墻實現了透明模式,它的廣告中肯定會和透明代理區分開而大書特書的。
5.可靠性
防火墻系統處于網絡的關鍵部位,其可靠性顯然非常重要。一個故障頻頻、可靠性很差的產品顯然不可能讓人放心,而且防火墻居于內外網交界的關鍵位置,一旦防火墻出現問題,整個內網的主機都將根本無法訪問外網,這甚至比路由器故障(路由器的拓撲結構一般都是冗余設計)更讓人無法承受。
防火墻的可靠性也表現在兩個方面:硬件和軟件。
國外成熟廠商的防火墻產品硬件方面的可靠性一般較高,采用專門硬件架構且不必多說,采用PC架構的其硬件也多是專門設計,系統各個部分從網絡接口到存儲設備(一般為電子硬盤)集成在一起(一塊板子),這樣自然提高了產品的可靠性。
國內則明顯參差不齊,大相徑庭,大多直接使用PC架構,且多為工業PC,采用現成的網卡,DOC/DOM作為存儲設備。工業PC雖然可靠性比普通PC要高不少,但是畢竟其仍然是拼湊式的,設備各部分分立,從可靠性的角度看顯然不如集成的(著名的水桶原理)。
國內已經有部分廠家意識到了這個問題,開始自行設計硬件。但大多數廠家還是從成本的角度考慮使用通用PC架構。
另外一方面,軟件可靠性的提高也是防火墻優劣的主要差別所在。而國內整個軟件行業的可靠性體系還沒有成熟,軟件可靠性測試大多處于極其初級的水平(可靠性測試和bug測試完全是兩個概念)。一方面是可靠性體系建立不起來,一方面是為了迎合用戶的需求和跟隨網絡應用的不斷發展,多數防火墻廠商一直處于不斷的擴充和修改中,其可靠性更不能讓人恭維。
總的來說,如同國內大多數行業(除了少數如航天、航空)一樣,網絡安全產品特別是防火墻的可靠性似乎還沒有引起人們的重視。
6.市場定位
市場上防火墻的售價極為懸殊,從數萬元到數十萬元,甚至到百萬元不等。由于用戶數量不同,用戶安全要求不同,功能要求不同,因此防火墻的價格也不盡相同。廠商因而也有所區分,多數廠家還推出模塊化產品,以符合各種不同用戶的要求。
總的說來,防火墻是以用戶數量作為大的分界線。如checkpoint的一個報價:
CheckPoint Firewall-1 4.1 25user 19000.00
CheckPoint Firewall-1 4.1 50user 31000.00
CheckPoint Firewall-1 4.1 100user 51000.00
CheckPoint Firewall-1 4.1 250user 64000.00
CheckPoint Firewall-1 4.1 無限用戶 131000.00
從用戶量上防火墻可以分為:
a.10-25用戶:
這個區間主要用戶為單一用戶、家庭、小型辦公室等小型網絡環境。防火墻一般為10M(針對硬件防火墻而言),兩網絡接口,涵蓋防火墻基本功能:包過濾、透明模式、網絡地址轉換、狀態檢測、管理、實時報警、日志。一般另有可選功能:VPN、帶寬管理等等。
這個區間的防火墻報價一般在萬元以上2萬元以下(沒有VPN和帶寬管理的價格更低)。
據調查,這個區間的防火墻反而種類不多,也許是國內廠商不屑于這個市場的緣故?
b.25-100用戶
這個區間用戶主要為小型企業網。防火墻開始升級到100M,三或更多網絡接口。VPN、帶寬管理往往成為標準模塊。
這個區間的防火墻報價從3萬到15萬不等,根據功能價格有較大區別。相對來說,這個區間上硬件防火墻價格明顯高于軟件防火墻。
目前國內防火墻絕大部分集中在這個區間中。
c.100-數百用戶
這個區間主要為中型企業網,重要網站、ISP、ASP、數據中心等使用。這個區間的防火墻較多考慮高容量、高速度、低延遲、高可靠性以及防火墻本身的健壯性。并且開始支持雙機熱備份。
這個區間的防火墻報價一般在20萬以上。這樣的中高端防火墻國內較少,有也是25-100用戶的升級版,其可用性令人懷疑。
d.數百用戶以上
這個區間是高端防火墻,主要用于校園網、大型IDC等等。我們接觸較少,不多做討論。
當然其價格也很高端,從數十萬到數百萬不等。
總的來說,防火墻的價格和用戶數量、功能模塊密切相關,在用戶數量相同的情況下,功能越多,價格就越貴。如Netscreen的百兆防火墻:
NetScreen-100f(AC Power) -帶防火墻+流量控制等功能,交流電源,沒有VPN功能 報價在¥260,000
而在此基礎上增加了128位VPN功能的報價則高出5萬元:¥317,500
7.研發費用
如同其他網絡安全產品一樣,防火墻的研發費用也是很高的。
防火墻由于技術含量較高,人員技術儲備要求較高,防火墻核心部分的研發必須要對操作系統有相當的熟悉,所需為UNIX系統下開發人員,而目前國內真正能拿的出手的UNIX程序員數量還是太少(遠遠少于Windows平臺下開發人員),人員成本很高。
總的來說,防火墻的研發是一個大項目,而且其前期定位一定要準確,該做什么、不該做什么,哪些功能得實現,哪些功能不必實現、哪些功能可以在后期實現,一定要清楚,否則費用會遠遠超出預計。
下邊對一個中小型企業級防火墻的研發費用作個簡單的估計。
研發時,防火墻可以細分為(當然在具體操作時往往需要再具體劃分):
內核模塊
防火墻模塊(含狀態檢測模塊)
NAT模塊
帶寬管理模塊
通信協議模塊
管理模塊
圖形用戶界面模塊(或者Web界面模塊)
透明代理模塊(實質屬于NAT模塊)
透明模式模塊(包括ARP代理子模塊、路由轉發子模塊等)
各應用代理模塊(包括URL過濾模塊)
VPN模塊
流量統計與計費模塊
審計模塊
其他模塊(如MAC、IP地址綁定模塊、簡單的IDS、自我保護等等)
上邊把防火墻劃分為12個模塊,其中每一個模塊都有相當的工作量要做,除了彈性較大的內核模塊和防火墻模塊(它們的工作量可能異常的大,視設計目標不同),其他模塊暫定10人周的話就需要120周(VPN的工作量也相當大),兩個主模塊各按20人周計算,防火墻實現總共需要150人周。加上前期10-15人周論證、定方案,后期20人周(保守數字)集成、測試,前后總共需要約210人周。按每人周1200元開發費用(折合工資5000月,但由于有運行費用、保險等費用攤分,個人工資應遠低于這個數字),開發費用約需25萬。
顯然,這個數字只是一個局外人估計的下限,實際的研發應該超出這個數字很多。
8.可升級能力(適用性)和靈活性
對用戶來說,防火墻作為大成本投入的商品,勢必要考慮到可升級性的問題,如果防火墻不能升級,那它的可用性和可選擇余地勢必要大打折扣。
目前國內防火墻一般都是軟件可升級的,這是因為大多數防火墻采用電子硬盤(少數采用磁盤),實現升級功能只要很小的工作量要做。但究竟升級些什么內容?升級周期多長一次?這就涉及到一個靈活性的問題。
防火墻的靈活性主要體現在以下幾點:
a.易于升級
b.支持大量協議
c.易于管理(如納入通用設備管理體系(支持SNMP)而不是單列出來)
d.功能可擴展
這里對功能可擴展做一簡單討論。一般情況下,防火墻在設計完成以后,其過濾規則都是定死的,用戶可定制的余地很小。特別如URL過濾規則(對支持URL過濾的防火墻而言),當前網絡中的漏洞是不斷發現的,如最近很猖獗的codered攻擊的就是Windows機器IIS服務器的ida漏洞,而我們如果能夠及時定義過濾規則,對于“GET /default.ida”的請求及時過濾,那么內網主機(此時一般為DMZ內主機)的安全性就會高很多,內網管理人員也不必時時密切關注網絡漏洞(這是個工作量很大,既耗費體力又容易出現遺漏的工作)。這樣大部分工作留給防火墻廠家來做(相應需要有一個漏洞監測體系),用戶肯定會滿意很多。
另外,靈活性一開始也往往不是前期設計所能設計的很完美的,它需要和用戶具體實踐相配合。另外靈活性也是和具體環境密切結合的,往往需要在不同的用戶環境里考慮。
三.防火墻設計的國家標準
在我國,防火墻作為一種信息安全產品,其進入市場并不是隨意的,有相關的國家標準,也有相應的認證中心。
在我國1994年2月18日發布的《中華人民共和國計算機信息系統安全保護條例》中規定:
國家對計算機信息系統安全專用產品的銷售實行許可證制度。具體辦法由公安部會同有關部門制定。(第十二章第16條規定)
隨后公安部1997年頒布了《計算機信息系統安全專用產品檢測和銷售許可證管理辦法》規定:
第三條 中華人民共和國境內的安全專用產品進入市場銷售, 實行銷售許可證制度。安全專用產品的生產者在其產品進入市場銷售之前, 必須申領《計算機信息系統安全專用產品銷售許可證》(以下簡稱銷售許可證)。
第四條 安全專用產品的生產者申領銷售許可證, 必須對其產品進行安全功能檢測和認定。
第五條 公安部計算機管理監察部門負責銷售許可證的審批頒發工作和安全專用產品安全功能檢測機構(以下簡稱檢測機構)的審批工作。
第十七條 已取得銷售許可證的安全專用產品, 生產者應當在固定位置標明“銷售許可”標記。
任何單位和個人不得銷售無“銷售許可”標記的安全專用產品。
國家于1999年通過了關于放火墻的相關國家標準:
GB/T 17900-1999 網絡代理服務器的安全技術要求
GB/T 18018-1999 路由器安全技術要求
GB/T 18019-1999 信息技術包過濾防火墻安全技術要求
GB/T 18020-1999 信息技術應用級防火墻安全技術要求
公安部專門成立了一個機構:公安部計算機信息系統安全產品質量監督檢驗中心(位于上海)來完成相關安全產品的檢驗工作。并且從2000年9月起執行上面的三個新的國家標準。
這個檢測是強制的,必須通過這個檢測,才能夠進入市場。
另外又有中國國家信息安全測評認證中心的測評,據稱這個機構的認證:“中華人民共和國國家信息安全認證”是國家對信息安全技術、產品或系統安全質量的最高認可。目前看到的一些國內大的防火墻廠商的防火墻產品都通過了這個認證。但它不是強制認證(如著名的checkpoint就沒有這個認證)。
如果想進入國防行業,還要通過中國人民解放軍信息安全測評認證中心的“軍用信息安全產品認證證書”,拿到解放軍總參謀部的“國防通信網設備器材進網許可證”。
另外還有國家保密局的推薦等等,這些純粹就是部門瞎搞了。
其他還有國外的認證如美國國際計算機安全協會(ICSA)認證和歐洲ITSEC E3認證等。
【小結】
以上討論了防火墻設計中的一些關鍵問題以及相關標準??偟膩碚f,防火墻的前期準備一定要充足,定位要準確,否則開發過程中會出現種種意外的問題。
第三部分,分析與想法
在前面討論了防火墻實現上的一些問題,從當前市場可以看出,防火墻行業的競爭已經非常激烈,且大多(對國內廠商來說)集中在中小型企業網用戶這個有限的用戶群。而且不斷有廠家涌入這個市場。
從97年公安部監測中心建立起來以后,我們可以從每年通過認證的產品數量可以看出:
其中標稱防火墻的(不包括所謂
產品總數 安全產品其實起到防火墻功能的)
98年 15 4
99年 103 28
2000年 219 48
2001年 129種(至8月) 33
從數字可以看出,從98年到2001年,網絡安全產品每年在不斷迅速增加,防火墻也在不斷增加,且防火墻占網絡安全產品總數均略超過1/4。國內市場上的防火墻種類目前已經超過100種(這些不包括沒有通過檢測私自出售的產品)。對于競爭如此激烈的市場,我們應該如何找準切入點呢?
從對以上這一百多種防火墻的大部分(有一部分資料無法獲得)分析以后,發現一個很奇怪的現象,沒有多少防火墻針對辦公室級市場。如netscreen干脆就沒有把針對這個市場的netscreen 5送檢。
由以上市場分析的啟發和自己對嵌入式系統的了解,覺得從辦公室級市場切入或許是個很不錯的想法。
1.市場定位
小型辦公用戶。目標就是要取代目前廣泛使用的proxy(如Wingate、Linux IP偽裝等等)。
這個市場的用戶包括:
家庭。對擁有兩臺以上計算機的家庭而言,他們更多需要的或許是共享上網(56k、ISDN等),如果我們這個小設備能夠實現共享上網(實質就是NAT),那么應該會有市場。
辦公室。辦公室一般有數臺到十數臺計算機不等。要求之一:共享上網(以太網、ISDN、DDN、);簡單的防火墻。
其他需要單獨隔離的小區域。要求:簡單的防火墻。
【小結】
以上只是自己的想法而已,究竟是否可行,還要做充分的論證后再作決定。
第四部分,防火墻發展展望
如下是一些防火墻的技術展望。
1.多級過濾技術
所謂多級過濾技術,是指防火墻一般采用多級過濾措施,并輔以鑒別手段。在分組過濾(網絡層)一級,過濾掉所有的源路由分組和假冒的IP源地址;在傳輸層一級,遵循過濾規則,過濾掉所有禁止出或/和入的協議和有害數據包如nuke包、圣誕樹包等;在應用網關(應用層)一級,能利用FTP、SMTP等各種網關,控制和監測Internet提供的所用通用服務。
多級過濾技術其實就是現在防火墻已經廣泛使用的技術:包過濾、應用網關。之所以把他提出來是因為這個提法比較科學,在分層上非常清楚,而且從這個概念出發,又有很多內容可以擴展。
2.網絡安全產品的系統化
現在有一種提法,叫做建立“以防火墻為核心的網絡安全體系”,主要是隨著目前網絡安全產品的不斷推出和防火墻在實際使用中表現出越來越大的局限性而提出的。
一般情況下,內外網交界的位置由于非常關鍵,為了降低網絡傳輸延遲,只有不得不置于這個位置的設備如防火墻才會放置在這里(一般必需的還有病毒檢測設備等等),其他設備如IDS只能置于旁路位置。而在實際使用中,IDS的任務往往不僅在于檢測,很多時候在IDS發現入侵行為以后,也需要IDS本身對入侵及時遏止(在這點上我理解為其實IDS是一個策略不斷變化的動態的“智能”防火墻,而防火墻本身是一個策略安全級最低的靜態設備,這里所說的IDS是指NIDS,而非基于主機的)。顯然,要讓處于旁路偵聽的IDS完成這個任務又太難為,同時主鏈路又不能串接太多類似設備。
在這種情況下,如果防火墻能和IDS、病毒檢測等相關安全產品聯合起來,充分發揮各自的長處,協同配合,共同建立一個有效的安全防范體系,那么系統網絡的安全性就能得以明顯提升。
目前主要有兩種解決辦法。一種是直接把IDS、病毒檢測部分直接“做”到防火墻中,使防火墻具有(簡單的)IDS和病毒檢測設備的功能。另一種是各個產品分立,但是通過某種通訊方式形成一個整體,即相關檢測系統專職某一類安全事件的檢測,一旦發現安全事件,則立即通知防火墻,由防火墻完成過濾和報告。第一種方法似乎前途不明確,因為IDS本身也是一個非常復雜的系統,且不說能不能“做”到防火墻里邊去,即使成為防火墻的一部分,這樣一個防火墻的效率也很難說。第二種方法在實現起來困難一些,而且很明顯的是:IDS、病毒檢測設備必須置于防火墻之外,如果置于防火墻之內,就起不到相應效果了。這樣一來,IDS等設備本身的安全性又不得不成為研究的一個重點。
3.管理的通用化
這一點其實主要是針對國內防火墻而言的。
國外的防火墻這一點已經非常成熟,一般防火墻都不是作為一個特殊網絡產品來管理,而是納入通用網絡設備管理體系。
國內則相差很遠,往往是防火墻就是防火墻,管理起來需要單獨管理,乃至單獨培訓。不過國內也已經有所改觀,正在向網絡化、通用化發展,據稱億陽信通出品一種防火墻和VPN的結合產物就支持遠程通用管理。
4.專用化和小型化
這是自己的一點想法,一個原因是基于上邊討論的微小型防火墻(姑且這么稱呼),一個原因是來自個別地方提出的一個新概念:網絡二極管(即單向防火墻),這個由于相關資料很少,無法作出更詳細的討論。
【小結】
以上是對防火墻技術的一些展望,總的來說,系統化是網絡安全產品的一個發展趨勢。從防火墻技術本身來講,暫時不會有什么大的突破(象狀態檢測那樣的)。
第五部分,其他
在這里將近兩個月時間,自己認為收獲最大的并不是Linux系統的小型化或者是內核做了多少研究,思想的開闊或許是最重要的。
如果既想投入很少的人力物力,又想得到功能很完備的產品,基本上是不可能的。
做一個產品,前期工作一定要充分。除非產品無需投入市場。
以上是自己對防火墻做了了解以后的一些總結,從一個從來沒有從事過真正的商用防火墻研發的人的角度來看問題,其中肯定有不足甚至錯誤的地方(在完成這篇報告的時候我還是有很多問題沒弄清楚,有一些問題還是處于想當然的程度),所以這篇報告只是一個參考,更多的時候可以視為個人之見,如果想真正涉足防火墻這個領域,我們還是要有專業人士來做指導。
本來想跟蹤防火墻時間更久一點,了解的更多一點,或許報告會寫的更好,但是現在時間所限,只能寫到這個地步。有很多觀點尚不成熟,理解還不夠,但是沒辦法。
(有時間的話,關于包過濾、狀態檢測、應用代理這些核心部分我會專門寫一個報告出來??礄C會了)
參考文獻:
1.GB/T 17900-1999 網絡代理服務器的安全技術要求
2.GB/T 18019-1999 信息技術包過濾防火墻安全技術要求
3.GB/T 18020-1999 信息技術應用級防火墻安全技術要求
4.Stateful Inspection Technology,Check Point Software Technologies Ltd.
5.Linux 2.4 NAT HOWTO,Rusty Russell,mailing list
6.Linux netfilter Hacking HOWTO,Rusty Russell, mailing list
7.linux防火墻實現技術比較,yawl,aka講座講義
8.Checkpoint 白皮書,Check Point Software Technologies Ltd.
9.Netscreen防火墻技術資料,NetScreen Technologies, Inc.
10.東方龍馬防火墻技術白皮書,東方龍馬公司
11.Linux源碼和相關幫助:man頁、help、Docs
部分防火墻資源:
1. Linux防火墻netfilter主頁
2. Linux Embedded Appliance Firewall主頁(似乎要國外代理才能出去)
3. 一張軟盤上的Linux防火墻主頁
4. 世界上最著名的網絡安全站點之一,論文堪稱高質量,基本上每一篇論文都影響發表后若干年的網絡安全研究方向
5. 大量網絡安全資源
6.我參與維護的站點,收集關于網絡和安全的技術資料,特別是IDS相關
7.=防火墻 國內關于防火墻的新聞、文檔的集合