網(wǎng)絡(luò)防火墻設(shè)計(jì)中的重點(diǎn)問(wèn)題(1)

字號(hào):

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