朱亞飛,桂寧,許強(qiáng)(國網(wǎng)合肥供電公司,安徽合肥230001)
電力工控系統(tǒng)自定義安全策略的系統(tǒng)安全研究
朱亞飛,桂寧,許強(qiáng)(國網(wǎng)合肥供電公司,安徽合肥230001)
電力系統(tǒng)的安全穩(wěn)定運(yùn)行,在國際上也一直是一個關(guān)系到社會穩(wěn)定和經(jīng)濟(jì)發(fā)展的共性問題,為適應(yīng)“互聯(lián)網(wǎng)+”和能源互聯(lián)網(wǎng)的發(fā)展,保障電力工控側(cè)的信息安全,對電力工控系統(tǒng)的的信息安全提出了更高的要求。目前電力工控系統(tǒng)大量使用類Linux操作系統(tǒng),面臨著越來越多的安全風(fēng)險。本文針對Linux系統(tǒng)面臨的安全威脅,從訪問控制的角度研究了Linux系統(tǒng)的安全防護(hù)并以LinuxSecurityModule框架為基礎(chǔ),在內(nèi)核中構(gòu)建一個訪問控制的安全模塊,攔截與仲裁特定的訪問行為,提升工控系統(tǒng)的安全性。
系統(tǒng)安全;訪問控制;安全模塊;LSM;安全框架
本文針對Linux系統(tǒng)所面臨的安全威脅,從訪問控制的角度研究與探討了Linux系統(tǒng)的安全防護(hù),采用強(qiáng)制訪問控制的方法,以LinuxSecurityModule(LSM)框架為基礎(chǔ),在內(nèi)核中構(gòu)建一個訪問控制的安全模塊,以此來攔截與仲裁特定的訪問行為[1]。通過此種方式構(gòu)建的安全模塊,既可以規(guī)范應(yīng)用程序的行為,也可以防范0-day攻擊,在系統(tǒng)補(bǔ)丁發(fā)布之前,保護(hù)系統(tǒng)資源。
針對Linux系統(tǒng)的安全防護(hù)有很多種解決方案,例如訪問控制技術(shù)、防火墻技術(shù)、入侵檢測系統(tǒng)等。在電力工控系統(tǒng)中,業(yè)務(wù)系統(tǒng)包括電力企業(yè)用于生產(chǎn)、調(diào)度、經(jīng)營、管理的各個業(yè)務(wù)應(yīng)用系統(tǒng),主要包括SCADA系統(tǒng)、EMS系統(tǒng)、電力市場交易系統(tǒng)、電能量計量系統(tǒng)、繼電保護(hù)和故障錄波信息系統(tǒng)、配網(wǎng)自動化系統(tǒng)、變電站綜合自動化系統(tǒng)等,各業(yè)務(wù)系統(tǒng)均構(gòu)建在類Linux系統(tǒng)上,并針對服務(wù)器操作系統(tǒng)按照國網(wǎng)規(guī)范進(jìn)行了等級包括,包括用戶口令設(shè)置、Iptables防火墻設(shè)置、數(shù)據(jù)備份等[2],但在用于登錄系統(tǒng)后,系統(tǒng)內(nèi)部資源特別是數(shù)據(jù)資源完全對用戶開放,有必要對用戶的訪問行為進(jìn)行控制。
訪問控制技術(shù)在保證Linux系統(tǒng)的安全性方面具有相當(dāng)重要的地位,真正做到了在系統(tǒng)內(nèi)部構(gòu)筑一道安全屏障,以系統(tǒng)中與訪問行為相關(guān)的主客體資源為關(guān)注對象,并且使用安全規(guī)則規(guī)定了主體對客體的訪問行為。
為了增強(qiáng)Linux系統(tǒng)的安全性并且克服自主訪問控制機(jī)制所帶來的不足,很多學(xué)者和研究人員已經(jīng)開始采用強(qiáng)制訪問控制思想,比較知名的研究成果有安全增強(qiáng)型Linux(SELinux)、Linux入侵檢測系統(tǒng)(LIDS)、域類型增強(qiáng)(DTE)等。2001年由Linux的創(chuàng)始人LinusTorvalds提出在Linux內(nèi)核中需要構(gòu)建一個通用的訪問控制安全框架,以可加載內(nèi)核模塊的方式,支持現(xiàn)存各種不同的訪問控制安全模塊系統(tǒng)LinuxSecurityModule(LSM)[3]。LSM框架是Linux內(nèi)核中一個通用的輕量級訪問控制框架,它作為一個載體,使得不同的訪問控制模型以可加載內(nèi)核模塊的形式表現(xiàn)出來,用戶完全可以根據(jù)需求定制自己的安全模塊,大大提高了Linux系統(tǒng)訪問控制機(jī)制的靈活性和易用性。
3.1LSM框架原理
LSM安全框架的設(shè)計需要提供一個通用、安全、簡單的設(shè)計模型,盡量滿足不同安全場景的需求,同時將對內(nèi)核的影響降低到最小,使之不影響其他不需要它的人對內(nèi)核的使用。為次LSM安全框架采用在內(nèi)核源碼中大量安置鉤子函數(shù)的方法來控制對內(nèi)核資源對象的訪問。當(dāng)用戶執(zhí)行系統(tǒng)調(diào)用時,沿著內(nèi)核原有的邏輯層層深入并且分配資源,接著進(jìn)行錯誤檢查并且經(jīng)過傳統(tǒng)自主訪問控制的檢查,在即將到達(dá)需要訪問的內(nèi)核對象之前,由LSM安全模塊的鉤子函數(shù)對當(dāng)前訪問行為進(jìn)行一個調(diào)用,此時安全模塊可根據(jù)設(shè)定好的安全策略來進(jìn)行決策,仲裁此次的訪問行為。
3.2 自定義安全策略防護(hù)需求
以SELinux為代表的一系列訪問控制安全模塊系統(tǒng)在安全策略的制定上顯得較為復(fù)雜,原生態(tài)的SELinux甚至提供了安全策略編寫的元語言標(biāo)準(zhǔn),將安全策略單獨(dú)編譯后以rpm包的形式安裝進(jìn)內(nèi)核,這類編程式的策略制定方法在準(zhǔn)確性以及成功率方面都不能得到有效保證;同時策略調(diào)整起來較為復(fù)雜。為此本次研究依據(jù)EMS系統(tǒng)管理實(shí)際需求,設(shè)計并實(shí)現(xiàn)一種簡單高效的安全策略配置方式,從文件保護(hù)、進(jìn)程保護(hù)、限制進(jìn)程能力范圍等方面來守護(hù)系統(tǒng),同時使得普通用戶(即并不具備Linux內(nèi)核專業(yè)知識的用戶)也可以成功地自主制定安全策略[4]。針對電力工控系統(tǒng)實(shí)際安全需求,主要實(shí)現(xiàn)以下防護(hù)功能:①文件系統(tǒng)保護(hù),實(shí)現(xiàn)系統(tǒng)中一些重要文件的保護(hù),如/bin/login,/etc/passwd等。②進(jìn)程保護(hù),針對系統(tǒng)中一些重要進(jìn)程的保護(hù),如提供web容器的httpd進(jìn)程,EMS進(jìn)程、SCADA主進(jìn)程及數(shù)據(jù)庫主進(jìn)程。③限制進(jìn)程的能力范圍,針對系統(tǒng)中應(yīng)用進(jìn)程權(quán)限范圍的限制,通過在LSM框架中集成capability能力機(jī)制,給指定的進(jìn)程賦予指定的能力,例如:CAP_SETUID(設(shè)置用戶UID的能力)、CAP_SETGID(設(shè)置組ID的能力)等。
3.3 自定義安全策略防護(hù)整體框架
采用基于強(qiáng)制訪問控制思想的LSM安全模塊,需要在訪問控制流程的某個關(guān)鍵點(diǎn)上,在訪問即將到達(dá)受訪資源之前進(jìn)行攔截與仲裁,如圖1所示。
圖1 自定義安全策略防護(hù)整體框架
安全模塊處于系統(tǒng)調(diào)用在內(nèi)核實(shí)現(xiàn)的關(guān)鍵點(diǎn)上,負(fù)責(zé)收集當(dāng)前訪問的行為信息,向安全策略中心進(jìn)行查詢,并且返回仲裁結(jié)果。安全模塊包括配置文件子模塊、解析子模塊以及訪問控制子模塊。其中配置文件子模塊向用戶提供安全策略的配置,它由一系列安全策略配置文件組成,可根據(jù)事先定義好的書寫規(guī)則為需要保護(hù)的對象定義安全策略。解析子模塊主要功能為解析安全策略,該部分向上提供對配置文件的解析,向下提供對訪問控制子模塊的安全信息查詢,并且不斷監(jiān)聽來自用戶空間的信號,以便當(dāng)配置文件更新時重新進(jìn)行解析。該子模塊的實(shí)現(xiàn)應(yīng)包含守護(hù)進(jìn)程,在安全模塊初始化時啟動,讀取配置文件子模塊中的安全策略配置文件,經(jīng)過解析、處理之后存儲于內(nèi)核空間,供訪問控制處理子模塊調(diào)用。訪問控制子模塊,主要功能為仲裁訪問行為。該部分主要負(fù)責(zé)安全模塊系統(tǒng)的注冊、注銷、鉤子函數(shù)的重寫等,主要依托LSM框架所提供的API進(jìn)行開發(fā)。該部分為安全模塊的決策處理部分,對訪問控制行為的判定均在此處產(chǎn)生。三個子模塊直接互相協(xié)作,實(shí)現(xiàn)資源訪問的安全控制。
3.4 配置文件子模塊實(shí)現(xiàn)
安全模塊以文件全路徑名作為保護(hù)標(biāo)識進(jìn)行識別,從三個方面對文件進(jìn)行保護(hù),分別是讀、寫、執(zhí)行,同時根據(jù)最小授權(quán)原則,針對以上每一項(xiàng)操作都規(guī)定適用者集合,即允許進(jìn)行此項(xiàng)操作的用戶集合,以用戶登錄的用戶名或者系統(tǒng)內(nèi)部的UID進(jìn)行標(biāo)識,適用者集合以外的用戶無權(quán)進(jìn)行以上三種操作。同時針對文件資源的保護(hù)定義為如下形式:文件全路徑名映射到三種操作,每一種操作映射一組授權(quán)對象。
進(jìn)程保護(hù)所涉及的受保護(hù)資源為系統(tǒng)級的服務(wù)進(jìn)程以及業(yè)務(wù)系統(tǒng)進(jìn)程,如SCADA后臺進(jìn)程、實(shí)時數(shù)據(jù)庫等,以受保護(hù)進(jìn)程的進(jìn)程名稱作為保護(hù)標(biāo)識進(jìn)行識別,從進(jìn)程的殺死、暫停、重啟三個方面進(jìn)行保護(hù),針對每項(xiàng)操作規(guī)定適用者集合,并在保護(hù)配置文件中進(jìn)行配置。
3.5 解析子模塊實(shí)現(xiàn)
解析子模塊初始化時啟動一個內(nèi)核進(jìn)程,在整個安全模塊運(yùn)行的過程中,該守護(hù)進(jìn)程一直存在,實(shí)現(xiàn)兩項(xiàng)工作:①對配置文件進(jìn)行解析;②不斷監(jiān)聽來自用戶空間的信號。配置文件解析將用戶對安全的配置轉(zhuǎn)換成安全模塊可識別的元素,再共享給訪問控制處理子模塊;同時當(dāng)配置文件發(fā)生變動時(例如用戶重新配置某些選項(xiàng)),守護(hù)進(jìn)程重新對配置文件進(jìn)行解析,更新安全策略。
3.6 訪問控制子模塊設(shè)計
訪問控制子模塊負(fù)責(zé)攔截訪問行為以及對訪問行為進(jìn)行安全檢查。攔截訪問行為主要依靠LSM安插在內(nèi)核中的鉤子函數(shù)完成,當(dāng)系統(tǒng)中主體對客體進(jìn)行訪問時,在訪問到達(dá)客體之前,鉤子函數(shù)會攔截此次訪問,引導(dǎo)其進(jìn)入訪問控制子模塊接受安全檢查;在對訪問行為進(jìn)行安全檢查之前,還需收集此次訪問的行為信息,一般是從進(jìn)程上下文或者相關(guān)結(jié)構(gòu)體中提取諸如進(jìn)程UID、進(jìn)程PID以及欲進(jìn)行的操作等信息,然后調(diào)用解析子模塊中的判斷函數(shù),將提取的信息跟解析之后的安全策略信息比較匹配,得出最終的安全檢查結(jié)果,進(jìn)而放行或阻止當(dāng)前的訪問行為。
以文件訪問open系統(tǒng)調(diào)用為例,系列經(jīng)過一系列調(diào)用流程后,最終進(jìn)入inode_permission函數(shù),該函數(shù)正是LSM安全框架安插在open系統(tǒng)調(diào)用的內(nèi)核實(shí)現(xiàn)函數(shù)中的鉤子函數(shù),定義為int(*inode_permission)(structinode*inode,intmask,struct nameidata*nd),通過實(shí)現(xiàn)該鉤子函數(shù)并注冊后可實(shí)現(xiàn)用戶訪問文件、訪問進(jìn)程時的權(quán)限控制。具體實(shí)現(xiàn)實(shí)例如下:
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位操作系統(tǒng),2.6.20版本的Linux操作系統(tǒng)內(nèi)核上對進(jìn)程保護(hù)進(jìn)行測試,啟動受保護(hù)的excp進(jìn)程,當(dāng)bo用戶使用./exep命令去嘗試執(zhí)行該可執(zhí)行文件時,由于在配置文件中沒有賦予bo用戶對/home/bo/Desktop/exep文件的執(zhí)行操作權(quán)限,執(zhí)行操作被系統(tǒng)拒絕。
本文介紹了訪問控制技術(shù)在加強(qiáng)Linux系統(tǒng)安全性方面的用途,并以LinuxSecurityModule框架為基礎(chǔ),在內(nèi)核中構(gòu)建一個訪問控制的安全模塊,攔截與仲裁特定的訪問行為,通過實(shí)際測試,驗(yàn)證了自定義策略安全防護(hù)模塊的有效性,提升了工控系統(tǒng)的安全性。
[1]王靜.SELinux的訪問控制模型的分析與研究.計算機(jī)安全,2008.
[2]林紳文.基于LSM框架的安全增強(qiáng)型文件系統(tǒng)研究.北京郵電大學(xué)學(xué)報,2008.02.
[3]陳汗章.訪問控制框架及其在Linux中的應(yīng)用研究.計算機(jī)應(yīng)用研究,2007.
[4]王成耀.基于LsM的安全訪問控制實(shí)現(xiàn).計算機(jī)工程,2005.
TM769
A
2095-2066(2016)30-0035-02
2016-10-12
朱亞飛(1988-),男,安徽肥東人,工程師,碩士研究生,研究方向?yàn)樾畔踩?/p>
桂寧(1976-),女,江蘇南京人,工程師,本科,研究方向?yàn)樾畔踩?/p>
許強(qiáng)(1978-),男,江蘇南京人,工程師,本科,研究方向?yàn)樾畔⒐芾怼?/p>