趙 旭, 文佳欣
(1. 西安工程大學 計算機科學學院, 西安 710048; 2. 西安交通大學 經濟與金融學院, 西安 710049)
隨著互聯網快速發展,網絡安全問題日漸突出[1],網絡攻擊、網絡犯罪等安全問題,給我國社會經濟發展帶來嚴重威脅。尤其隨著我國周邊態勢和國際形勢的緊張,網絡戰成為保衛我國網絡空間安全的新戰場[2]。2017年2月17日習近平總書記在國家安全會議中指出“要筑牢網絡安全防線,提高網絡安全保障水平,加強網絡安全預警監測”。為了減少網絡安全事件對社會安定和經濟運轉等帶來損失,我國需要在各地建立完備的網絡安全應急響應管理平臺。
迫于保衛“第五空間”的需要,各國政府普遍重視建設網絡安全應急響應管理平臺。作為協調指揮美國網絡安全行動的“中樞”,美國國家網絡安全和通信綜合中心(NCCIC)在2009年由美國國土安全部組建,該組織網站主要對不同層次用戶提供安全教育和安全公告等內容。
國內目前已建好并投入運營的網絡安全應急響應管理平臺很少,僅有國家互聯網應急中心,各級地方政府建立的應急管理平臺基本屬于空白[3-4],所以我國迫切需要建立省市級的網絡安全應急響應管理平臺。
在技術層面上,就如何建立高效應急管理平臺,學者們展開相關研究,文獻[5-6]中通過緊急響應日志記錄每個緊急事件響應過程。文獻[7]中研究了一種網絡安全預警和急救反應系統,為建立網絡信息安全保障體系提供支持。文獻[8-9]中討論了如何實現一個高效的校園網絡急救反應系統的設計。文獻[10-11]中對具體安全響應機制進行了研究。只有文獻[12-15]中就如何設計應急管理平臺提出了設計方案。但是通過對上述文獻進行分析,發現有些文獻在平臺功能設計上并不十分完善,比如缺少公眾事件上報和專業討論區的功能,而有些文獻將平臺設計過于側重于惡意數據分析而非應急協調管理功能。更為重要的是,作為網絡安全應急響應管理平臺本身承受的惡意攻擊風險就很大,而關于如何抵御攻擊這一方面鮮有文獻發現。針對這一問題,本文從平臺總體功能設計、防惡意攻擊設計等方面,詳細闡述了基于ASP.NET和SQL Server技術的網絡安全應急管理平臺開發過程。
平臺的總體設計如圖1所示,主要分為公眾平臺和內部平臺,其中公眾平臺主要面對公眾開放,向公眾提供新聞資訊、安全公告、科普教育、安全態勢報告、安全事件上報、安全軟件以及漏洞補丁的下載等服務,而內部平臺主要向各地網絡安全應急響應管理體系的相關部門專業人士提供服務,具體功能有接收公眾上報的安全事件并進行分析,發布不宜對外公布的內部安全公告或者漏洞信息,通過該平臺進行各部門之間的通信聯絡,以及供專業人士對安全事件或問題進行討論分析的專業討論區。對于公眾,不需要密碼就可以訪問公眾平臺的各個板塊,但是對于內部人士,要進入內部平臺,需要輸入賬號密碼才能進入。

