關鍵詞:可信計算,主動防御,運行時防護,入侵檢測,應用程序白名單
背景
有人說Linux比Windowns安全,發展至今,這個論斷是錯誤的。Win經過多年的安全反復折磨,Win11自身的安全特性加上自帶的各種安全工具已經可以保證在個人桌面上足夠安全。Linux本身存在各種安全機制和安全工具,但由于以下各種原因,其安全現狀很不理想。
Linux使用場景的多樣化。有云環境、IOT環境、工業互聯網環境等等。每種場景下,其安全威脅和要求相差很大,很難有統一的"安全銀彈"。
在每種使用場景下,都會有對內核、系統組件的各種改動。且不管自己引入代碼的安全威脅,很多人為了方便把為數不多的安全功能直接關閉、禁用。
缺乏專業的安全人員。很多中小公司都是運維人員兼職安全工作,安全問題頻發。
專業知識的匱乏、沒有針對自己場景的安全規劃。不管什么安全問題,使用百度一搜,也不理解是否適合自己的場景,更分不清哪些是pr文章、哪些是自己可以利用的。舉個例子:零信任比較火,大小公司都上零信任。
當前情況下,“藍軍”知識、人才還是比正向安全建設的多。加上圈子文化,宣傳的單一化,形成漏洞、滲透、逆向等于安全的錯誤印象。
HIDS的缺點
在種種亂象之下,也形成了一些安全共識:賬戶及權限管理、修復漏洞、安全基線、最小攻擊面、入侵檢測、安全掃描、代碼安全、數據(傳輸)加解密等等。其中主機入侵檢測HIDS是重要的運行時安全檢測工具,但是開發和運營一套HIDS需要不菲的成本,由于場景的多樣化,使用HIDS不一定適合自己的實際場景。
HIDS是事后、事中檢測和防御工具,屬被動安全工具。
盡管有開源的HIDS工具,但不一定適合自己的場景,多數場景下都需要定制化開發,涉及到不少的開發量。
部署也需要一定的機器資源、網絡資源。
部署后也要有相應的人員運營。數據分析、誤報、漏報、應急響應都會讓運營人員累的夠嗆,還沒有成就感。
由于系統版本和開發人員的技能差異,HIDS實現上有不同的缺陷,如數據收集不全、資源使用過多,有的實現還比較容易繞過。
應用程序白名單
以上種種缺點,HIDS只適合于一定規模的公司。小公司不可能像大公司那樣有清晰的劃分、專業的團隊,就需要有比較容易使用的安全工具解決大部分安全問題。而且對于IOT設備,由于不能集中管控,安全更加復雜。需要從另一個角度思考安全防護,驗證執行代碼的簽名---應用程序白名單(NIST sp800-167)。應用程序白名單(本文中應用程序指可執行/so ELF文件、腳本、解釋性程序、webshell等):
不在白名單中的代碼不允許執行。
很多惡意目的都是以可執行程序、so庫、腳本程序、webshell等為載體完成。
也可阻止以執行代碼為載體的漏洞利用。
應用程序白名單與 HIDS的比較
HIDS的檢測規則是 "黑名單"規則, 應用程序白名單是"白名單"規則。
HIDS是檢測,應用程序白名單是防御。
HIDS是收集數據---分析數據---告警。應用程序白名單是立即阻止破壞。
不在白名單中的惡意程序,即使已經感染機器,也不能運行造成破壞。
應用程序白名單也是解決當前威脅最嚴重---勒索軟件的根本解決方案。
對各種惡意軟件的變種、未知惡意軟件、間諜軟件、rootkit等,一(軟)件防御。
強制訪問控制MC介紹
MC是內核中實現應用程序白名單的強制訪問控制,屬可信計算的一部分,是實現主動防御的主體功能。
對一個Linux系統來說, 即使有漏洞,如果不運行,不與外界交互,也是安全的。基線完整的系統,隨著與內外部的交互,就引入了各種安全問題。保證系統運行過程中的完整性,是保證安全的基礎。保證系統中執行代碼的完整性,是系統完整性的重要組成部分。MC驗證 elf可執行程序、so庫、腳本、解釋性程序的簽名,也就是說任何在應用層運行的代碼都保證來源可信。
盡管Linux系統中有selinux、apparmor、smack等,但配置比較復雜,掌握使用比較困難,在很多場景下都是關閉的。而且都沒有運行時驗證執行代碼。
MC設計和實現遵循以下原則:
簡單。容易理解,實現簡單、使用簡單。在/proc文件系統中引入接口,規則配置類似iptable規則。這樣就降低了運營人員的學習和使用難度。避免了selinux規則配置的復雜性。
高性能。不能消耗太多的資源, 而且資源消耗可視化:在/proc/kernel/mc下有MC系統消耗的cpu時間。測試來看,正常使用狀態下,cpu消耗幾乎忽略不計。
total_cost是MC系統花費的總時間,以jiffies為單位,換算成秒大約10.3秒, ?占總時間的? 1.7%。
不求功能全面。通過規劃、定制規則,滿足多數場景即可。現階段主要面向IOT設備、自己可以安裝內核的服務器、容器宿主機環境。
應用程序白名單既可以定義成應用程序的絕對路徑,也可以是應用程序的標記以適應容器云場景。當前標記是應用程序的sha256sum值。
MC系統組成
打上補丁的內核。
目錄/proc/sys/kernel/mc/下的接口。通過這些接口可以進行配置規則、查看策略,查看性能統計信息等等。
一些應用層工具,主要包含:一些簽名的工具、 接收MC系統內核日志并進行動作的精靈進程。
解釋類程序的配置規則格式。編譯性程序不需要配置,強制驗證簽名
配置規則是向 /proc/sys/kernel/mc/set_interp_rule寫入規則.?
規則格式如下:
ADD/DEL interp MAGIC/MIME/EPATH/*? [offset magic_word]/[mime_type VERIFY|SKIP]/[epath]...
動作? 解釋器路徑? 配置是[魔數/MIME/忽略路徑]的關鍵字 ? 相應配置的具體內容
ADD/DEL interp MAGIC [[offset magic_word] [offset magic_word] ... ] ? ?//給解釋器配置解釋文件的魔數
ADD/DEL interp MIME ?[mime_type VERIFY|SKIP] ? ? ? ? ? ? ? ? ? ? ? ? ? //給解釋器配置解釋文件的MIME類型
ADD/DEL interp EPATH [epath] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //給解釋器配置忽略的文件或者路徑?
ADD/DEL interp DEFAULT [ACCEPT|REJECT] ? ? ? ? //給解釋器配置默認策略
ADD/DEL interp * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //強制驗證解釋器解釋、打開的文件
上面配置命令里大寫的是關鍵字,關鍵字不區分大小寫,但一般大寫以示區別。
MC相關接口和工具
/proc/sys/kernel/mc 目錄、 /etc/mc配置文件目錄、 /usr/local/bin/mc-*工具程序、日志文件。
每部分的具體功能和使用請參考 https://github.com/z789/mc-rpm。
MC的使用要求
要求使用者充分了解自己的系統,充分了解系統上運行的軟件。哪些可以加入白名單,哪些不能,哪些是信任的軟件,哪些是不信任的軟件。
在充分了解自己場景的基礎上,能設計適合自己場景的規則,系統更安全且消耗更少的資源。
優先配置MAGIC規則,其次是MIME規則,最后是忽略路徑EPATH規則。?
EPATH盡量少使用,如果使用,盡量精確到文件。如果能設計適合自己的MIME系統,完全可以不用EPATH。
最后
網絡安全已經是國家安全的重要組成部分,每一個公民都應盡自己的義務維護國家安全。可信計算作為安全基礎理論,包含豐富的內容。而應用程序白名單是不依賴任何硬件特性,比較容易理解和使用,業界急需,且能解決大部分安全問題的機制。隨著IT的發展,安全也會出現新的問題,愿與有志中國網絡安全建設的人員共同討論、進步。
審核編輯:劉清
評論
查看更多