2008年9月28日

Microsoft TechEd 2008 心得 - Day2-2

Day2 -2

1330 ~ 1440
課程主題:It's the 21st Century: Time to Throw Away Your Medieval Gateways
                - 21世紀的資安事件中,市場上的擋火牆真的能保護你的資料嗎?
講師:Steve Riley

Here is Steve's Blog, and this post (directly connect to your copnet with IPsec and IPv6) is the topic in this session.

我覺得Steve的presentation skill很厲害,非常懂得如何炒熱氣氛 (他本身也很high),
他現在的Title是 Senior Security Strategist
聽起來整個就很高級而且很賺 (但是相對的也很困難,各方面都要懂得很深入),
他主要的工作就是在像TechEd這樣的conference講安全性的議題 (到處飛來飛去),
而議程內容主要就是利用平常沒講課的時間,
不斷的跟微軟內部的developer討論,還有接受客戶的feedback來決定的。

這堂課聽到的幾個重點如下:

  1. 就工程上(或者科學上)來說,「前提」或「假設」是非常重要的。
    因為系統/protocol所有的設計/功能,都是在一開始定義好的前提下進行的
    當前提是不夠周全(甚至是錯誤的),駭客就會想盡辦法侵入你的系統。

    舉一個最簡單的例子,如果你有一個功能的假設是:
    「這個欄位使用者永遠不會輸入負數,所以程式只要處理正數和零」,
    那麼這個系統就會處於一個危險的狀態,因為當駭客察覺到這個前提後,
    就會千方百計的把負數扔進那個欄位,這時候系統可能就 crash 了。

    其實仔細想一下,這個精神可以廣泛套用到生活上的各層面,
    包括經濟、政治、法律等等,當有人可以設法讓某樣重要的前提失效,
    隨之而來的通常就是難以想像的巨大利益
  2. 環境的改變會對系統的各層面產生巨大的衝擊。
    這裡講的「環境」,也就是第一點所講的「前提」的很重要的一種,
    通常系統很容易就會針對目前設定(短時間內)要運作的環境來進行設計,
    因此隨著時間的流逝,一定要不斷的對系統進行重新修正,
    否則會漸漸的產生越來越大的漏洞。(因為環境的變化太大)

    當然另一種做法就是將老舊系統淘汰掉,重新針對現在的環境設計新的系統。

    以Internet 來說,最早期(約在上世紀60年代)第一次形成機器間可溝通的網路時,
    那時候大約只有5台機器,15個人,5個 Application (其實詳細數字我忘了XD),
    因此是 trsuted network, trusted machine, and trusted people.
    所以他們那時候壓根沒想到要注意所謂「安全性」這回事。

    據說在第一版的 Internet Protocol (RFC 791)中的最後面有提到,
    在這個 protocol 的 development中,「Security」並不列入考慮。

    當然現在的新版文件裡面都有強調 Security 了,
    不過 Steve 說看到這句話應該會 strike the very core of your soul
    想想也是沒錯,現在每天這麼大量的機密資料(金融, 個人, etc.)的傳輸,
    靠的就是當初設計時根本不考慮安全性的通訊協定(而且好老了),實在是很可怕。
  3. 愛因斯坦對「瘋狂」的定義你一再的用相同的方式重覆做同樣的事情,
    但期望做到最後會得到一個不同的結果。


    這裡要強調的是說,現在已經有各式各樣關於安全性的資源,
    告訴你怎樣的程式碼會導致 XSS / SQL Injection,
    如果不小心管理防火牆 policy /不做 update 就很容易會被入侵等等,
    但如果你還是用舊的方法在寫程式,用舊的思維管理你的網路環境,
    卻期望用舊的方法做事可以避免新型態的攻擊,那麼你就是瘋了,
    因為這是絕對不可能的事情
  4. 關於課程的主題,簡單說就是一套利用IPsec和IPv6讓員工/客戶能夠從地球上任何一個角落,安全的連線到公司內部網路的做法。其中有很多細節其實記不太清楚,
    不過可以參考他的Blog

    其中一個重要的觀念是,sadly, 對於要從 Internet 進入 Corpnet 的資料,
    必須要預設這些資料都是有害的(malicious),直到證明它們是無害的為止

    這個原則就是第一點所講的「前提」,必須要有這樣的假設,
    才有可能真正建構出一個安全的企業內網路,例如假設天真的假設所有從所謂 "trusted sources"收到的資料都是 OK 的,不另外進行檢查,
    那麼當這些 "trusted sources" 被駭客攻陷的時候,你的企業網路就準備等死了。

    另外他提到為何防火牆應該僅過濾Inbound Data,而不應該處理 Outbound Data
    大致上是說正常來講,有問題的資料都應該被擋在外面,
    因此企業內部都是安全的資料,因此內部機器間的資料傳輸應該不需要檢查,
    當然這樣講聽起來也沒錯,但是我覺得並非所有資料都會經過防火牆的檢查,
    例如員工用隨身碟或者藍芽手機來傳輸的資料等等,當然這也牽扯很廣。

    其實內建在 Windows Server 2008 裡面的防火牆就有 Inbound & Outbound Rule,
    可見在某種程度上還是需要對Outbound Data作一些管制,
    例如合理的限制沒有權限的User就不能透過他的機器對Server作一些要求等等。

 

