朱亞飛,桂寧,許強(國網合肥供電公司,安徽合肥230001)
電力工控系統自定義安全策略的系統安全研究
朱亞飛,桂寧,許強(國網合肥供電公司,安徽合肥230001)
電力系統的安全穩定運行,在國際上也一直是一個關系到社會穩定和經濟發展的共性問題,為適應“互聯網+”和能源互聯網的發展,保障電力工控側的信息安全,對電力工控系統的的信息安全提出了更高的要求。目前電力工控系統大量使用類Linux操作系統,面臨著越來越多的安全風險。本文針對Linux系統面臨的安全威脅,從訪問控制的角度研究了Linux系統的安全防護并以LinuxSecurityModule框架為基礎,在內核中構建一個訪問控制的安全模塊,攔截與仲裁特定的訪問行為,提升工控系統的安全性。
系統安全;訪問控制;安全模塊;LSM;安全框架
本文針對Linux系統所面臨的安全威脅,從訪問控制的角度研究與探討了Linux系統的安全防護,采用強制訪問控制的方法,以LinuxSecurityModule(LSM)框架為基礎,在內核中構建一個訪問控制的安全模塊,以此來攔截與仲裁特定的訪問行為[1]。通過此種方式構建的安全模塊,既可以規范應用程序的行為,也可以防范0-day攻擊,在系統補丁發布之前,保護系統資源。
針對Linux系統的安全防護有很多種解決方案,例如訪問控制技術、防火墻技術、入侵檢測系統等。在電力工控系統中,業務系統包括電力企業用于生產、調度、經營、管理的各個業務應用系統,主要包括SCADA系統、EMS系統、電力市場交易系統、電能量計量系統、繼電保護和故障錄波信息系統、配網自動化系統、變電站綜合自動化系統等,各業務系統均構建在類Linux系統上,并針對服務器操作系統按照國網規范進行了等級包括,包括用戶口令設置、Iptables防火墻設置、數據備份等[2],但在用于登錄系統后,系統內部資源特別是數據資源完全對用戶開放,有必要對用戶的訪問行為進行控制。
訪問控制技術在保證Linux系統的安全性方面具有相當重要的地位,真正做到了在系統內部構筑一道安全屏障,以系統中與訪問行為相關的主客體資源為關注對象,并且使用安全規則規定了主體對客體的訪問行為。
為了增強Linux系統的安全性并且克服自主訪問控制機制所帶來的不足,很多學者和研究人員已經開始采用強制訪問控制思想,比較知名的研究成果有安全增強型Linux(SELinux)、Linux入侵檢測系統(LIDS)、域類型增強(DTE)等。2001年由Linux的創始人LinusTorvalds提出在Linux內核中需要構建一個通用的訪問控制安全框架,以可加載內核模塊的方式,支持現存各種不同的訪問控制安全模塊系統LinuxSecurityModule(LSM)[3]。LSM框架是Linux內核中一個通用的輕量級訪問控制框架,它作為一個載體,使得不同的訪問控制模型以可加載內核模塊的形式表現出來,用戶完全可以根據需求定制自己的安全模塊,大大提高了Linux系統訪問控制機制的靈活性和易用性。
3.1LSM框架原理
LSM安全框架的設計需要提供一個通用、安全、簡單的設計模型,盡量滿足不同安全場景的需求,同時將對內核的影響降低到最小,使之不影響其他不需要它的人對內核的使用。為次LSM安全框架采用在內核源碼中大量安置鉤子函數的方法來控制對內核資源對象的訪問。當用戶執行系統調用時,沿著內核原有的邏輯層層深入并且分配資源,接著進行錯誤檢查并且經過傳統自主訪問控制的檢查,在即將到達需要訪問的內核對象之前,由LSM安全模塊的鉤子函數對當前訪問行為進行一個調用,此時安全模塊可根據設定好的安全策略來進行決策,仲裁此次的訪問行為。
3.2 自定義安全策略防護需求
以SELinux為代表的一系列訪問控制安全模塊系統在安全策略的制定上顯得較為復雜,原生態的SELinux甚至提供了安全策略編寫的元語言標準,將安全策略單獨編譯后以rpm包的形式安裝進內核,這類編程式的策略制定方法在準確性以及成功率方面都不能得到有效保證;同時策略調整起來較為復雜。為此本次研究依據EMS系統管理實際需求,設計并實現一種簡單高效的安全策略配置方式,從文件保護、進程保護、限制進程能力范圍等方面來守護系統,同時使得普通用戶(即并不具備Linux內核專業知識的用戶)也可以成功地自主制定安全策略[4]。針對電力工控系統實際安全需求,主要實現以下防護功能:①文件系統保護,實現系統中一些重要文件的保護,如/bin/login,/etc/passwd等。②進程保護,針對系統中一些重要進程的保護,如提供web容器的httpd進程,EMS進程、SCADA主進程及數據庫主進程。③限制進程的能力范圍,針對系統中應用進程權限范圍的限制,通過在LSM框架中集成capability能力機制,給指定的進程賦予指定的能力,例如:CAP_SETUID(設置用戶UID的能力)、CAP_SETGID(設置組ID的能力)等。
3.3 自定義安全策略防護整體框架
采用基于強制訪問控制思想的LSM安全模塊,需要在訪問控制流程的某個關鍵點上,在訪問即將到達受訪資源之前進行攔截與仲裁,如圖1所示。

