談談物理伺服器的安全

發表於2015-10-18

隨著虛擬技術與雲端計算的火熱,越來越多的人將注意力放在了虛擬機器與虛擬網路的安全上面。當然確實也是目前一個趨勢與發展方向,但虛擬化的安全與物理裝置的安全就如同一個天平的兩端,過於重視一端就可能遺漏了另一端的問題。今天我想聊聊物理伺服器層面的安全問題。

為什麼大家容易忽視物理伺服器的安全問題?

我認為有以下幾個可能的原因:

  • 伺服器裝置通常放置於相對安全的機房當中,通常在企業防火牆後面
  • 能接觸到裝置的人員比較有限
  • 對於物理裝置上發現的問題通常使用者無法解決,或是無法通過安裝防禦軟體來解決
  • 不容易被攻擊,畢竟這個時代能攻擊到物理裝置的方式遠沒攻擊虛擬裝置的多

所以使用者不關心,運維人員也不關心,廠家也省事。但這樣真的沒問題了嗎?顯然不是。俗話說“外賊易防,家賊難防”,假設某個運維人員偷偷的植入了一段BIOS啟動程式碼,可以說市面上所有的安全軟體都是無法檢測出來的。這也是為什麼要有Secure Boot技術,一種在系統的啟動階段進行保護,使得作業系統執行在一個可信的物理環境上的技術。這裡只舉一個例子來說明物理裝置的安全問題,儘管沒那麼明顯但是一般都是非常嚴重並且難以處理的問題。

物理伺服器安全的方方面面

大家都知道伺服器有一部分部件與PC相似,如CPU,記憶體,磁碟,網路卡,顯示卡,風扇等,但還有一部分是特有的,如感測器,PSU,RAID卡,韌體晶片等。另外伺服器也有一些內嵌的軟體模組,如BIOS,BMC以及廠家自己研發的嵌入式軟體。所有的這些都可能存在漏洞問題,如記憶體的Row Hammer漏洞,CPU的S3讀取PCH模組指令碼未被保護問題等。還有一部分涉及到的是嵌入式軟體的問題,通常伺服器是需要以24×7的強度來執行的,這對伺服器的穩定性提出了很高的要求。因此伺服器內有大量的感測器來監視伺服器的健康狀態,如溫度感測器,風扇感測器,PSU感測器等,所以廠家通常會開發一些嵌入式軟體來監控這類的裝置,這裡最出名的莫過於板載控制器(BMC)了,基本上主流兩路以上的伺服器都會具有BMC。此外還有其他外圍的裝置如顯示卡,RAID卡,網路卡等板卡裝置。在進行更細緻的分析前,請大家看一下與伺服器安全相關的全景圖:


物理伺服器安全之硬體部分

對於硬體層面的安全問題主要集中在可信計算方面,建立一個安全可信的執行環境是可信計算的主要目的。TPM安全晶片是目前業界的主流解決方案,也是很多上層安全技術的基礎。它解決以下幾個問題:

  • 儲存,管理祕鑰,如BIOS密碼,硬碟加密密碼等
  • 生成祕鑰,使用不同的加密演算法來建立
  • 磁碟加密,為上層提供磁碟加密功能,如Windows的Bitlocker
  • 以及其他加解密相關的支援,如生成隨機數

TPM本質上是一個安全的協處理器。伺服器上CPU眾多,為什麼還需要一個這樣的協處理器呢?加解密工作是一個非常耗CPU的任務,如果你的程式裡有進行加解密運算,你一定要警惕它的效能問題。記得早前的一個做信用卡卡號處理的專案,當資料量少時一切正常,一旦資料量大到一定程度,CPU就是100%。當時我們分析了各種原因,有人說是記憶體太小導致頻繁磁碟交換,有人說執行緒太多,任務切換過於頻繁等。最後拿效能剖析工具一查,才知道是加解密模組吃掉了所有CPU計算資源。因此對於伺服器來說,儘管CPU很多但是還是需要一個專業幹加解密的硬體裝置。

說到TPM就不得不提TCG(可信計算組),這是一個由主流裝置生產廠商發起的組織,主要的目的是解決當時業界已經面臨的個人計算平臺安全問題。具體的歷史可以檢視維基百科,但也不是所有人都認同可信計算的,主要的爭論點是採用可信計算方案相當於個人的資訊對這些廠家來說是公開的,也就是一個對廠家公開的後門。所以在國內,政府的要求是採用TCM而不是TPM,TCM與TPM功能類似,唯一不同是加密演算法是採用國內研究機構開發的。安全嘛,只有自己人才可信:)。

物理伺服器安全之嵌入式軟體部分

說起來軟體程式面臨的安全問題基本都很類似,不管是嵌入式軟體,應用軟體,web系統,你所面臨的安全問題大多有以下幾種:

  • 加解密演算法是否足夠安全
  • 網路連線是否安全
  • 數字簽名與證書相關的安全
  • 儲存是否安全
  • 程式越界問題
  • 注入攻擊問題
  • 程式碼漏洞問題
  • 許可權控制問題

