陳最+鐘世敏+程廣明
摘 要
可信云評(píng)估是國(guó)內(nèi)首個(gè)獲得市場(chǎng)高度認(rèn)可的云計(jì)算標(biāo)準(zhǔn)和評(píng)估方法,得到業(yè)界的廣泛認(rèn)可。在可信云技術(shù)測(cè)試過程中,測(cè)試工程師需克服云環(huán)境的復(fù)雜多變和部分測(cè)試操作枯燥重復(fù)耗時(shí)長(zhǎng)等困難,完成云主機(jī)配置檢測(cè)和Web/主機(jī)滲透測(cè)試。為此,本文提出了使用python編程,可以克服上述困難,高效靈活地完成測(cè)試內(nèi)容。
【關(guān)鍵詞】可信云認(rèn)證 python 配置檢測(cè) 滲透測(cè)試
1 可信云評(píng)估體系
可信云評(píng)估自建立以來,已經(jīng)過了4年的發(fā)展建設(shè),其目的是為了提高云計(jì)算服務(wù)質(zhì)量,規(guī)范云計(jì)算市場(chǎng)秩序,促進(jìn)云計(jì)算產(chǎn)業(yè)進(jìn)一步發(fā)展。可信云標(biāo)準(zhǔn)體系主要包括可信云服務(wù)、專項(xiàng)評(píng)估標(biāo)準(zhǔn)、云保險(xiǎn)相關(guān)評(píng)估標(biāo)準(zhǔn)、開源解決方案四大部分內(nèi)容。
第一類為可信云服務(wù)類,包括IaaS/PaaS評(píng)估標(biāo)準(zhǔn)、桌面云評(píng)估標(biāo)準(zhǔn)等6個(gè)標(biāo)準(zhǔn)。其中IaaS/PaaS評(píng)估標(biāo)準(zhǔn)包含了云主機(jī)服務(wù)、對(duì)象存儲(chǔ)服務(wù)等9個(gè)服務(wù)的評(píng)估,以云主機(jī)服務(wù)為例,評(píng)估標(biāo)準(zhǔn)共包含數(shù)據(jù)存儲(chǔ)的持久性、服務(wù)可用性、網(wǎng)絡(luò)接入性能等一共86個(gè)指標(biāo)項(xiàng)。第二類為專項(xiàng)評(píng)估類,第三類為云保險(xiǎn)相關(guān),第四類為開源解決方案。本文重點(diǎn)對(duì)《云服務(wù)安全測(cè)評(píng)方法第1部分:云主機(jī)》的內(nèi)容進(jìn)行討論。
2 可信云認(rèn)證技術(shù)測(cè)試
可信云服務(wù)安全認(rèn)證測(cè)評(píng)作為培育和規(guī)范市場(chǎng)的手段,是適合所有云服務(wù)和用戶的認(rèn)證測(cè)評(píng),從云服務(wù)用戶的角度重點(diǎn)針對(duì)云服務(wù)的安全狀況進(jìn)行測(cè)評(píng)。可信云服務(wù)安全認(rèn)證測(cè)評(píng)包括兩方面:
(1)從技術(shù)角度測(cè)試云服務(wù)本身的安全狀況;
(2)從管理角度評(píng)估云服務(wù)運(yùn)營(yíng)/管理組織的安全管理狀況。
本論文重點(diǎn)討論技術(shù)測(cè)試部分,以云主機(jī)測(cè)試為例,測(cè)試對(duì)向用戶交付的云主機(jī)從雙因子認(rèn)證、端口掃描測(cè)試、SQL注入測(cè)試、XSS跨站攻擊測(cè)試等測(cè)試域進(jìn)行技術(shù)測(cè)試,一共包含34個(gè)測(cè)試項(xiàng)。
對(duì)測(cè)試內(nèi)容進(jìn)行分析發(fā)現(xiàn),測(cè)試內(nèi)容可分為三大類:第一類為檢測(cè)主機(jī)配置項(xiàng)的,檢測(cè)主機(jī)配置文件是否有相關(guān)配置項(xiàng)或者配置項(xiàng)的值是否符合要求,一共有10項(xiàng),占全部測(cè)試內(nèi)容的29.4%;第二類為人工操作測(cè)試,通過人工操作和判斷是否符合要求,一共有12項(xiàng),占全部測(cè)試內(nèi)容的35.3%;第三類為滲透測(cè)試,一共有12項(xiàng),占比同樣是35.3%。
本論文提出通過編程手段實(shí)現(xiàn)自動(dòng)化測(cè)評(píng),完成技術(shù)測(cè)試中耗時(shí)重復(fù)、測(cè)試環(huán)境復(fù)雜多變的工作,達(dá)到靈活快速適應(yīng)測(cè)試環(huán)境,提高工作效率的目標(biāo)。其中,第一類檢測(cè)主機(jī)配置項(xiàng)工作,比較簡(jiǎn)單重復(fù),完全可以通過腳本編程實(shí)現(xiàn)自動(dòng)化檢測(cè);第二類人工操作判斷測(cè)試,大部分需要人工判斷,難于通過編程完成;第三類Web/主機(jī)滲透測(cè)試,可以通過開發(fā)程序,靈活快速地完成測(cè)試內(nèi)容。
3 python在測(cè)試中的應(yīng)用
3.1 配置檢測(cè)
在可信云認(rèn)證測(cè)試用例中,第一類測(cè)試為檢測(cè)主機(jī)配置項(xiàng)的,其中又可分為檢測(cè)文件權(quán)限和檢測(cè)文件內(nèi)容這兩種。本論文將針對(duì)這兩種檢測(cè)列舉典型用例進(jìn)行python的代碼實(shí)現(xiàn)。
3.1.1 檢測(cè)文件權(quán)限
對(duì)于重要的系統(tǒng)配置文件和存儲(chǔ)敏感信息的文件,出于安全的考慮,應(yīng)當(dāng)限制其文件的讀寫和執(zhí)行權(quán)限。以《可信云安全測(cè)試用例v2.0》中的“1.7賬號(hào)文件保護(hù)測(cè)試用例”為例子,測(cè)試內(nèi)容為關(guān)鍵賬號(hào)密碼文件權(quán)限最小限制,要求/etc/passwd、/etc/shadow、/etc/group的文件權(quán)限分別是644、400、644.
代碼實(shí)現(xiàn)的第一步是檢測(cè)文件權(quán)限,第二步是判斷權(quán)限是否符合要求。
第一步的實(shí)現(xiàn)代碼如下:
legalpass = '644' #合法的文件權(quán)限
passwd = oct(os.stat('/etc/passwd').st_mode)[4:]
#檢測(cè)文件權(quán)限,返回一個(gè)字符串值
if passwd == legalpass:
#判斷文件權(quán)限是否符合用例要求
運(yùn)行程序,結(jié)果如圖1所示。程序檢測(cè)了文件的權(quán)限,并判斷權(quán)限是否符合要求。
3.1.2 檢測(cè)配置文件內(nèi)容
Linux系統(tǒng)通過各種配置文件對(duì)系統(tǒng)進(jìn)行管理,因此檢測(cè)配置文件里的內(nèi)容是系統(tǒng)管理員的必修課。以《可信云安全測(cè)試用例v2.0》中的“1.6 口令歷史有效次數(shù)測(cè)試用例”為例子,應(yīng)配置操作系統(tǒng)用戶不能重復(fù)使用最近已使用過的口令,要求/etc/pam.d/system-auth文件中的內(nèi)容必須包含remember,且值為5,即remember=5.
代碼實(shí)現(xiàn)的第一步是讀取指定的文件內(nèi)容;第二步是查找相關(guān)配置;第三步是判斷配置是否符合要求。
fp= open('/etc/pam.d/common-password','r+')
#打開指定的配置文件
s = fp.read()
fp.seek(0, 0)
#從文件頭開始讀取全部信息
str1 = re.findall('remember=5', s)
#查找文件中是否有“remember=5”這一項(xiàng)內(nèi)容,若存在則返回非空列表
if str1:print "legal"
else: print "remember=5 is not exist.","so it is illegal!"
#判斷是否能夠查找到目標(biāo)值,并輸出結(jié)果
運(yùn)行程序,檢測(cè)到配置文件缺少remember=5這一項(xiàng)配置,提示不合規(guī),結(jié)果如圖2所示。
顯然,我們通過編寫python程序,把那些以前需要不斷切換用戶、輸入命令、修改配置文件的繁瑣工作通過一次性編寫程序完成,達(dá)到了事半功倍的效果。實(shí)際上,python程序并不難編寫,有了python語言,讓測(cè)試工程師能夠從繁冗的系統(tǒng)配置檢測(cè)工作中解放出來。
3.2 滲透測(cè)試
可信云認(rèn)證測(cè)試中有12項(xiàng)測(cè)試項(xiàng)為滲透測(cè)試內(nèi)容,以端口掃描為例,通過python代碼的實(shí)現(xiàn),實(shí)現(xiàn)半自動(dòng)化的測(cè)試工作。
測(cè)試端口是否開通,其實(shí)很簡(jiǎn)單,創(chuàng)建一個(gè)socket的實(shí)例,并與目的IP地址和端口通信,以此測(cè)試端口是否開通,核心代碼實(shí)現(xiàn)如下:
s=socket.socket() #創(chuàng)建socket實(shí)例
s.settimeout(0.1) #設(shè)置連接超時(shí)時(shí)間
s.connect((ip,port)) #連接目的IP和目的端口
運(yùn)行程序,檢測(cè)到本機(jī)的兩個(gè)端口處于開放狀態(tài),結(jié)果如圖3所示。
滲透測(cè)試中,我們也可以通過編寫更多的程序來靈活地完成滲透測(cè)試的內(nèi)容,如SQL注入測(cè)試用例,采用python實(shí)現(xiàn)的SQLMAP能夠高效完成注入點(diǎn)的撞庫攻擊。對(duì)于滲透測(cè)試而言,python能夠?qū)崿F(xiàn)半自動(dòng)化的測(cè)試,相比于用固定工具測(cè)試,能夠讓測(cè)試人員在復(fù)雜多變的各種云環(huán)境中,快速靈活地完成測(cè)試內(nèi)容。
4 結(jié)語
通過python編程能夠?qū)崿F(xiàn)可信云認(rèn)證測(cè)試中的大部分測(cè)試項(xiàng)目,對(duì)于檢測(cè)主機(jī)配置項(xiàng),只需要編寫很少的代碼就能完成簡(jiǎn)單重復(fù)的檢測(cè)工作,事半功倍,而且python腳本易于擴(kuò)展,測(cè)試工程師可以根據(jù)測(cè)試需要?jiǎng)討B(tài)調(diào)整。滲透測(cè)試通常采用固定工具進(jìn)行測(cè)試,然而測(cè)試工程師面對(duì)的測(cè)試環(huán)境是千差萬別的,導(dǎo)致一些測(cè)試工具因?yàn)槠脚_(tái)環(huán)境因素而無法使用,自主開發(fā)python程序,能夠更加靈活快速的適應(yīng)負(fù)責(zé)的云環(huán)境,高效地完成測(cè)試內(nèi)容。Python這門強(qiáng)大的腳本編程語言,會(huì)在可信云認(rèn)證測(cè)試中得到更加深入的應(yīng)用。
參考文獻(xiàn)
[1]Magnus Lie Hetland.python基礎(chǔ)教程(第二版)[M].北京:人民郵電出版報(bào),2011.
[2]Wesley Chun.python核心編程(第二版)[M].北京:人民郵電出版社,2014.
[3]Justin Seitz.python黑帽子[M].北京:電子工業(yè)出版社,2013.
作者單位
廣州賽寶認(rèn)證中心服務(wù)有限公司 廣東省廣州市 510610endprint