网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 其他类别 > 正文

网络入侵防御系统的设计

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/06

鉴于大家对其他类别十分关注,我们编辑小组在此为大家搜集整理了“网络入侵防御系统的设计”一文,供大家参考学习

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

1.1.1          使用ISAPI进行Http响应
(1)     拒绝访问
当在ISAPI Filter中直接返回SF_STATUS_REQ_FINISHED时,IIS服务器就会断开和客户端的连接。
(2)     发送信息
发送信息的响应中有两个参数,一个是http报文响应的状态,例如:http状态200表示正常;http状态403表示拒绝访问;http状态500表示服务器错误等等。另一个参数是所发送信息的内容。通过ISAPI Filter中提供的ServerSupportFunction API可以设置响应的HTTP报文的状态,通过WriteClient可以直接向客户端写数据。以下为发送信息响应方式的部分实现代码
void IISClient::SendMsg(const char *status, const char *msg)
 {
        uint32_t bufSize;
        _pfc->ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER,
                                   const_cast<char*>(status),   NULL, NULL);
       bufSize = uint32_t(strlen(msg));
       _pfc->WriteClient(const_cast<char*>(msg), &bufSize);
 }
(3)     发送文件
发送文件的实现和发送信息的实现类似。第二个参数换成了要发送文件的路径。发送的文件内容从该路径指定的文件中读取。以下为发送文件响应的实现的部分实现代码
void IISClient::SendFile(const char *status, const char *filename)
{
       const DWORD BUF_SIZE = 10 * 1024;                   
       char buffer[BUF_SIZE] = {0};
 
       _pfc->ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER,
                     const_cast<char*>(status),   NULL, NULL);
       ifstream in(filename, ios_base::binary);
       if(in)
       {
              DWORD nCount = 0;
              for(;;)
              {
                            in.read(buffer, BUF_SIZE);
                            nCount = in.gcount();
                            if(nCount == 0)
                                   break;                                
                            _pfc->WriteClient(buffer, &nCount);         
              }           
       }    
}
(4)     重定向
将服务器端响应的Http报头中的状态码设置为“302 Moved Permanently ”,同时设置报头中的Location为要转向的地址。客户端的浏览器在收到这样的报文后会重新去访问新的地址。重定向的部分实现代码如下
void IISClient::Redirect(const char *url)
{
       char buf[256];
       sprintf(buf,"Location: %s\r\n", url);
       _pfc->AddResponseHeaders(buf);
       _pfc->ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER,
       "302 Moved Permanently",    NULL, NULL);
       return;
}
1.1.2          在服务器上的安装配置ISAPI Filter
正确的配置ISAPI Filter才能保证系统能够正常工作。在Windows 2003的服务器上配置IIS的ISAPI Filter的步骤如下:
(1)     打开IIS管理器
(2)     展开左侧的目录树,选择网站,单击鼠标右键,选择属性
(3)     选择ISAPI 筛选器一栏
(4)     点击添加按钮,筛选器名称填“WebIPS”,可执行文件选择WebIPS所在的路径,单击确定添加完毕。
(5)     如果需要重新加载ISAPI ,需要重启IIS服务。
在完成上述步骤后,通过浏览器访问下服务器所在的网站,如果状态栏变为绿色向上箭头,说明系统已经可以正常工作,否则说明ISAPI Filter没有加载成功。
1.2     基于Lua的策略实现
在这个Web的入侵防御系统的设计中,策略引擎可以加载C++实现的策略和脚本实现的策略脚本。C++实现的策略效率高但因为采用硬编码的方式集成到系统中,除了少量的数据信息可以通过配置文件在加载时动态配置外,其策略的逻辑无法灵活的修改。而脚本由于其动态解析的特点,策略的逻辑可以很方便的通过修改策略脚本完成,也可以通过策略脚本提供更多的策略。虽然脚本方式的策略在效率方面低于C++实现的策略,我们可以根据服务器的配置及需求在C++实现的策略高效和脚本的方便灵活上找到一个平衡点。在考察了各种脚本引擎的特点后,我们为本系统采用Lua语言作为它的策略脚本语言。
1.2.1          对策略的封装
要让Lua作为策略的脚本语言首先得完成对策略的封装。在前面的设计部分已经介绍了策略实现中需要提供的几个接口。由于Lua的特性,可以在C++ 中很方便的调用Lua编写的函数,所以可以在Lua策略脚本中,通过Lua函数的方式提供策略引擎所需要的OnRecv和OnSend接口。当策略引擎调用Lua策略时,会向Lua脚本中的OnRecv和OnSend函数传递client对象这个参数。我们需要将此对象封装成Lua脚本能识别的形式。在Programming in Lua[7]和《我的编程感悟》[8]中都介绍了如何将C++的类封装成LuaTable的实例,这里就不在介绍了
1.2.2          Lua策略脚本示例
使用Lua语言编写策略脚本非常简单,下面是一段用来过滤SQL注入关键字的Lua策略脚本示例:
warning_msg = [[
       <html>
       <head>
              <meta http-equiv="Content-Language" content="zh-cn">
              <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
              <title>请你自重</title>
       </head>
       <body bgcolor="#D6D3CE">
       <p><b><font size="2"> 你的攻击行为已经被记录</font></b></p><hr><p><b><font size="2"><span lang="en-us">BY 林海峰 </span>版权所有</font></b></p>
       </body>
</html>
]]
 
function OnRecv(request)
       url = request:GetServerVariable("QUERY_STRING")
       Logger.Append("AntiSQLInject", url)
       if CheckSqlKey(url) then
              return Response.SendMsg(request, "200 OK", warning_msg);
       end
end
 
function CheckSqlKey(str)
       local test_key = {"and", "or"}
       str = string.lower(str)
       for i,v in ipairs(test_key) do
              if string.find(str, v) then
                     return true
              end
       end
       return false
end
1.3     基于xml的策略管理
在这套系统中,我们通过xml配置文件来管理策略的信息。我们使用tinyxml库完成xml文件的解析与生成。例如,我们将上面的lua脚本保存为AntiSQLInject.lua后可以使用如下的config.xml文件使系统加载该策略。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<PolicyList>
  <Policy Name="AntiSQLInject" Description="Anti SQL Inject" Loader="lua" Path="Policy\AntiSQLInject.lua" Type="USER" Priority="1" Enable="true" />
  </PolicyList>
IIS加载我们的ISAPI Filter 的DLL成功后,会读取该目录下的config.xml文件,并通过xml中的policy列表加载策略。按照上面的xml文件信息所示,AntiSQLInject.lua应该存放在Policy目录下。
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师