APP下载

基于安全访问设计的省级网络安全应急管理平台研究

2018-07-09文佳欣

实验室研究与探索 2018年6期
关键词:语句漏洞网络安全

赵 旭, 文佳欣

(1. 西安工程大学 计算机科学学院, 西安 710048; 2. 西安交通大学 经济与金融学院, 西安 710049)

0 引 言

随着互联网快速发展,网络安全问题日渐突出[1],网络攻击、网络犯罪等安全问题,给我国社会经济发展带来严重威胁。尤其随着我国周边态势和国际形势的紧张,网络战成为保卫我国网络空间安全的新战场[2]。2017年2月17日习近平总书记在国家安全会议中指出“要筑牢网络安全防线,提高网络安全保障水平,加强网络安全预警监测”。为了减少网络安全事件对社会安定和经济运转等带来损失,我国需要在各地建立完备的网络安全应急响应管理平台。

1 相关研究

迫于保卫“第五空间”的需要,各国政府普遍重视建设网络安全应急响应管理平台。作为协调指挥美国网络安全行动的“中枢”,美国国家网络安全和通信综合中心(NCCIC)在2009年由美国国土安全部组建,该组织网站主要对不同层次用户提供安全教育和安全公告等内容。

国内目前已建好并投入运营的网络安全应急响应管理平台很少,仅有国家互联网应急中心,各级地方政府建立的应急管理平台基本属于空白[3-4],所以我国迫切需要建立省市级的网络安全应急响应管理平台。

在技术层面上,就如何建立高效应急管理平台,学者们展开相关研究,文献[5-6]中通过紧急响应日志记录每个紧急事件响应过程。文献[7]中研究了一种网络安全预警和急救反应系统,为建立网络信息安全保障体系提供支持。文献[8-9]中讨论了如何实现一个高效的校园网络急救反应系统的设计。文献[10-11]中对具体安全响应机制进行了研究。只有文献[12-15]中就如何设计应急管理平台提出了设计方案。但是通过对上述文献进行分析,发现有些文献在平台功能设计上并不十分完善,比如缺少公众事件上报和专业讨论区的功能,而有些文献将平台设计过于侧重于恶意数据分析而非应急协调管理功能。更为重要的是,作为网络安全应急响应管理平台本身承受的恶意攻击风险就很大,而关于如何抵御攻击这一方面鲜有文献发现。针对这一问题,本文从平台总体功能设计、防恶意攻击设计等方面,详细阐述了基于ASP.NET和SQL Server技术的网络安全应急管理平台开发过程。

2 总体设计

平台的总体设计如图1所示,主要分为公众平台和内部平台,其中公众平台主要面对公众开放,向公众提供新闻资讯、安全公告、科普教育、安全态势报告、安全事件上报、安全软件以及漏洞补丁的下载等服务,而内部平台主要向各地网络安全应急响应管理体系的相关部门专业人士提供服务,具体功能有接收公众上报的安全事件并进行分析,发布不宜对外公布的内部安全公告或者漏洞信息,通过该平台进行各部门之间的通信联络,以及供专业人士对安全事件或问题进行讨论分析的专业讨论区。对于公众,不需要密码就可以访问公众平台的各个板块,但是对于内部人士,要进入内部平台,需要输入账号密码才能进入。

图1 网络安全应急响应管理平台的总体功能设计

3 安全设计

与普通网站相比,因为网络安全应急响应管理平台是发生网络安全事件的“指挥中枢”,所以更易受到网络攻击,因此,对平台的安全设计成为比功能设计更重要的问题。本文对平台的安全设计主要从以下几个方面解决。

3.1 防SQL注入

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; }

} ……

3.2 限制搜索引擎收录范围

为防止网站文件被搜索引擎收录,本平台在网站根目录下建立1个“robots.txt”文件。通常大多数搜索引擎都遵守robots协议,搜索引擎机器人访问网站时,会读取robots文件的内容,来确定对网站收录的范围。通过robots文件对搜索引擎收录权限的限制管理,从而避免将网站的重要文件暴露在网络上。

在本平台下,robots.txt中部分代码如下:

User-agent: * 注:对于所有搜索引擎

Disallow: / Bin / 注:不允许访问Bin文件夹

Disallow: / App_Code / 注:不允许访问App_Code文件夹

Allow: .htm 注:允许访问htm页面

3.3 禁用Cookie验证用户身份

很多网站在用户登陆时会保存Cookie信息,这样方便用户下次登陆时不用填写登录信息,但这也会给黑客采集Cookie信息提供机会,因为本平台对安全性的特殊要求,所以应放弃客户端Cookie验证登陆,改用服务器验证,同时对账号和密码采用单向加密方式保存。这样虽然每次登录都需要填写账号密码,但是安全性得到了保障。

3.4 隐藏后台目录和数据库路径

为了保护系统后台,本文在设计时将后台目录没有放在admin、app_admin目录下,同时登陆文件的文件名也不采用login这样常用的名称。跟网站相比,数据库的安全意义更为重大,如果数据库被下载,后果将不堪设想,所以本系统将数据库也不保存在网站常见的data目录下,不使用data.mdf、admin.mdf等常见命名方式。通过采用这些措施,能够有效降低后台管理员入口和数据库文件被猜解的可能性。

4 实 验

本实验将对平台进行SQL注入和扫描测试。实验开始前,先进入虚拟机开启终端―Terminal‖,并开启lampp―/etc/init.d/apache2 stop‖>―cd‖>―ls‖>―cd lampp‖>―ls‖>―./lampp start‖,如图2所示。

图2 开启虚拟机终端

4.1 手动SQL注入测试

进入平台的后台登录窗口,依次输入下列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)。

4.2 软件SQL注入测试

本文选用Havij注入工具,填入平台IP地址后按照默认配置进行测试,结果仍然显示没有成功进行SQL注入(见图4)。

图3 后台SQL注入报警

图4 HavijSQL注入测试结果

4.3 漏洞和端口扫描

通过北极熊WEB漏洞扫描器,使用漏洞扫描功能,选择软件所有预备的漏洞脚本测试,并无漏洞提示(见图5);使用端口扫描工具检测,发现除了必须开放的80端口外,并无其他可能造成危险的端口开放(见图6)。

图5 漏洞扫描

图6 端口扫描

通过以上3项测试发现,该平台具备一定的抗SQL注入和安全防御能力,符合省级网络安全应急响应管理平台的安全访问要求。

5 结 语

针对目前国内网络安全应急响应管理平台缺乏、安全防护薄弱的问题,本文从平台总体功能设计、防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.

猜你喜欢

语句漏洞网络安全
漏洞
重点:语句衔接
网络安全
网络安全人才培养应“实战化”
上网时如何注意网络安全?
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞
我国拟制定网络安全法
如何搞定语句衔接题