搜尋此網誌

2008年12月22日 星期一

Network Access Control - NAC

這幾年NAC的話題性熱度越來越高,相關的產品也越來越多。從Cisco、Extreme Networks等網路設備廠商,到Symantec、McAfee等防毒軟體廠商,大大小小的廠商陸續推出NAC產品,只為了搶得商機。

NAC的主要目的包含身分與網路資源存取管理、資安政策的落實以及避免遭受0-Day的攻擊。不過以0-Day的攻擊而言,NAC其實並不是一個很有效的管制方法。簡單說來,NAC就是為了確保(內部)網路環境的安全。跟傳統上為了保護內部網路而佈署的防火牆或防毒牆等設備是不一樣且互補的。換句話說,NAC正是因為內部管控議題的延燒而受重視,而且不只是技術面的問題,更是管理面的問題。

面對龐大種類的NAC產品,有一些特性是需要特別注意的:

  1. Pre-admission and Post-admission:Pre-admission是指在設備使用網路前就先進行存取的管理,也就是決定設備是否可以使用網路。而Post-admission則是指設備連上網路後,控制設備可以使用的網路資源或網路行為。
  2. Agent vs. Agentless:有些機制需要在被管控者的設備上安裝代理程式(Agent),有些則不需要。使用代理程式的機制,因為可以取得較詳盡的資訊,也可以作較多的控制,所以通常擁有較高的彈性與管理功能。但是在部署上的複雜度較高,以及整體效能上也通常較差。而無代理程式(Agentless)通常需要網路設備的配合,以達到管理與控制的功能。
  3. Inline vs. Out-of-Band:Inline指的是管理機制本身的機器是網路的組成分子,例如交換器或是內部使用的防火牆。而Out-of-Band的機器則是外加於原先的網路架構。Inline的方式因為可以直接管理與控制所有的網路流量,所以可以達到更好的功能。另外也可直接整合於網路架構中,特別適合新建構的網路。Out-of-Band的方式,在佈署上需要特別注意的是是否有架構上的限制,例如需要搭配支援802.1x或是VLAN的設備。
  4. Fail open vs. Fail close:也就是說當NAC機制失效時,網路的存取權限應該是開放給所有人還是全部拒絕?對Out-of-Band的機制,失效時雖然不會影響網路本身的運作,但是是Fail open還是Fail close才是需要特別注意的議題。

NAC在面對沒有存取權限的設備時,可以使用VLAN隔離、ARP導向等方式讓該設備無法正常的使用網路。相較於ARP導向,VLAN隔離因為是從設備上面著手,比較不容易產生漏網之魚,但是需要搭配支援VLAN技術的網路設備。

當然,這些特性不一定是互斥的。也就是說同一個產品,可能同時使用了兩個不同的方式(如Agent和Agentless)。目地當然就是希望能夠彼此截長補短,而衍生的問題就是管理的複雜性。NAC所要面對的問題是一個很複雜的議題(不管是從管理面或是技術面),其複雜度比防火牆還高出許多。在導入之前,可得好好想想自己的需求,並仔細比較各家產品之後再作決定。不然,利用不同產品疊床架屋似的佈署,美其名是多層次防衛,萬一成了三個和尚沒水喝,那可就損失慘重了。

2008年12月17日 星期三

虛擬世界虛擬化,資安政策落實化

虛擬化(Virtualization)是這一陣子認門的話題之一,從微軟RedHatVMWareXen等公司推出各式各樣的免費/付費虛擬化軟體,可見其受廠商重視的程度。之前我們常說網路是一個虛擬的世界,不過那是對人類而言,對電腦程式(作業系統)都還是存在於真實的環境(硬體)下。而虛擬化則是把程式或作業系統的執行移入了一個虛擬的環境,所以對程式而言,不再直接擁有硬體設備。以資訊安全的角度而言,每一個程式都會帶來額外的風險,而虛擬化軟體本身就有可能是受到攻擊的目標(雖然目前還沒看到真實的案例,僅止於概念)。除此之外,因為對人類而言,虛擬化通常也代表了複雜化,如何有效管理以避免產生安全的危害,更是一個重要的課題。有些虛擬化環境的管理軟體,可以幫助解決這樣的問題。但是如何把虛擬化環境與真實環境做有效的整合與管理,應該是未來必須加以克服的問題。

虛擬化對於資訊安全是正面還是負面的,各有不同的支持者。但是不管結果為何,根據過去的經驗,一個新的技術或應用會不會被企業所接受通常跟安不安全沒有直接的關係。所以對我們而言,所能做的就是了解虛擬化對資訊安全的影響,並知道應該如何加以有效防範。