BIOS作為現代計算機的基礎軟體,幾十年來地位就沒變過。但與它相關的技術倒是發生了一些變化,從早期的彙編,C,EFI到現在的UEFI,從功能角度來說豐富了不少。嵌入式軟體終於也可以畫出一些相對漂亮的介面來給使用者了。也正是由於它比較基礎對於它的保護是必不可少的,瞭解病毒歷史的讀者可能還記得90年代的CIH病毒,這個病毒影響意義深遠。而Secure boot技術的目的就是讓BIOS在引導系統啟動的時候具備足夠安全性。看一下Secure Boot的過程:

由於BIOS程式對外沒有網路訪問的能力,所以安全問題相對來說簡單一些,主要是UEFI的漏洞問題。

而BMC就不一樣了,這個功能強大的傢伙問題也是最多的。可以這麼說物理伺服器涉及到的安全問題有一大半是出在BMC身上。你可能會問都有哪些問題?我只能說幾乎上面提到的所有問題,因為它就是一個用於處理硬體問題的web應用。BMC有哪些功能,看看這張截圖:

它使用一個微型的嵌入式Linux核心,並通常帶有一個web棧。BMC對外支援多種協議,如HTTP,IPMI,SNMP,CIM等等。而這裡面用的最多的,並且安全性最差的就是IPMI協議了。IPMI協議是一個事實上的伺服器管理標準協議,幾乎所有的伺服器都會支援它(當然有的伺服器如果沒有BMC,通常也會有AMT技術做替代)。而被廣為詬病的是IPMI協議中RAKP使用的SHA1進行祕鑰雜湊運算問題,這是一個已知的並且廣泛存在的問題。我們只能通過禁用IPMI的遠端訪問來繞過它,但是如果沒有遠端的能力,對於具有成千上萬臺伺服器的資料中心來說,單單是關機/重啟這樣簡單的操作就是一個惡夢。因此各大廠商採用HTTP協議來替代IPMI的遠端訪問(有些廠商採用CIM介面,但是CIM的相容性是很大的問題)。那麼引入HTTP就引入了所有HTTP可能遇到的安全問題,如中間人攻擊,證書偽造,跨站攻擊,指令碼注入,DDOS等,安全問題也變得日益嚴峻。為了解決這些問題,引入HTTPS是最好的方案。在大多數情況下,HTTPS可以避免中間人與證書偽造等問題。說到這裡又不得不提OpenSSL,作為業內著名的開源安全庫已經有很長的歷史了。它是實現SSL的主要模組,也可以說HTTPS實現的基礎。但是在最近的一年裡OpenSSL接連報出幾個大的漏洞問題,如Heart Bleeding,Freak Attack等,給廣大廠商和使用者帶來了很多麻煩。雖然OpenSSL的補丁不斷,但是官方已經宣告在2015年年底停止對0.9.8分支的支援,2016年底停止對1.0.0和1.0.1分支的支援。這是好事也是壞事,好事是我們不需要再為舊版本漏洞擔憂了,而壞事是你不得不為升級庫比進行大量測試。

BIOS與BMC是伺服器上嵌入式軟體的兩個主要部分,當然還有其他的如廠商自行研發的部署軟體等,還有驅動的問題等不一而足。另外遇到的挑戰是通常更新這些補丁需要重啟伺服器,而對於需要持續執行的伺服器來說重啟是比較困難的。因此現實的情況是很多伺服器都是帶著大量的安全漏洞在跑的,幸運的是伺服器管理網路與業務網路是物理隔離的,被外部攻擊的可能性比較低。

物理伺服器安全之其他內容

從概覽圖裡可以看出來,與伺服器安全相關的內容有很多。如標準,美國有美國的標準,中國有中國的標準。通常來說美國的標準比中國的全面而且嚴格一些,如美國標準對韌體更新就有明確的安全規定。所以大家在採購伺服器的時候可以詢問一下所符合的標準。另外還有測試方法與工具,測試原則,漏洞管理等。目前來說對於物理伺服器安全問題的解決,還是以廠家提供的補丁為主,建議使用者對嚴重的問題進行及時的更新,並密切關注各個廠家的安全響應頁面(可以搜尋PSIRT關鍵字來了解)。

最後,個人覺得安全問題歸根到底還是人的意識問題。單有工具沒有安全意識也是白扯,就像一個全副武裝戰士,掉進敵人挖的坑裡也是沒救的。所以提高安全防範意識是人們的首要任務。

  • 如果是開發團隊,引入安全驗證過程,採用漏洞掃描工具Nessus,AppScan進行安全檢測。
  • 如果是運維團隊,關注業界安全漏洞網站,採用工具進行定期的掃描,增加審計過程
  • 如果是個人使用者,除了安裝防毒軟體外,就是不要登陸不瞭解的網站。下載程式時注意網站提供的雜湊碼,這是防止程式被篡改的關鍵。

相關文章