趙 旭, 文佳欣
(1. 西安工程大學(xué) 計算機(jī)科學(xué)學(xué)院, 西安 710048; 2. 西安交通大學(xué) 經(jīng)濟(jì)與金融學(xué)院, 西安 710049)
隨著互聯(lián)網(wǎng)快速發(fā)展,網(wǎng)絡(luò)安全問題日漸突出[1],網(wǎng)絡(luò)攻擊、網(wǎng)絡(luò)犯罪等安全問題,給我國社會經(jīng)濟(jì)發(fā)展帶來嚴(yán)重威脅。尤其隨著我國周邊態(tài)勢和國際形勢的緊張,網(wǎng)絡(luò)戰(zhàn)成為保衛(wèi)我國網(wǎng)絡(luò)空間安全的新戰(zhàn)場[2]。2017年2月17日習(xí)近平總書記在國家安全會議中指出“要筑牢網(wǎng)絡(luò)安全防線,提高網(wǎng)絡(luò)安全保障水平,加強(qiáng)網(wǎng)絡(luò)安全預(yù)警監(jiān)測”。為了減少網(wǎng)絡(luò)安全事件對社會安定和經(jīng)濟(jì)運(yùn)轉(zhuǎn)等帶來損失,我國需要在各地建立完備的網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺。
迫于保衛(wèi)“第五空間”的需要,各國政府普遍重視建設(shè)網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺。作為協(xié)調(diào)指揮美國網(wǎng)絡(luò)安全行動的“中樞”,美國國家網(wǎng)絡(luò)安全和通信綜合中心(NCCIC)在2009年由美國國土安全部組建,該組織網(wǎng)站主要對不同層次用戶提供安全教育和安全公告等內(nèi)容。
國內(nèi)目前已建好并投入運(yùn)營的網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺很少,僅有國家互聯(lián)網(wǎng)應(yīng)急中心,各級地方政府建立的應(yīng)急管理平臺基本屬于空白[3-4],所以我國迫切需要建立省市級的網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺。
在技術(shù)層面上,就如何建立高效應(yīng)急管理平臺,學(xué)者們展開相關(guān)研究,文獻(xiàn)[5-6]中通過緊急響應(yīng)日志記錄每個緊急事件響應(yīng)過程。文獻(xiàn)[7]中研究了一種網(wǎng)絡(luò)安全預(yù)警和急救反應(yīng)系統(tǒng),為建立網(wǎng)絡(luò)信息安全保障體系提供支持。文獻(xiàn)[8-9]中討論了如何實(shí)現(xiàn)一個高效的校園網(wǎng)絡(luò)急救反應(yīng)系統(tǒng)的設(shè)計。文獻(xiàn)[10-11]中對具體安全響應(yīng)機(jī)制進(jìn)行了研究。只有文獻(xiàn)[12-15]中就如何設(shè)計應(yīng)急管理平臺提出了設(shè)計方案。但是通過對上述文獻(xiàn)進(jìn)行分析,發(fā)現(xiàn)有些文獻(xiàn)在平臺功能設(shè)計上并不十分完善,比如缺少公眾事件上報和專業(yè)討論區(qū)的功能,而有些文獻(xiàn)將平臺設(shè)計過于側(cè)重于惡意數(shù)據(jù)分析而非應(yīng)急協(xié)調(diào)管理功能。更為重要的是,作為網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺本身承受的惡意攻擊風(fēng)險就很大,而關(guān)于如何抵御攻擊這一方面鮮有文獻(xiàn)發(fā)現(xiàn)。針對這一問題,本文從平臺總體功能設(shè)計、防惡意攻擊設(shè)計等方面,詳細(xì)闡述了基于ASP.NET和SQL Server技術(shù)的網(wǎng)絡(luò)安全應(yīng)急管理平臺開發(fā)過程。
平臺的總體設(shè)計如圖1所示,主要分為公眾平臺和內(nèi)部平臺,其中公眾平臺主要面對公眾開放,向公眾提供新聞資訊、安全公告、科普教育、安全態(tài)勢報告、安全事件上報、安全軟件以及漏洞補(bǔ)丁的下載等服務(wù),而內(nèi)部平臺主要向各地網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理體系的相關(guān)部門專業(yè)人士提供服務(wù),具體功能有接收公眾上報的安全事件并進(jìn)行分析,發(fā)布不宜對外公布的內(nèi)部安全公告或者漏洞信息,通過該平臺進(jìn)行各部門之間的通信聯(lián)絡(luò),以及供專業(yè)人士對安全事件或問題進(jìn)行討論分析的專業(yè)討論區(qū)。對于公眾,不需要密碼就可以訪問公眾平臺的各個板塊,但是對于內(nèi)部人士,要進(jìn)入內(nèi)部平臺,需要輸入賬號密碼才能進(jìn)入。
圖1 網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺的總體功能設(shè)計
與普通網(wǎng)站相比,因?yàn)榫W(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺是發(fā)生網(wǎng)絡(luò)安全事件的“指揮中樞”,所以更易受到網(wǎng)絡(luò)攻擊,因此,對平臺的安全設(shè)計成為比功能設(shè)計更重要的問題。本文對平臺的安全設(shè)計主要從以下幾個方面解決。
SQL注入是最為常見的網(wǎng)站攻擊方式,黑客通過在Web表單中輸入惡意的SQL語句來繞過系統(tǒng)認(rèn)證或?qū)?shù)據(jù)庫進(jìn)行窺探、破壞。
例如登錄界面要求輸入用戶名和密碼,程序?qū)⒂脩糨斎氲挠脩裘艽a,通常用下面SQL語句在數(shù)據(jù)庫中進(jìn)行查詢:
String sql = "select * from user_table where username=' "+userName+" ' and password=' "+password+" '";
如果黑客在用戶名后的文本框中輸入:’or 1 = 1--,上面的SQL語句變成:
SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’ ;
因?yàn)?=1永真,而且and password='’被—注釋掉,那么這個語句永遠(yuǎn)都能正確執(zhí)行,黑客從而輕易的騙過系統(tǒng),獲取合法身份。為了應(yīng)對SQL注入問題,在平臺設(shè)計時,本文采用下面2種方法解決。
(1) 使用存儲過程加參數(shù)化語句。將用戶輸入的信息不直接嵌入到SQL語句,而是通過參數(shù)來傳遞信息,就可以有效防止SQL注入。再加上采用存儲過程方式,這樣還提高了系統(tǒng)的并發(fā)性能。
存儲過程創(chuàng)建過程具體代碼如下:
create proc [dbo].[sp_ Logining]
(@UserName nvarchar(50), @UserPwd nvarchar(50),
@ReturnInfo int output)
as
begin
if EXISTS(select userid from SZW.dbo.SysUser where UserName=@UserName and UserPwd=@UserPwd)
set @ReturnInfo=0 --通過驗(yàn)證
… //此處代碼省略,恕不詳述
end
GO
存儲過程執(zhí)行代碼如下:
protected void btn_Login_Click(object sender, EventArgs e)
{ string UserName =txt_UserName.Value.Trim(); //獲取頁面數(shù)據(jù)
string UserPwd = txt_Upwd.Value.Trim();
…… //連接數(shù)據(jù)庫,創(chuàng)建SqlCommand對象cmd,此處代碼省略,恕不詳述
cmd.CommandText = " sp_ Logining ";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter username = cmd.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 20));
username.Direction = ParameterDirection.Input;
username.Value = UserName; //指明@UserName是輸入?yún)?shù)
SqlParameter userpwd = cmd.Parameters.Add(new SqlParameter("@UserPwd", SqlDbType.NVarChar, 50));
//為@UserName參數(shù)賦值
userpwd.Direction = ParameterDirection.Input;
userpwd.Value = UserPwd; //指明@ UserPwd是輸入?yún)?shù)
… //配置輸出參數(shù),此處代碼省略,恕不詳述
conn.Open(); //打開數(shù)據(jù)庫連接
cmd.ExecuteNonQuery();//執(zhí)行命令
采用存儲過程可以避免SQL語句每次執(zhí)行查詢時的編譯過程,可提高數(shù)據(jù)庫執(zhí)行速度。再加上使用參數(shù)化語句,將用戶輸入的信息不嵌入到SQL語句中,可以杜絕大部分的SQL注入式攻擊。
(2) 過濾或轉(zhuǎn)換可疑字符串。在程序中加入過濾或者轉(zhuǎn)換危險字符串的函數(shù),從而將黑客在文本框中輸入的危險信息排除,具體代碼如下:
public static bool SqlFilter2(string InText)
{ String word="and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char |declare|join";
…
foreach(string i in word.Split('|')) //通過循環(huán)依次查找word中含有的危險字符
{ if((InText.ToLower().IndexOf(i+" ")>-1)||(InText.ToLower().IndexOf(" "+i)>-1))
{ return true; }
} ……
為防止網(wǎng)站文件被搜索引擎收錄,本平臺在網(wǎng)站根目錄下建立1個“robots.txt”文件。通常大多數(shù)搜索引擎都遵守robots協(xié)議,搜索引擎機(jī)器人訪問網(wǎng)站時,會讀取robots文件的內(nèi)容,來確定對網(wǎng)站收錄的范圍。通過robots文件對搜索引擎收錄權(quán)限的限制管理,從而避免將網(wǎng)站的重要文件暴露在網(wǎng)絡(luò)上。
在本平臺下,robots.txt中部分代碼如下:
User-agent: * 注:對于所有搜索引擎
Disallow: / Bin / 注:不允許訪問Bin文件夾
Disallow: / App_Code / 注:不允許訪問App_Code文件夾
…
Allow: .htm 注:允許訪問htm頁面
很多網(wǎng)站在用戶登陸時會保存Cookie信息,這樣方便用戶下次登陸時不用填寫登錄信息,但這也會給黑客采集Cookie信息提供機(jī)會,因?yàn)楸酒脚_對安全性的特殊要求,所以應(yīng)放棄客戶端Cookie驗(yàn)證登陸,改用服務(wù)器驗(yàn)證,同時對賬號和密碼采用單向加密方式保存。這樣雖然每次登錄都需要填寫賬號密碼,但是安全性得到了保障。
為了保護(hù)系統(tǒng)后臺,本文在設(shè)計時將后臺目錄沒有放在admin、app_admin目錄下,同時登陸文件的文件名也不采用login這樣常用的名稱。跟網(wǎng)站相比,數(shù)據(jù)庫的安全意義更為重大,如果數(shù)據(jù)庫被下載,后果將不堪設(shè)想,所以本系統(tǒng)將數(shù)據(jù)庫也不保存在網(wǎng)站常見的data目錄下,不使用data.mdf、admin.mdf等常見命名方式。通過采用這些措施,能夠有效降低后臺管理員入口和數(shù)據(jù)庫文件被猜解的可能性。
本實(shí)驗(yàn)將對平臺進(jìn)行SQL注入和掃描測試。實(shí)驗(yàn)開始前,先進(jìn)入虛擬機(jī)開啟終端―Terminal‖,并開啟lampp―/etc/init.d/apache2 stop‖>―cd‖>―ls‖>―cd lampp‖>―ls‖>―./lampp start‖,如圖2所示。
圖2 開啟虛擬機(jī)終端
進(jìn)入平臺的后臺登錄窗口,依次輸入下列SQL注入語句進(jìn)行測試:
; and 1=1 and 1=2 注:判斷有無注入點(diǎn)
and 0<>(select count(*) from admin) 注:判斷數(shù)據(jù)庫是否有admin這張表
and 1=(select count(*) from admin where len(username)>0)
注:猜解admin數(shù)據(jù)表中是否有username用戶字段名稱
經(jīng)過以上測試,均未注入成功,并被系統(tǒng)記錄IP地址(見圖3)。
本文選用Havij注入工具,填入平臺IP地址后按照默認(rèn)配置進(jìn)行測試,結(jié)果仍然顯示沒有成功進(jìn)行SQL注入(見圖4)。
圖3 后臺SQL注入報警
圖4 HavijSQL注入測試結(jié)果
通過北極熊WEB漏洞掃描器,使用漏洞掃描功能,選擇軟件所有預(yù)備的漏洞腳本測試,并無漏洞提示(見圖5);使用端口掃描工具檢測,發(fā)現(xiàn)除了必須開放的80端口外,并無其他可能造成危險的端口開放(見圖6)。
圖5 漏洞掃描
圖6 端口掃描
通過以上3項(xiàng)測試發(fā)現(xiàn),該平臺具備一定的抗SQL注入和安全防御能力,符合省級網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺的安全訪問要求。
針對目前國內(nèi)網(wǎng)絡(luò)安全應(yīng)急響應(yīng)管理平臺缺乏、安全防護(hù)薄弱的問題,本文從平臺總體功能設(shè)計、防SQL注入、防滲透設(shè)計等方面,提出了基于ASP.NET和SQL Server技術(shù)的省級網(wǎng)絡(luò)安全應(yīng)急管理平臺的安全架構(gòu)方法。該方法通過使用加參數(shù)化語句的存儲過程、過濾危險信息、限制搜索引擎收錄范圍等多種方式保障系統(tǒng)安全。實(shí)驗(yàn)證明,該平臺具備抵抗人工和軟件SQL注入的能力,并且沒有漏洞和危險端口開放。該平臺的設(shè)計為國內(nèi)同類平臺的構(gòu)建提供參考。
參考文獻(xiàn)(References):
[1] 龔 儉, 臧小東, 蘇 琪,等. 網(wǎng)絡(luò)安全態(tài)勢感知綜述[J]. 軟件學(xué)報, 2017, 28(4):1010-1026.
[2] 黃姝妍. 網(wǎng)絡(luò)安全技術(shù)的發(fā)展現(xiàn)狀和趨勢[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(7):10-15.
[3] 郝 艷, 郭 航, 管 磊,等. 政府網(wǎng)站綜合防護(hù)系統(tǒng)研究綜述[J]. 警察技術(shù), 2017(2):25-28.
[4] 陳 晨, 薛 正, 戴曉苗,等. 政府網(wǎng)站綜合防護(hù)系統(tǒng)攻擊事件回溯關(guān)鍵技術(shù)研究[J]. 警察技術(shù), 2017(2):16-19.
[5] Yuan S, Wang W. Notice of retraction a campus network security emergency response technical system based on emergency log[C]// International Conference on E-Business and Information System Security. IEEE, 2010:1-3.
[6] Ma Y, Wang P. Compilation of the emergency response plans for the archives network and information system security incidents[J]. Archives & Construction, 2011.
[7] Chong F U. Macro network security warning and emergency response system[J]. Journal of University of Electronic Science & Technology of China, 2016, 7(3):215-220.
[8] Nie T J, Tang C, Lin J I,etal. Research and implementation of campus network security emergency response system[J]. Microcomputer & Its Applications, 2007.
[9] 張新剛, 田 燕, 王保平,等. 校園網(wǎng)絡(luò)安全應(yīng)急響應(yīng)聯(lián)動系統(tǒng)模型[J]. 計算機(jī)安全, 2012(8):49-51.
[10] Song M H. On computer network security risks and emergency response technology[J]. Applied Mechanics & Materials, 2014, 484-485:833-836.
[11] Luo P, Qiang L I. Study on network security emergency response system[J]. Agriculture Network Information, 2015.
[12] 徐志英. 一種應(yīng)急指揮輔助平臺安全子系統(tǒng)的分析與設(shè)計[J]. 吉林工程技術(shù)師范學(xué)院學(xué)報, 2016(12):95-97.
[13] 王守銀, 穆宣社. 一種應(yīng)急指揮輔助平臺安全子系統(tǒng)的分析與設(shè)計[J]. 電腦編程技巧與維護(hù), 2016(21):95-97.
[14] 馮 濤, 張玉清, 高有行. 網(wǎng)絡(luò)安全事件應(yīng)急響應(yīng)聯(lián)動系統(tǒng)模型[J]. 計算機(jī)工程, 2004, 30(13):101-103.
[15] 劉 琦. 網(wǎng)絡(luò)安全事件應(yīng)急處置與管理平臺的設(shè)計與實(shí)現(xiàn)[J]. 電腦知識與技術(shù), 2015, 11(9X):27-28.