圖1 自定義安全策略防護整體框架
安全模塊處于系統調用在內核實現的關鍵點上,負責收集當前訪問的行為信息,向安全策略中心進行查詢,并且返回仲裁結果。安全模塊包括配置文件子模塊、解析子模塊以及訪問控制子模塊。其中配置文件子模塊向用戶提供安全策略的配置,它由一系列安全策略配置文件組成,可根據事先定義好的書寫規則為需要保護的對象定義安全策略。解析子模塊主要功能為解析安全策略,該部分向上提供對配置文件的解析,向下提供對訪問控制子模塊的安全信息查詢,并且不斷監聽來自用戶空間的信號,以便當配置文件更新時重新進行解析。該子模塊的實現應包含守護進程,在安全模塊初始化時啟動,讀取配置文件子模塊中的安全策略配置文件,經過解析、處理之后存儲于內核空間,供訪問控制處理子模塊調用。訪問控制子模塊,主要功能為仲裁訪問行為。該部分主要負責安全模塊系統的注冊、注銷、鉤子函數的重寫等,主要依托LSM框架所提供的API進行開發。該部分為安全模塊的決策處理部分,對訪問控制行為的判定均在此處產生。三個子模塊直接互相協作,實現資源訪問的安全控制。
3.4 配置文件子模塊實現
安全模塊以文件全路徑名作為保護標識進行識別,從三個方面對文件進行保護,分別是讀、寫、執行,同時根據最小授權原則,針對以上每一項操作都規定適用者集合,即允許進行此項操作的用戶集合,以用戶登錄的用戶名或者系統內部的UID進行標識,適用者集合以外的用戶無權進行以上三種操作。同時針對文件資源的保護定義為如下形式:文件全路徑名映射到三種操作,每一種操作映射一組授權對象。
進程保護所涉及的受保護資源為系統級的服務進程以及業務系統進程,如SCADA后臺進程、實時數據庫等,以受保護進程的進程名稱作為保護標識進行識別,從進程的殺死、暫停、重啟三個方面進行保護,針對每項操作規定適用者集合,并在保護配置文件中進行配置。
3.5 解析子模塊實現
解析子模塊初始化時啟動一個內核進程,在整個安全模塊運行的過程中,該守護進程一直存在,實現兩項工作:①對配置文件進行解析;②不斷監聽來自用戶空間的信號。配置文件解析將用戶對安全的配置轉換成安全模塊可識別的元素,再共享給訪問控制處理子模塊;同時當配置文件發生變動時(例如用戶重新配置某些選項),守護進程重新對配置文件進行解析,更新安全策略。
3.6 訪問控制子模塊設計
訪問控制子模塊負責攔截訪問行為以及對訪問行為進行安全檢查。攔截訪問行為主要依靠LSM安插在內核中的鉤子函數完成,當系統中主體對客體進行訪問時,在訪問到達客體之前,鉤子函數會攔截此次訪問,引導其進入訪問控制子模塊接受安全檢查;在對訪問行為進行安全檢查之前,還需收集此次訪問的行為信息,一般是從進程上下文或者相關結構體中提取諸如進程UID、進程PID以及欲進行的操作等信息,然后調用解析子模塊中的判斷函數,將提取的信息跟解析之后的安全策略信息比較匹配,得出最終的安全檢查結果,進而放行或阻止當前的訪問行為。
以文件訪問open系統調用為例,系列經過一系列調用流程后,最終進入inode_permission函數,該函數正是LSM安全框架安插在open系統調用的內核實現函數中的鉤子函數,定義為int(*inode_permission)(structinode*inode,intmask,struct nameidata*nd),通過實現該鉤子函數并注冊后可實現用戶訪問文件、訪問進程時的權限控制。具體實現實例如下:
inttest_inode_permission(structinode*inode,intmask,structnameidata*nd)
{
if(!file_search(inode)){
if(!file_judge(inode,current->uid,char*operation))
return0;
else{
return-EACCES;
}
}
elsereturn0;
}
在CentOs6.732位操作系統,2.6.20版本的Linux操作系統內核上對進程保護進行測試,啟動受保護的excp進程,當bo用戶使用./exep命令去嘗試執行該可執行文件時,由于在配置文件中沒有賦予bo用戶對/home/bo/Desktop/exep文件的執行操作權限,執行操作被系統拒絕。
本文介紹了訪問控制技術在加強Linux系統安全性方面的用途,并以LinuxSecurityModule框架為基礎,在內核中構建一個訪問控制的安全模塊,攔截與仲裁特定的訪問行為,通過實際測試,驗證了自定義策略安全防護模塊的有效性,提升了工控系統的安全性。
[1]王靜.SELinux的訪問控制模型的分析與研究.計算機安全,2008.
[2]林紳文.基于LSM框架的安全增強型文件系統研究.北京郵電大學學報,2008.02.
[3]陳汗章.訪問控制框架及其在Linux中的應用研究.計算機應用研究,2007.
[4]王成耀.基于LsM的安全訪問控制實現.計算機工程,2005.
TM769
A
2095-2066(2016)30-0035-02
2016-10-12
朱亞飛(1988-),男,安徽肥東人,工程師,碩士研究生,研究方向為信息安全。
桂寧(1976-),女,江蘇南京人,工程師,本科,研究方向為信息安全。
許強(1978-),男,江蘇南京人,工程師,本科,研究方向為信息管理。