你之因此生活在光明之中,是由於有人阻擋了黑暗

閱讀字數:1699 | 6分鐘閱讀html


https://v.qq.com/x/page/t05573lwe73.htmldocker


***檢測面臨挑戰

***檢測主要分爲海量數據的實時獲取和實時分析兩方面。安全


海量數據的實時獲取主要的思路是經過在操做系統上放一個安全agent,頻繁地進行掃描以獲取進程執行信息或者是網絡鏈接信息。但這種思路會面臨幾個問題。性能優化


第一個是存在死角。由於考慮到性能開銷和對業務性能的影響,因此不可能一直掃描,仍是存在間斷。有一些執行時間比較短的進程或網絡鏈接的信息掃描不到。這就存在監控死角留下安全隱患。服務器


第二個問題是性能開銷。如今的安全agent在掃描的時候仍是會對一些業務形成影響,有時就會收到業務的投訴。只能把投訴的業務加入白名單,之後就不掃描這個業務了。但這樣是存在安全隱患的。網絡


第三個問題是如何適應愈來愈複雜的業務環境。最先的時候,全部業務都是位於物理機上,後來雲計算興起,引入了服務器虛擬化。每個虛擬機上放一個agent。近幾年虛擬化大火,docker在咱們公司內部平臺用得比較多,它的使用模式是比較複雜的。有些docker子集是有獨立IP的,有些則沒有。容器虛擬化多是一個輕量級的虛擬化,一臺物理機上有可能運行很是多的docker子集。每一個docker子集裏放一個安全agent,這些安全agent都在進行掃描,性能開銷是很是大的。數據結構


當前***檢測的海量實時獲取面臨的這些問題,咱們的解決思路是從操做系統層面創建一個***監控信息獲取框架。架構

新的***檢測框架app

基本思路很簡單,從操做系統層面的***信息獲取支持和相關信息,而後把這些信息傳送給安全那邊的數據模塊。框架


它的子進程的好處首先是全面無死角,其次是獲得了操做系統層面的支持,業務環境適應性好。


面臨挑戰有性能開銷和海量現網業務的支持。對於現網業務來講,部分開放內核模塊支持,部分不開放內核模塊支持。

技術路線

技術路線分爲兩條,一條是內核熱補丁,針對有內核模塊支持系統。另外一條是C庫劫持和進程熱補丁,針對無內核模塊支持系統。


技術路線一:內核&內核熱補丁(1)總體架構

圖片

技術路線一:內核&內核熱補丁(2)

考慮到內核熱補丁這塊,ftrace的好處在於它能夠動態地在指定函數上添加須要的鉤子函數。可是對咱們來講,ftrace僅僅是在工做開頭能添加鉤子函數,對咱們來講是不夠的。


Kpatch是基於ftrace的框架來實現的。每作一次新舊函數的替換都會執行到ftrace一系列的框架代碼,包含了幾百條指令。對於一些調用很是頻繁的場景下,性能開銷是很是高的。


咱們本身寫了tpatch內核熱補丁的框架,它相對於Kpatch來講更加簡化。


技術路線一:內核&內核熱補丁(3)

經過以上方法咱們解決了數據獲取的問題,以後要把數據傳送給數據分析模塊。直接的思路就是開闢一片數據緩衝區,讀者和寫者經過數據緩衝區進行數據的傳送。

圖片

這裏面臨的問題是緩衝區不能加鎖,一旦加鎖,性能開銷就很是大。在五個性能並行,對一個個緩衝區進行操做的狀況下,由於鎖競爭致使的CPU性能開銷就在百分之十以上。這個開銷太大業務不能忍受,因此數據的緩衝區必須是無鎖的。


這個緩衝區可能的鎖競爭主要來源於三個方面,第一是寫者方面的競爭,第二讀者之間的競爭,第三是寫者與讀者之間的競爭。咱們用一個緩衝區只面向一個讀者就能夠解決讀者間的競爭問題。寫者的競爭在內核裏面用per-cpu的數據結構以解決這個問題。讀者與寫者間的競爭能夠利用一個經典的數據結構ringbuffer來消除。


技術路線一:內核&內核熱補丁(4)熱補丁性能優化


圖片

技術路線一:內核&內核熱補丁(5)

在性能開銷方面的優化,引用計數優化,開銷下降3%。代碼優化,開銷下降了2%。


技術路線二:C庫劫持&進程熱補丁(1) C庫劫持

圖片


技術路線二:C庫劫持&進程熱補丁(2)進程熱補丁

圖片

操做系統安全加強將來展望

身份認證:內核簽名、模塊簽名和進程簽名。

訪問控制:取消root的徹底權限,權限細分,關鍵數據訪問受限。

密鑰管理:密鑰分發和管理框架與操做系統緊密結合,密鑰由內核管理並據此進行相關認證,應用層接觸不到私鑰。

相關文章
相關標籤/搜索