嵌入式Linux系統安全性問題的解決

目前很多運行在局域網甚至Internet上的產品如雨後春筍般涌向市場,比如:智能家居、安卓手機等。這些產品在方便用戶的同時也出現一些安全問題,系統置於網絡上相當於暴露給所有人,故對嵌入式產品安全性研究刻不容緩。嵌入式產品由於尺寸、成本的約束註定不可能從硬件部分提供更多的安全措施,故提升安全性重點應考慮Linux內核。

嵌入式Linux系統安全性問題的解決

  1嵌入式Linux系統存在的安全問題

開源的Linux內核無論在功能上或性能上都有很多優點,但Linux內核屬於開源項目,缺少提供商的安全保證,所以需要使用者最大限度地提升系統的安全性。根據實際情況裁剪Linux內核,並採取適當的安全措施可提升系統的安全性。掌握Linux核心技術、配合先進的安全模型、增強其安全性進而研發安全的操作系統非常有必要。Linux的安全性問題從機制角度可以有以下幾點:

(1) Linux系統訪問控制。Linux系統主流發行版本的訪問控制屬於自主訪問控制;自主訪問控制控制模式任何一個活動主體對應用戶標識和組標識。顯然自主訪問控制模式的問題是忽略了用戶的角色、程序可信性等安全信息,故不能提供有效的安全性保障。

(2) Linux系統管理。Linux系統中用戶可以分爲兩類,一類是普通用戶,另一類是管理員用戶。Linux系統管理員用戶擁有系統所有權限,包括用戶管理、設備管理、審計管理和安全管理等;這樣方便了管理員管理,易於用戶操作,但是違背了“最小特權”管理原則。Linux系統的安全性只是建立在管理員必須正確設置系統功能、且不被冒充和不存在安全漏洞等一系列假設的基礎上。顯而易見這樣的系統存在巨大的風險,假如系統管理員被非法控制,系統將沒有安全性可言。

(3) Linux系統日誌。Linux系統中的日誌功能從設計到實現不是以系統安全爲目標而是以內核調試爲目的;此與系統安全審計有很大差距:第一,缺乏資源訪問方面的記錄;第二,不能詳細記錄系統發生的事件;最後,缺少必要數據分析與警告。

由此可見,嵌入式Linux內核自身的安全功能相當薄弱,對於安全性要求比較高的產品,則需要提高Linux內核的安全性。

  2安全性問題解決方案

提升Linux安全性所採取措施主要有在Linux系統內核使用安全模塊和安裝必要的防火牆,還有一些嵌入式特有的安全措施。

(1) 使用安全模塊LSM (Linux Security Modules)。2001年一次Linux內核峯會中美國國家安全局推出了他們的安全增強Linux(SELinux),與此同時Linux內核創始人提出,Linux內核作爲一個開放的系統的確應該有一個通用的安全訪問控制框架,不過也提出應該可以使用加載內核模塊的方式來支持不同的安全模塊, Linux內核的安全模塊從此產生。下面可以通過圖1來了解一下安全模塊工作原理。

從圖1中可知,Linux安全模塊工作原理是通過使用函數回調的方法,系統根據用戶配置來判斷內核對象的訪問。系統運行進程執行系統調用時找到I節點並分配相關資源,就在即將訪問相應的對象時,系統立即調用Linux安全模塊提供的函數,對安全模塊提出疑問:“是否允許訪問該對象?”,安全模塊根據用戶設定的安全策略進行判斷該次訪問是否具有相應的權限。在安全模塊裏可以調用不同的`安全模塊,使用較多的有SELinux 、Smack (Simplified Mandatory Access Control Kernel)、TOMOYO等。

SELinux安全模塊。該模塊的使用使得系統由原來的自主訪問機制改變爲強制訪問控制機制。但是SELinux安全模塊並不適用於處理能力有限嵌入式產品,原因有以下幾點:首先,SELinux模塊的細粒度訪問控制造成安全策略的複雜性,例如:Fedora發行版本里就超過800 000行,如此複雜的安全策略肯定不能應用於嵌入式系統;其次,在使用SELinux模塊後,若要運行某一個進程時,需要給出所有要調用函數的權限才能運行,在本身資源短缺的嵌入式產品裏非常不適用;另外一點,當系統安全策略頻繁改變時,要將文件系統重新設置且重新裝載到內核裏,嵌入式文件系統一般都燒寫在FLASH中,需要重新燒寫文件系統,這對於最終用戶是不可能實現的事。使用SELinux模塊後,要求系統支持文件擴展屬性,而嵌入式系統經常採用的文件系統有CRAMFS、JFFS2等,這些文件系統本身不支持屬性擴展。由此可見,SELinux安全模塊不適合在嵌入式產品中使用。

Smack安全模塊的原理與SELinux模塊一樣,同樣是強制訪問控制的一個實現,與SELinux不同的是使用簡單的配置策略來代替配置複雜的SELinux。因爲Smack安全模塊基於標籤實現強制訪問控制,故需要支持標籤的文件系統支持。使用Smack安全模塊需要完成3部分工作:配置修改Linux內核支持Smack、設置Smack腳本以及用戶空間應用程序的修改。基於標籤實現強制訪問的Smack模塊需要修改根文件系統,所以Smack不適合作爲嵌入式系統的安全模塊。

TOMOYO安全模塊是基於路徑名的強制訪問控制安全模塊,由NTT DATA公司開發和維護。MOTOYO 身材較小,只有100K左右代碼、300K策略文件,是一個典型的基於路徑面向行爲的系統分析者和保護者,適合在嵌入式產品使用。MOTOYO安全模塊擁有圖形界面編輯策略工具,方便用戶編輯策略,除此之外還支持友好的學習模式與強制模式。