欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    信息安全产品开发实践项目入侵检测系统.docx

    • 资源ID:13082812       资源大小:167.19KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    信息安全产品开发实践项目入侵检测系统.docx

    1、信息安全产品开发实践项目入侵检测系统基于Libnids的入侵检测系统详细设计说明书 信息安全产品开发实践项目入侵检测系统姓名学号责任谭飞0543042190详细设计,演示报告孙尧0543042139概要设计姚丁菱0543042251测试报告韦聪0543042069操作手册赵国璧0543032010进度报告,项目开发总结目录1引言 31.1编写目的 31.2项目背景 31.3定义 41.4参考资料 42总体设计 52.1需求概述 52.2软件结构 53.1功能 73.2性能 83.3输入项目 83.4输出项目 83.5 程序实现 83.6程序逻辑 133.7限制条件 133.8测试要点 131引

    2、言1.1编写目的该说明文档用于指导开发人员在后阶段的开发,是后面开发人员的参考,开发人员须严格按照这份文档的要求来进行开发。包括各种细节,比如类的命名,注释的规范,设计模式等,这样才能更有利于团队的协作。同时该文档也是最后量化该项目整个过程的重要参考资料1.2项目背景项目题目:基于libnids的入侵检测简单描述:在该项目是在学习信息安全开发实践()的同时,与课程相关的实验课,课程需要我们从编写程序的层次来理解安全方面的知识。所以我们的项目就是一个基于网络入侵检测开发包-libnids的入侵检测工具,能够完成简单的异常ip数据包,tcp数据包,以及端口扫描检测。项目目的:了解一些基本的网络安全

    3、知识,知道如何在linux利用网络安全开发包进行开发,同时完成一个小的入侵检测程序,让小组的每一个人都能动手进行网络安全开发,并对其有一定的了解,这也与本门课程的要求是一致的。该项目的开发者是:谭飞 孙尧 赵国璧 韦聪 系统测试:姚丁菱系统运行环境:a.实验的操作系统本试验是在Linux下面完成的,其中的操作系统的信息如下:b.选用的编译器本实验采用gcc为编译器,其具体的版本信息如下:roothanrentanfei-desktop:/home/hanrentanfei# gcc v使用内建 specs。目标:i486-linux-gnu配置为:./src/configure -v -ena

    4、ble-languages=c,c+,fortran,objc,obj-c+,treelang -prefix=/usr -enable-shared -with-system-zlib -libexecdir=/usr/lib -without-included-gettext -enable-threads=posix -enable-nls -program-suffix=-4.1 -enable-_cxa_atexit -enable-clocale=gnu -enable-libstdcxx-debug -enable-mpfr -enable-checking=release i4

    5、86-linux-gnu线程模型:posixgcc 版本 4.1.2 (Ubuntu 4.1.2-0ubuntu4)1.3定义libpcap linux系统 下数据捕获子系统是利用libpcap来开发的。libpcap是一个通用UNIX系统网络接口程序包,目前支持的操作系统有BSDUNIX、 SOLARIS系统、SUNOS、LINUX及HPUX等系统。该函数库目前只支持所有的网络接口的读数据的操作。libnet允许开发者构造和发送网络数据包。libnet提供了一个对底层网络数据包进行构造、修改和发送的高级接口。它隐藏了很多底层细节,省去了很多麻烦,如多路技术、缓冲区管理、网络数据包头信息、字节

    6、流顺序、操作系统兼容性,以及校验和计算问题等。libnet主要提供了在IP层和链路层构造网络数据包的功能和一些非常有用的辅助功能。使用libnet可以非常轻松、快捷地构造任何形式的网络数据包,开发各种各样的网络安全应用程序,甚至非常复杂的程序。libnet主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能.libnids 是一个网络入侵检测开发的专业编程接口。它实现了基于网络的入侵检测系统的基本框架,并提供了一些基本的功能。使用libnids可以快速地构建基于网络的入侵检测系统,并可以在此基础上进一步扩展开发。libnids实现了入侵检测系统的底层功能,使开发者可以专注于高层的功能开

    7、发。libnids是基于libpcap和libnet而开发的,所以它具有libpcap和libnet的优点,具有较强的移植性,效率高,使用简单。libnids是仿造Linux 2.0.x内核中的TCP/IP协议部分而实现的,具有高可靠性,并通过了许多测试。1.4参考资料参考文档:该项目的概要设计参考资料:编号资料名称简介作者日期出版单位1Linux软件工程师(C语言)实用教程基础知识刘海波 张益先2006年5月科学出版社2Linux C 编程Linux下面的编程入门书籍李玉波 朱自强郭军2004年清华大学出版社3软件工程教材美Pressman2006年机械工业出版社2总体设计2.1需求概述网络

    8、嗅探也成网络监视,主要是指检测网络信息,查看网络内容。针对不同的目的,有各种各样的故障,它可以利用网络嗅探技术来实现。对于网络非法攻击者来说,为了获得敏感信息,他也可以利用网络嗅探技术来获取他所需要的内容,如,密码、用户、帐号等。后面,读者将可以看到,利用Libnids可以轻松获取很多协议传输的用户和密码。所以说,Libnids是一把双刃剑。除此之外,利用Libnids还可以重现网络内容,还原网络数据,如重现HTTP协议中传输的网页,POP3协议中传输的电子邮件等。本系统的主要需要实现的功能如下:异常TCP数据包检测:利用libnids检测异常的tcp数据包。异常IP数据包检测:利用libni

    9、ds检测异常的IP数据包检测端口扫描攻击:利用libnids检测端口扫描攻击2.2软件结构3程序描述捕获数据模块:该模块由libnids完成,由libnids循环捕获数据包。其是通过nids_run();来完成的。数据分析模块:其是根据libnids中定义的结构体的状态来判断其是属于哪一类异常数据包,然后再对其进行分析,再将结果显示打印出来。其第一级模块分解视图如下:模块视图的第二级分解:异常IP数据包处理模块:该模块首先判断其ip数据包头是否被损坏,如果未被损坏,则打印其头部的相关信息,比如ip地址等,然后再根据其相应的错误编号来打印其攻击信息。如果ip头部已经损坏则,无法打印其ip地址相关

    10、信息,所以直接根据错误号,来打印其相关的入侵信息。异常TCP数据包处理模块:同上面的处理一样,该模块首先判断其TCP数据包头是否被损坏,如果未被损坏,则打印其头部的相关信息,比如ip地址等,然后再根据其相应的错误编号来打印其攻击信息。如果ip头部已经损坏则,无法打印其ip地址相关信息,所以直接根据错误号,来打印其相关的入侵信息。此处应该注意的是,如果其头部损坏我们是无法获得其端口信息的。端口扫描检测模块:当扫描攻击发生后,我们首先列出其扫描数。然后列出其主机信息以及被扫描端口信息,然后获得其标志为来判断其扫描类型。系统的大体模块和其实现如上面所描述。3.1功能其功能点描述如下:用户配置文件,这

    11、是加强可修改性而使系统具备的一个功能,通过配置文件战术来满足这个质量属性。(注:该功能点暂时还未实现)抓取网络数据包, 这是入侵检测的第一步,目的是捕获网络上面的数据包,只有抓到了数据包才能对数据包进行分析,进而发现其中的攻击信息。IP碎片重组, 这是将分片到来的数据包进行重新组合,以使分散的信息重新组合成完整的信息,进而可以方便的进行分析,保证不会让任何企图以分片发送的信息漏掉。TCP数据流重组, 这是要求在利用Libnids分析基于TCP协议的各种协议时,不仅可以分析各种单个的TCP协议数据包,而且可以分析整个的TCP连接过程。这对于分析诸如FTP,HTTP,POP3等协议非常有帮助。端口

    12、扫描攻击检测, 端口扫描一般是网络攻击的第一步,本系统要求具备识别端口扫描攻击的能力,能在敌人进行端口扫描的时候进行报警并进行相应的措施进行挽救。异常数据包检测, 这是本系统的核心功能,也是诸如端口扫描攻击检测的基础,通过数据包异常检测,可以分析隐藏在数据包里面的攻击信息。将分析得到的攻击信息以友好的方式显示给用户, 这是和用户打交道的功能之一,目的是将系统通过分析和检测得到的攻击信息显示给用户,让用户即时的了解到系统的信息。3.2性能由于本程序的实现比较简单,利用的是libnids包进行开发的,其在性能基本能达到预定的期望,在测试的时候能够及时的发现端口扫描攻击,由于时间上的限制,在构造异常

    13、的ip数据包和tcp数据包上没有很好的完成,所以正两部分的性能完成不还不知道。3.3输入项目输入项目:为其nids捕获的各种数据包3.4输出项目输出项目:对数据包分析后打印其结果,比如入侵主机的信息,扫描端口的信息,扫描的类型等。3.5 程序实现本系统的主要程序源代码如下:#include string.h#include nids.h#include #include #include #include #include #include #include /*下面是检测扫描用的扫描信息数据结构 */struct scan u_int addr; /* 地址 */ unsigned shor

    14、t port; /* 端口号 */ u_char flags; /* 标记 */;/*下面是检测扫描时用到的扫描主机数据结构 */struct host struct host *next; /* 下一个主机结点 */ struct host *prev; /* 前一个主机结点 */ u_int addr; /* 地址 */ int modtime; /* 时间 */ int n_packets; /* 个数 */ struct scan *packets; /* 扫描信息 */;/*下面是IP协议首部的数据结构 */struct ip_header #if defined(WORDS_BIG

    15、ENDIAN) unsigned int ip_v: 4, ip_hl: 4; #else unsigned int ip_hl: 4, ip_v: 4; #endif unsigned int ip_tos; unsigned char ip_len; unsigned char ip_id; unsigned char ip_off; unsigned int ip_ttl; unsigned int ip_p; unsigned char ip_csum; struct in_addr ip_src; struct in_addr ip_dst;/*下面是TCP协议首部的数据结构 */s

    16、truct tcp_header0 unsigned char th_sport; /* 源端口号 */ unsigned char th_dport; /* 目的端口号 */ unsigned short th_seq; /* 序列号 */ unsigned short th_ack; /* 确认号 */ #ifdef WORDS_BIGENDIAN unsigned int th_off: 4, /* 数据偏移 */ th_x2: 4; /* 保留 */ #else unsigned int th_x2: 4, /* 保留 */ th_off: 4; /* 数据偏移 */ #endif u

    17、nsigned int th_flags; unsigned char th_win; /* 窗口大小 */ unsigned char th_sum; /* 校验和 */ unsigned char th_urp; /* 紧急指针 */;/*下面是检测扫描攻击和异常数据包的函数 */static void my_nids_syslog(int type, int errnum, struct ip_header *iph, void *data) static int scan_number = 0; char source_ip20; char destination_ip20; char

    18、 string_content1024; struct host *host_information; unsigned char flagsand = 255, flagsor = 0; int i; char content1024; switch (type) /* 检测类型 */ case NIDS_WARN_IP: /*ip 数据包异常*/ if (errnum != NIDS_WARN_IP_HDR) strcpy(source_ip, inet_ntoa(*(struct in_addr*) &(iph-ip_src.s_addr); strcpy(destination_ip,

    19、 inet_ntoa(*(struct in_addr*) &(iph-ip_dst.s_addr); printf(%s,packet(apparently from %s to %sn, nids_warningserrnum, source_ip, destination_ip);/*打印出异常信息*/ else printf(%sn, nids_warningserrnum); break; case NIDS_WARN_TCP:/*ip 数据包异常*/ strcpy(source_ip, inet_ntoa(*(struct in_addr*) &(iph-ip_src.s_addr

    20、); strcpy(destination_ip, inet_ntoa(*(struct in_addr*) &(iph-ip_dst.s_addr); if (errnum != NIDS_WARN_TCP_HDR)/*头部正常*/ /*printf(%s,from %s:%hi to %s:%hin, nids_warningserrnum, source_ip, ntohs(struct tcp_header*)data)-th_sport), destination_ip, ntohs(struct tcp_header*)data)-th_dport);*/ else printf(

    21、%s,from %s to %sn, nids_warningserrnum, source_ip, destination_ip); break; case NIDS_WARN_SCAN: /*扫描攻击发生*/ scan_number+; sprintf(string_content, - %d -n, scan_number); printf(%s, string_content); printf(- 发现扫描攻击 -n); host_information = (struct host*)data; sprintf(string_content, 扫描者的IP地址为:n); printf

    22、(%s, string_content); sprintf(string_content, %sn, inet_ntoa(*(struct in_addr*) &(host_information-addr); printf(%s, string_content); sprintf(string_content, 被扫描者的IP地址和端口号为:n); printf(%s, string_content); sprintf(string_content, ); for (i = 0; i n_packets; i+) strcat(string_content, inet_ntoa(*(stru

    23、ct in_addr*) &(host_information-packetsi.addr); sprintf(string_content + strlen(string_content), :%hin, host_information-packetsi.port); flagsand &= host_information-packetsi.flags; flagsor |= host_information-packetsi.flags; printf(%s, string_content); sprintf(string_content, ); if (flagsand = flag

    24、sor) i = flagsand; switch (flagsand) case 2: strcat(string_content, 扫描类型为: SYNn); break; case 0: strcat(string_content, 扫描类型为: NULLn); break; case 1: strcat(string_content, 扫描类型为: FINn); break; default: sprintf(string_content + strlen(string_content), 标志=0x%xn, i); else strcat(string_content, 标志异常n)

    25、; printf(%s, string_content); break; default: sprintf(content, 未知); printf(%s, string_content); break; /*主函数 */int main() nids_params.syslog = my_nids_syslog; /* 注册检测攻击的函数 */ nids_params.pcap_filter = ip; /*设置过滤规则,只捕获ip数据包*/ if (!nids_init() /* Libnids初始化 */ printf(出现错误:%sn, nids_errbuf); exit(1); nids_run(); /* 进入循环捕获数据包的状态 */3.6程序逻辑程序的大体流程图如下:3.7限制条件限制条件:1. 必须运行在X86-based 的Linux操作系统下面2. gcc版本需在4.1.2以上。3. 系统必须安装了:LibPcap、Libnids等网络安全开发包4. 系统必须要安装flex,运行:apt-get install flex5. 系统必须安装bison,需要用到里面的yacc,运行:apt-get install bison3.8测试要点测试异常IP数据包检查测试异常TCP数据包检查测试检测端口扫描


    注意事项

    本文(信息安全产品开发实践项目入侵检测系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开