圖1 網絡安全應急響應管理平臺的總體功能設計
與普通網站相比,因為網絡安全應急響應管理平臺是發生網絡安全事件的“指揮中樞”,所以更易受到網絡攻擊,因此,對平臺的安全設計成為比功能設計更重要的問題。本文對平臺的安全設計主要從以下幾個方面解決。
SQL注入是最為常見的網站攻擊方式,黑客通過在Web表單中輸入惡意的SQL語句來繞過系統認證或對數據庫進行窺探、破壞。
例如登錄界面要求輸入用戶名和密碼,程序將用戶輸入的用戶名密碼,通常用下面SQL語句在數據庫中進行查詢:
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='’ ;
因為1=1永真,而且and password='’被—注釋掉,那么這個語句永遠都能正確執行,黑客從而輕易的騙過系統,獲取合法身份。為了應對SQL注入問題,在平臺設計時,本文采用下面2種方法解決。
(1) 使用存儲過程加參數化語句。將用戶輸入的信息不直接嵌入到SQL語句,而是通過參數來傳遞信息,就可以有效防止SQL注入。再加上采用存儲過程方式,這樣還提高了系統的并發性能。
存儲過程創建過程具體代碼如下:
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 --通過驗證
… //此處代碼省略,恕不詳述
end
GO
存儲過程執行代碼如下:
protected void btn_Login_Click(object sender, EventArgs e)
{ string UserName =txt_UserName.Value.Trim(); //獲取頁面數據
string UserPwd = txt_Upwd.Value.Trim();
…… //連接數據庫,創建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是輸入參數
SqlParameter userpwd = cmd.Parameters.Add(new SqlParameter("@UserPwd", SqlDbType.NVarChar, 50));
//為@UserName參數賦值
userpwd.Direction = ParameterDirection.Input;
userpwd.Value = UserPwd; //指明@ UserPwd是輸入參數
… //配置輸出參數,此處代碼省略,恕不詳述
conn.Open(); //打開數據庫連接
cmd.ExecuteNonQuery();//執行命令
采用存儲過程可以避免SQL語句每次執行查詢時的編譯過程,可提高數據庫執行速度。再加上使用參數化語句,將用戶輸入的信息不嵌入到SQL語句中,可以杜絕大部分的SQL注入式攻擊。
(2) 過濾或轉換可疑字符串。在程序中加入過濾或者轉換危險字符串的函數,從而將黑客在文本框中輸入的危險信息排除,具體代碼如下:
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('|')) //通過循環依次查找word中含有的危險字符
{ if((InText.ToLower().IndexOf(i+" ")>-1)||(InText.ToLower().IndexOf(" "+i)>-1))
{ return true; }
} ……
為防止網站文件被搜索引擎收錄,本平臺在網站根目錄下建立1個“robots.txt”文件。通常大多數搜索引擎都遵守robots協議,搜索引擎機器人訪問網站時,會讀取robots文件的內容,來確定對網站收錄的范圍。通過robots文件對搜索引擎收錄權限的限制管理,從而避免將網站的重要文件暴露在網絡上。
在本平臺下,robots.txt中部分代碼如下:
User-agent: * 注:對于所有搜索引擎
Disallow: / Bin / 注:不允許訪問Bin文件夾
Disallow: / App_Code / 注:不允許訪問App_Code文件夾
…
Allow: .htm 注:允許訪問htm頁面
很多網站在用戶登陸時會保存Cookie信息,這樣方便用戶下次登陸時不用填寫登錄信息,但這也會給黑客采集Cookie信息提供機會,因為本平臺對安全性的特殊要求,所以應放棄客戶端Cookie驗證登陸,改用服務器驗證,同時對賬號和密碼采用單向加密方式保存。這樣雖然每次登錄都需要填寫賬號密碼,但是安全性得到了保障。
為了保護系統后臺,本文在設計時將后臺目錄沒有放在admin、app_admin目錄下,同時登陸文件的文件名也不采用login這樣常用的名稱。跟網站相比,數據庫的安全意義更為重大,如果數據庫被下載,后果將不堪設想,所以本系統將數據庫也不保存在網站常見的data目錄下,不使用data.mdf、admin.mdf等常見命名方式。通過采用這些措施,能夠有效降低后臺管理員入口和數據庫文件被猜解的可能性。
本實驗將對平臺進行SQL注入和掃描測試。實驗開始前,先進入虛擬機開啟終端―Terminal‖,并開啟lampp―/etc/init.d/apache2 stop‖>―cd‖>―ls‖>―cd lampp‖>―ls‖>―./lampp start‖,如圖2所示。

圖2 開啟虛擬機終端
進入平臺的后臺登錄窗口,依次輸入下列SQL注入語句進行測試:
; and 1=1 and 1=2 注:判斷有無注入點
and 0<>(select count(*) from admin) 注:判斷數據庫是否有admin這張表
and 1=(select count(*) from admin where len(username)>0)
注:猜解admin數據表中是否有username用戶字段名稱
經過以上測試,均未注入成功,并被系統記錄IP地址(見圖3)。
本文選用Havij注入工具,填入平臺IP地址后按照默認配置進行測試,結果仍然顯示沒有成功進行SQL注入(見圖4)。

圖3 后臺SQL注入報警

圖4 HavijSQL注入測試結果
通過北極熊WEB漏洞掃描器,使用漏洞掃描功能,選擇軟件所有預備的漏洞腳本測試,并無漏洞提示(見圖5);使用端口掃描工具檢測,發現除了必須開放的80端口外,并無其他可能造成危險的端口開放(見圖6)。

圖5 漏洞掃描

圖6 端口掃描
通過以上3項測試發現,該平臺具備一定的抗SQL注入和安全防御能力,符合省級網絡安全應急響應管理平臺的安全訪問要求。
針對目前國內網絡安全應急響應管理平臺缺乏、安全防護薄弱的問題,本文從平臺總體功能設計、防SQL注入、防滲透設計等方面,提出了基于ASP.NET和SQL Server技術的省級網絡安全應急管理平臺的安全架構方法。該方法通過使用加參數化語句的存儲過程、過濾危險信息、限制搜索引擎收錄范圍等多種方式保障系統安全。實驗證明,該平臺具備抵抗人工和軟件SQL注入的能力,并且沒有漏洞和危險端口開放。該平臺的設計為國內同類平臺的構建提供參考。
參考文獻(References):
[1] 龔 儉, 臧小東, 蘇 琪,等. 網絡安全態勢感知綜述[J]. 軟件學報, 2017, 28(4):1010-1026.
[2] 黃姝妍. 網絡安全技術的發展現狀和趨勢[J]. 網絡安全技術與應用,2017(7):10-15.
[3] 郝 艷, 郭 航, 管 磊,等. 政府網站綜合防護系統研究綜述[J]. 警察技術, 2017(2):25-28.
[4] 陳 晨, 薛 正, 戴曉苗,等. 政府網站綜合防護系統攻擊事件回溯關鍵技術研究[J]. 警察技術, 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] 張新剛, 田 燕, 王保平,等. 校園網絡安全應急響應聯動系統模型[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] 徐志英. 一種應急指揮輔助平臺安全子系統的分析與設計[J]. 吉林工程技術師范學院學報, 2016(12):95-97.
[13] 王守銀, 穆宣社. 一種應急指揮輔助平臺安全子系統的分析與設計[J]. 電腦編程技巧與維護, 2016(21):95-97.
[14] 馮 濤, 張玉清, 高有行. 網絡安全事件應急響應聯動系統模型[J]. 計算機工程, 2004, 30(13):101-103.
[15] 劉 琦. 網絡安全事件應急處置與管理平臺的設計與實現[J]. 電腦知識與技術, 2015, 11(9X):27-28.