Forrester Research在今年中提出了一份報告,對於虛擬化與資訊安全的關係基本上是持正面的態度。報告中指出,因應虛擬化,企業應該做的就是把原先資訊安全的政策延伸到虛擬化的環境。也就是說,虛擬化所帶來的技術上的新威脅並不是主要的安全問題來源,而是能不能有效管理這些虛擬的東西。這些虛擬的東西包含了虛擬網路(Virtual networks)、虛擬核心(Virtualization Kernel)、乘載虛擬系統的作業系統(Console operating system)以及當資料轉移時在網路傳遞的影像(Live migration network traffic)。除了在網路上傳遞的影像,虛擬磁碟的檔案本身,以及記憶體的存檔,都是必須嚴加保護的資料。而虛擬環境的管理系統,那就更不用說了,一定要做好控管,不然等於敞開大門讓宵小直驅而入。

另外因為虛擬化的系統往往不是24HR開啟的,甚至有些是有需要時才開啟,所以如何確保系統本身是在最新的更新狀態下,就是一個重要的課題。這個可以透過所謂的Offline更新的方式,讓沒有開啟的系統也可以進行更新。不過,想當然爾,通常並不是連應用程式都能更新,所以還是會有一些死角(有可能是蠻大的死角,要看虛擬化系統的應用為何,也就是上面執行了哪些程式)。還有一個方式就是使用NAC的產品,讓未更新的系統必須先經過更新的動作才能連結到企業的網路。

2008年12月15日 星期一

從楊遠致看資訊安全產品選擇

英國的一個科技網站 vnunet.com 於日前選出了10大表現最糟的CEO,其中任職以來飽受攻擊的楊致遠打敗前HP美麗女CEO,獲得了冠軍。楊致遠在面對微軟的收購案時,表現得令所有人感到失望(包含一般投資者與大股東)。唯一不感到失望的,大概就是當時的楊致遠以及現在的微軟CEO-Steve Ballmer了。甚至我猜Steve Ballmer應該曾經連續好幾天因為竊喜而睡不著覺才是。這件事跟資訊安全有甚麼關係,嚴格來說是沒有的,但是既然我寫了,當然就是要想辦法扯上關係。

我們在評估資訊安全解決方案(或廣義的產品,包含軟硬體、服務與管理措施)時,通常講究的是Cost Effective,就是成本與效益的比例。如果可以量化加以比較,當然通常是越高越好。這個有點像是我們在買電子產品時所謂的C/P,也就是價格功能比。除了所謂的Cost Effective原則,其實我們還有兩個更重要的限制(Constraints)需要加以考量,一個是理論上最重要的限制,也就是最低的功能需求。另外一個則是實務上最重要的限制,那就是價格。因為企業的資源有限,所以無法用無上限的預算去佈署一個解決方案。相較於價格的限制,最低功能需求的限制往往很難有效加以實現。主要的原因在於很多功能達成與否,是很難用量化的數字去比較。就算有了量化的數字,評斷方法的公平性、廠商數據的可靠性、乃至於數字的適用性都有相當的討論空間。以大家最常用數字加以評斷的防毒軟體攔阻率來說,即使有了Third party的獨立實驗室加以測試,但是依舊有不少廠商沒有加入,甚至有廠商質疑測試方法的公平性(因為每家產品各有所長)以及病毒攔阻率已經不能代表這類軟體的可用性(因為除了病毒還有更多其他種類的惡意程式)。把複雜的情況加以簡化來說,就是同時在滿足最低功能與最高價格兩個限制下(至少兩個,也有可能還有其他你專屬的限制,如廠商的名聲),擁有最佳Cost Effective的解決方案就是首選。

而楊致遠的狀況,當然不像採買防毒軟體這樣"單一功能性"的產品這麼單純。以一個CEO來說,他要負責的事情是很全面的,也就是同時需要具備不同的功能(能力)。同樣的,因為沒有人面面俱到,所以各項功能間孰重孰輕,就影響到了如何找出"一個"對整體而言最佳的解決方案。當然,我們也可以把不同的功能交由不同的解決方案加以負責,但是這雖然減低了比較不同產品適用性的複雜度,卻也增加了日後管理的複雜度與有效性。就像把一個集團分成不同的公司,可以讓每個公司負責較小且專注的業務範圍,但是不同公司之間可能就會有資源重複或無法截長補短的缺憾。而且,也不可能細分到每個公司的所有人都只有單一業務。所以,一個具備多功能的解決方案無法避免,甚至有時候廠商會端出你根本用不到功能干擾你的評估結果。另外像是一些歷史包袱,也都會影響評估的過程與結果。就像你曾經跟A公司購買防毒軟體,而A公司表現得相當專業,所以你就繼續跟A公司購買防火牆。問題是防毒軟體跟防火牆是兩回事。也有可能多年後你從原先10人的小公司,轉換到10000人的大公司,你依舊決定透過A公司採買防毒軟體。同樣的,支援10人的公司所需要的能力跟支援10000人的公司也是不一樣。如果這些考量沒有釐清,就像找了能夠做出最成功的入口網站之一的楊致遠來管理一家全球性的網路公司一樣。楊致遠不是最糟,而是最不適任,真正最糟的是找他當CEO的那群人。

