西元前12世紀,希臘與特洛伊的一場戰爭,造就了荷馬(Homer)史詩中的兩位英雄人物Achilles與Odysseus,其英雄救美的事跡留存於詩歌中讓人永世讚歎;而這場戰爭最終決定性的勝利竟然是一隻木馬,這樣富戲劇性的結局更讓人不可思議,除了具軍事教訓意味外,著實也多了許多趣味性。如今這場戰爭卻活生生地搬上了Internet舞臺,雖然少了美女Helen助陣,不過精采的程度卻不下於3000多年前的盛況,只不過整個場景都虛擬於網路中。
打造一道網路城牆
據荷馬史詩記載,希臘聯軍共圍剿特洛伊城達十年之久,當時沒有現代的空中部隊,因此整個防衛所倚靠的都是城牆!據說當時特洛依城城牆厚度達五公尺,在這麼堅固城牆防衛下,希臘一直都無法將特洛依城攻下。
相對於特洛依城牆的厚度,到底一道網路的城牆要多「厚」才安全呢?在Internet中的城牆,我們稱之?Firewall或是防火牆,主要的作用是將原本與Internet直接串聯的私人網路,從中加以攔截,以進行網路交通過濾與管制。
這道網路虛擬的城牆強度雖然不能以實體厚度來衡量,但打造這道城牆同樣要考慮到「是否地基夠穩?」、「是否有鋼骨結構?」、「城門衛兵是否盡責?」,此外這一整套控管機制「是否有品質保證?」,如此才能評斷Firewall是否足以抵禦外侮!如(圖一)。
穩固的地基--SecureOS
高樓平地起,因此打好地基是建造一道堅固城牆的基礎!如何打造Firewall的穩固地基?在電腦系統裏,Firewall不能獨立存在,必須倚靠在作業系統(OS)上,因此作業系統就是Firewall的地基。作業系統的穩固與否,在於安全性上是否有保障?從以下幾個方向來設計作業系統,相信就能有穩固牢靠的地基︰
1. 以安全的角度出發,來設計作業系統
作業系統是電腦應用環境的基礎,因此要使用所有的電腦程式需要安裝有作業系統。一般的作業系統設計來滿足所有的應用環境,因此出發點是以「彈性」?考量,在此前提下,作業系統呈現的是「多而雜」,樣樣都可以做,不過卻不見得都一定用得到;而以「安全」角度來設計的作業系統,設計的用途是專?Firewall用的,是個「小而美」的作業系統,因此可與Firewall緊密搭配,當然可以有效提升Firewall的強度。
2. 移除不需要的功能與指令
系統上存在的程式與指令愈多,漏洞也就像對地增加,駭客常常會利用作業系統上運作程式的漏洞,作?入侵的途徑,並利用系統上可用的指令來破壞系統的運作。因此將不必要的程式與指令移除,駭客的攻擊目標自然減少了!
3. 移除所有作業系統上既存的程式的漏洞
有些程式是必須存在作業系統上以利系統運作,而這些程式本身仍然可能遭受到駭客攻擊,因此作?一個Firewall上的作業系統,就不能沿用一般作業系統上的運作程式,必須重新審視程式內容是否隱藏漏洞,一一移除漏洞後再重新設計,然後才供系統運作使用。
Firewall的「鋼骨」結構
近兩年來全世界各地接連發生了數起大地震,包括臺灣的921大地震,均造成相當多的建築物倒塌與傷亡損失,?了補強建築物的耐震強度,建商無不採用「鋼骨」結構來強化耐震度。而在Internet世界中,駭客的入侵手法日益精進,入侵事件更是與日俱增,就好比強震一波波朝Firewall襲擊而來,因此有必要?Firewall建築「鋼骨」結構才能有效抵擋駭客的「強震」撼動!
1. 各程式具有獨立的執行空間
各程式執行時不能彼此干擾,同時也不能共用相同目錄,否則一旦某一支程式遭受入侵,其他程式也可能同時遭殃。因此各程式執行時所需的檔案,如函式庫或指令,都必須擺放在各自的目錄中,不能有共用的情形。
2. 各程式以最少許可權執行
每一支程式的執行者許可權只夠執行程式本身,同時不能任意切換目錄,以防止許可權設定不當的破壞。
3. 所有權限資料設定唯讀
?了確保Firewall系統的正常運作,避免駭客破壞正常運作的程式或資料,甚至防止駭客程式佯裝成正常程式,將Firewall系統上的許可權資料設定?唯讀,駭客就不能進一步進行破壞。
4. 沒有超級使用者
一般作業系統中均存在一個超級使用者,掌控所有系統的權限,在Windows系統中叫做"administrator", Unix中叫做"root"。一旦駭客取得這個使用者帳號,即可對系統進行全面性破壞,例如中斷Firewall的運作。因此Firewall上的作業系統應該沒有超級使用者,才能有效避免駭客破壞Firewall的運作機制。
Firewall的進出管控
Firewall是設計用來管控所有進出的封包,而管控的機制因控管的程度而有所區別,我們稱之為Firewall的控管層級,這就好比城門守衛,管制進出城門的人員。如 (圖二)所示,目前Firewall的控管層級大致上區分為三層︰
Packet Filtering:
是最基本的Firewall控管,只管控到Network層級的封包內容,因此過濾速度是三種層級中最快速的,相對的對於管控的安全性是最差的。如(圖三)。
舉例來說,這就好像H君企圖送雜誌包裹給城內的A書店,Packet Filtering只檢查H君的通行證,以及查詢是否允許雜誌包裹進入,如果答案是肯定的話就給予放行,否則給予阻擋。因此有可能H君所宣稱的雜誌包裹,實際上是郵包炸彈;同時也可能有人從中挾持H君的通行證,企圖用偽冒身分闖關。
Stateful Inspection:
因為Packet Filtering不能有效地保證存取身分,因此有可能發生IP Spoofing的駭客事件,也就是偽冒身份的存取。Stateful Inspection就是為了彌補此一缺失而改進的Packet Filtering技術,它位於MAC Layer,能持續追蹤每一個開啟port的連線,直到連線終止。如(圖四)。
同前例,此時守衛在H君進入城門時驗明正身後,一路上即予以監視錄影,同時並聯絡A書店是否收到一件雜誌包裹,直到H君送完包裹步出牆門後,整個監視過程才終止。因為一路上監視,因此能有效地防止H君被從中挾持而遭偽冒;雖然它能追蹤包裹是否完整送達,但也可能宣稱的雜誌包裹其實是郵包炸彈!
Application Layer Gateway:
上述的兩種控管機制,都無法完整管控整個封包傳遞過程,Application Layer Gateway顧名思義是能控管到達每個Application,也就是說Firewall需要了解每個Application到底在作些什麼事?因此要控管HTTP,Firewall就必須為HTTP寫一支控管程式,這支程式知道HTTP實際上的運作內容為何。因為每種應用程式都有相對應的控管程式,因此Application Layer Gateway的Firewall可以完整地管控每個進出的封包;同時與前兩種控管機制不同的是,Application Layer Gateway會將連線存取的動作,轉交由Firewall進行,而不是兩端點間的直接連線。如(圖五)。
《圖五 Application Layer Gateway》 |
|
同前例,H君要送雜誌包裹給A書店,城門守衛驗明正身後會將包裹接下,同時打開包裹檢查是否為雜誌,確認後由守衛親自將包裹送達A書店。如此就不用擔心是否包裹被從中掉包,同時確認包裹內容。
木馬屠城重返Internet時代
在特洛伊戰爭中,要不是特洛依人多事將木馬拖入城內,也不會造成木馬屠城的慘劇;不過在Internet的時代,Firewall城門是不能緊閉的,在某些程度上甚至是歡迎大家光臨的;Internet因為互聯而得以蓬勃發展,控管只是要降低與外界的接觸面,並不能完全阻隔。因此提供外界的連線存取是有必要的,而倚賴 Firewall的連線存取控管,是否就可以免於駭客入侵了呢?
答案是︰Firewall可以阻擋一些入侵行為,但是並不能完全抵擋。依連線控管層級來分析,採用Packet Filtering或Stateful Inspection控管機制的Firewall,可輕易被偽裝成正常網路程式port號的後門程式欺瞞!Application Layer Gateway能阻擋的入侵行為最多,包含防止身分偽冒、封包調包以及確保協定內容的真實。但這些還是不夠,因為即使傳輸內容合乎協定標準,但是封包內容傳遞至遠端系統後,系統的反應卻不見得是正常的。
就如同上述的例子,A書店如果是兒童書店,而收到的雜誌內容卻是光怪陸離,或是色情暴力,這樣對於書店讀者來說反應是負面的,其實並不應該收下這些雜誌的。但因為守衛並不負責書刊分級,他只管將東西傳送到目的地,A書店還是照單全收,書店也只好自行處理這些垃圾;有時也可能收到一大堆的垃圾雜誌,堵住整間書店,以致不能正常營業!
而在Internet的環境中,各Internet Service的問題通常還更嚴重,我們稱之為「弱點(Vulnerability)」或「漏洞」,駭客可以利用Internet Service的正常傳輸指令,夾帶的卻是系統所不能接收的內容,來達到入侵系統有弱點的主機的目的。一旦入侵到內部系統後,就有機會再入侵到其他系統。
(圖六)就是一齣網路木馬屠城記,Firewall提供內部的Web與Mail供外界存取,Internet使用者使用標準的程式或指令來達到連線的目的;駭客卻可以利用這些既已開啟的通道,對內部Web Server與E-Mail Server進行破壞,且一旦破壞成功後,又轉而破壞其他Unix與NT主機。
常見的系統入侵行為
在Firewall的保護傘後面,仍然會遭受外部入侵的行為有︰
1. 妨礙系統正常運作(Denial of Service),以讓所有網路連線中斷為目的。
2. Buffer Overflow︰利用程式設計的疏失,異常中斷程式運作。通常會伴隨"root exploit"或"backdoor"的攻擊。
3. 擷取超級使用者權限(root exploit)以控制系統,並據此攻擊內部其他機器。
4. 安裝後門木馬程式,供駭客隨時進入系統用,同時主動蒐集相關資訊傳送給駭客。
網路需要全方位防衛
特洛伊城之所以久攻不破,是它有一道堅固的城牆,不會因城牆潰敗而引來全面性的殺機;在Internet上我們也需要一道堅實的Firewall,以確保Firewall不會因被擊潰,而導致企業內部數十乃至數百台的電腦的入侵危機!但木馬屠城卻給我們另一層的啟示︰在外需要厚實的城牆抵擋,在內更須時時提高警覺,防止可疑份子的滲透破壞!
因此即使有了Firewall,也須要時時提防所有的連線是否隱藏破壞分子?也須審視是否系統脆弱地不堪駭客一擊?同時更須設法提高系統的自衛能力。如此遇到木馬時,也不至於被屠城了!而這些內部的防範,並非Firewall能力所及,往後的篇幅我將會為大家一一介紹。
(作者為諮安科技技術部經理,聯絡信箱 tyrone@secureuni.com;諮安科技為網路安全專業諮詢顧問公司)