1510 ~ 1620
課程主題:Virtualization and security: what does it mean for me? 
                - 虛擬環境架構下該如何建置資安系統【英語演說】
講師:Steve Riley

這一場還是由Steve主講,重點擺在隨著 Windows Server 2008 推出的 Hyper-V (Virtual PC 的下一代),很深入了介紹了 Hyper-V (hypervisor) 的設計理念和架構
不外乎就是架構多好多好,Hyper-V 多安全多安全等等(另外配合一些實例),
另一個重點是要打破「在虛擬化的環境下,舊有的」
因為講了一大堆細節,對virtualization又沒啥研究,因此印象不深,
就記憶所及的部分有以下幾點 (過一陣子應該可以直接抓投影片來看,超精美):

  1. 特別強調 Virtual Machine 跟 Hardware 的 Isolation。
    由於若允許虛擬層直接存取到硬體層,那麼若VM受到感染,
    可能就會對實體機器造成很大的威脅,因此實際上跟硬體間的溝通,
    主要還是透過Host系統內的Hypervisor來進行。

    另外一個重點是 Hypervisor 裡面只會有微軟自己的Code
    這段主要在講說 VMWare 的 ESX 似乎有提供 3rd Party 客製化的部分,
    Steve 是 argue 說在如此底層的原件摻雜外部的 Code,可能造成相當的危險,
    因此為了客戶的安全,微軟是不會幹這種事情低!

    不過講到後來,在 Hypervisor 的 Future Version 中,
    似乎又會開放 Interface 出來,讓虛擬層能夠直接跟硬體溝通
    目標應該是為了要提高效能,但是這樣似乎跟前面強調的 Isolation 有衝突,
    不確定到底是怎麼回事... 不過起碼目前版本的 Hypervisor 表面上聽起來很安全XD
  2. Hypervisor是RUN 在 Ring-1 (應該是吧@@),舊的 CPU 的架構中最底層是 Ring0,
    在新的CPU架構中變成多出一個Ring-1,這裡我也不太懂,等很有空再找資料看。
  3. 在虛擬化的環境中,「安全性」的各項議題跟以前都是一樣的。
    簡單說就是在攻擊 Checkpoint 這陣子推出的虛擬防火牆啦 XD ..
    似乎在 VMWare 的架構中,可以允許 VM 間彼此透過特殊 protocol 溝通,
    但是在微軟的架構中,VM間也是透過標準的網路架構來溝通,
    因此基本上每個VM只要依靠本身的防火牆+防毒軟體就可以阻絕各種惡意攻擊了,
    並不需要另外花錢建置所謂的「虛擬防火牆」。

    另外他也舉例到,從最早的 DOS 是 1Machine+1User+1AP,
    到Windows 3.1 (1Machine+1User+nAP),Windows 95+ (1Machine+nUser+nAP),
    其實都是在 fool the machine,實際上在任何一個時間點永遠只有 1User + 1AP
    因此在 Virtualization 的環境下,就是 1 Real Machine + n VM + nUser + nAP,
    只是 fool 的程度更上一層樓而已,本質上是沒甚麼差異的,
    舊有的安全性觀念和 practice 仍然適用,至於是否會衍生出新的威脅,
    就要看前面兩點所說的虛擬層的架構設計問題了。
  4. VM的好處,在於可以很方便的觀察駭客如何進行惡意攻擊。
    因為是VM (本質上是一個在 File System 中的檔案),所以掛了基本上也不太痛,
    隨時要做新的VM或者還原的effort基本上比搞一台實體機器低得多。
    因此VM也很適合拿來測試Beta版的軟體,或者開發中的系統等等。

    雖然有人會 argue 說駭客可能會讓惡意程式偵測是否處於VM的環境中,
    若判斷屬於VM則不發動攻擊等等,但是目前實際上在網路上的機器,
    根據統計可能已經有將近 1/3 都是VM,而且現在的攻擊多半是自動化+大規模
    因此透過VM來研究駭客的惡意程式仍然是有效且成本低廉的方法。

    因此,Steve 也很鼓勵 developer 利用 VM 的 sandbox 特性,
    來測試並修正自己系統中可能存在的安全性問題。
    (& 觀察駭客如何進行攻擊永遠是一件很好玩的事 XD)
  5. 只要有新的 Security Update 出來,請立刻執行修補的動作,不要等測試完畢。
    在這邊 Steve 是拿美國空軍來做例子,他說以前美國空軍的 update 總是慢一拍,
    因為每次有新的 update 出來都要在測試環境通過一系列的測試,
    等到確認沒有問題之後才會真的進行 deploy,等到完全 deploy 完,
    時間可能差距達兩週甚至一個月。後來他們覺得這樣不行,因此進行研究,
    最後發現 update 一出來就立刻進行更新,更可以有效降低被入侵的風險

    由於現在的0 Day Attack越來越多,就算在一天內就能測試完畢,
    這中間的空窗期仍然可能遭受很大的威脅,Steve 的另一個 argument 是說,
    如果裝了 update,導致你的系統掛了,那就表示你的系統是依賴在這次被解決的弱點上,所以是你的系統有問題!不是 Microsoft Update 的錯!

    我覺得這個說法是蠻有道理的,雖然可憐的developer往往是被客戶要求,
    用各種詭異的手法來完成客戶要求的功能,才會造成上了update系統就掛了。

    不過 ... 微軟以前老是喜歡不走標準,搞自己一些特殊的格式或與法,
    然後在新版的軟體中洗心革面的改走標準的路 (e.g. IE8)
    而造成一大堆舊的程式掛掉,這也是很鳥的事情 ...
  6. 按照一套標準的Hyper-V建置作法,那麼Hyper-V幾乎是牢不可破的(就是說VM掛掉不會害的Host系統也跟著死掉)。詳細步驟要看投影片,印象中包括以下幾點:

    (1) Host System should be Windows Server 2008 - Server Code.
         重點就是盡量減少 Attack Area,這台機器就全職負責Host VM即可,
         其它的功能基本上能免則免。
    (2) 該開的防火牆一定要開,公司的 Security Policy 要貫徹,
         (Windows) Update 一定要隨時保持最新等等。
    (3) 其他實在是不太記得了 .. @@"

 

1650 ~ 1800
課程主題:高效能運算平台High Performance Computing Server 2008 - 管理與部署介紹
                Advanced Overview: High Performance Computing Server 2008
講師:楊勇克

很不幸的,這位講師是道地的港仔,因此大概在開場的一分鐘內,
我和我同事兩個就瞬間體認到,普通話對他來講是很吃力的,
反過來說,他的普通話對我們來講也不是聽得相當舒爽,
再加上其實這堂課是屬於 MIS/ASE 的課程, 他講的也是非常 detail,
所以聽了十分鐘之後我們就閃了,很多人還比我們更早走哩 ~~

所以這堂課的心得就是,阿鬼阿,你還是講中文的好... (真是相當老的梗 Orz)

PS. 希望下次請香港講師來上課的話,可以全程用英文講
      這樣真的對大家都好,我覺得楊講師也是很無奈而且很努力低~~

PPS. 因為對 Steve 講課的 Style 印象太深刻了,所以就先寫好PO出來,
        晚一點再PO關於微軟SOA和 Cloud Computing的心得。

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D