2008年12月1日 星期一

Metasploit 初體驗

最近在看Metasploit這個套件,最簡單的說法,Metasploit提供滲透測試者一個整合的環境,進行相關的任務。當然,Metasploit因為提供了良好的擴充性,所以也可以成為安全研究人員研究弱點的工具。而且最重要的是,這是免費使用而且是Open Source的工具。

雖然Metasploit比不上一些商業軟體,提供了高度自動化的滲透測試,但是相對來說彈性就更大。而且執行一個基本的測試,其實也不複雜,大概的流程如下:
  1. 選擇已知的漏洞(Exploit)。
  2. 選擇目標(Target)。這裡所謂的目標並不是哪一台/群電腦設備,而是指定設備的作業系統。因為不同的作業系統有不同的弱點與攻擊方式。
  3. 選擇攻擊的指令內容(Payload)。
  4. 設定其他相關參數(Option)。
  5. 進行測試(Explotation)。有兩種方式,一種是Check,並不會實際進行攻擊行為,所以不會造成被攻擊電腦設備的損害,但是準確性不高,而且不是所有的弱點都可以用此方式加以測試。另外一種是Exploit,也就是真正進行攻擊的行為,不會有誤判的問題,但是不小心可能會把電腦設備搞掛。
當然在執行1之前,我們必須有可能被攻擊目標的清單。除了手動額外執行相關的偵測行為外,更方便的是可以透過與nmap/nessus整合的功能,直接將nmap/nessus檢測的結果作為後續檢測的資料來源。

以下我用一個簡單的例子說明實際的操作方式(使用BackTrack 3.0就內建了Metasploit,而不需要自行安裝):
  1. 使用msfconsole,進入後會顯示版本與其他相關資訊。除了msfconsole外,也提供了msfweb(透過瀏覽器操作)。另外還有msfcli,可以與其他script結合而達到自動化。基本上我喜歡打指令的方式,不過msfweb有搜尋的功能,這部分在msfconsole上並沒有提供。鍵入help可以看到所有的指令。
  2. 選擇Exploits,在例子中我們使用ms04-11 (use windows/smb/ms04_11_lsass) 這個漏洞。這個漏洞主要針對Microsoft Windows 2000與早期的Microsoft Windows XP版本。執行後提示符號也改成相對應的文字。
  3. 查詢包含此漏洞的作業系統 (show targets)。
  4. 設定目標為Microsoft Windows 2000 (set target 1),此主機是我為了測試特別安裝的系統。如果不確定其作業系統,可以設定為自動偵測 (0)。不過我在實際的執行上,發現並不是100%準確,而有時候會影響到測試的結果。
  5. 選擇攻擊的指令,在範例中我們選擇建立一個tcp的連線,並開啟一個shell (set PAYLOAD windows/shell/bind_tcp)。
  6. 查詢其他相關所需的參數 (show options),有些參數為必須設定(Required欄位為yes),有些則可由使用者自行決定。此漏洞需要指定被攻擊電腦設備的IP位址(RHOST),我們設定為192.168.0.14 (set RHOST 192.168.0.14)。
  7. 進行實際的攻擊(exploit),顯示攻擊成功後開啟遠端作業系統的shell。
  8. 執行ipconfig(遠端作業系統的指令),顯示確實為192.168.0.14這台電腦設備。
當然,Microsoft Windows 2000是很早期的作業系統,在一般的環境下比較少見了。但是Microsoft Windows XP SP3呢?大概還是目前佔有率最高的作業系統。同樣透過Metasploit,我們可以攻擊Microsoft Windows XP SP3相關的漏洞。簡單嗎?看下面的範例就知道了。
可怕嗎?也許吧。這類的工具會不斷的進化,不但讓"好人"進行測試的門檻降低,也讓"壞人"進行破壞更加方便。我們該做的,還是做好原本就應該進行的保護措施,例如定期/主動進行更新。有多少人可以做到呢?根據一份報告顯示,只有不到2%的人辦到了。希望你我都是那2%的一份子。

About