信息安全产品开发实践_第1页
信息安全产品开发实践_第2页
信息安全产品开发实践_第3页
信息安全产品开发实践_第4页
信息安全产品开发实践_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用libnids构建入侵检测系统(1)四川大学软件学院2009-09助教姓名 QQ号 邮箱罗云 814314989 cloudluo99@王亮 354185558 legend115599@王正霞 593910963 xiaxia_588@126.com李雯 908441949win_lee19860830@3主要内容讲解Libnids的数据结构函数,并给出一些具体的例子,同学们在此基础上实现一个简单的协议分析程序或是一个简单的入侵检测系统4什么是libnidsLibnids是一个基于网络入侵检测开发的专业编程接口。我们利用Libnids可以实现:网络数据包的捕获;IP碎片重组、TCP流数据重组;入侵检测。5Libnids的安装

安装Libnids必须要有Libpcap、Libnet库的支持,所以要想是试用Libnids必须按照Libpcap、Libnet与Libnids的顺序安装这三个软件包

安装方法:

1)下载源码包;2)释放归档文件;

3)./configure;make;makeinstall6Libnids编程模型#include“nids.h”main(){applicationprivateprocessing,notrelatedtolibnidsoptionalmodificationoflibnidsparametersif(!nids_init())something'swrong,terminate;registrationofcallbackfunctionsnids_run();

//notreachedinnormalsituation}7Libnids基本数据结构(1)TCP连接参数structtuple4{/*源端口和目的端口*/

unsignedshortsource,dest;/*源地址与目的地址*/

unsignedlongsaddr,daddr;};8Libnids基本数据结构(2)TCP连接单端信息

structhalf_stream{

用23个变量了描述TCP连接信息…….};9Libnids基本数据结构(3)Charstate;表示套接字的状态,如TCP_CLOSE、TCP_ESTABLISHED;charcollect;用来指示本端是否接收数据,>0,将数据存放在data指向的字符缓冲区,<0,忽略进入本端的数据;

charcollect_urg;用于指示本端是否接受紧急数据;

char*data;字符缓冲区,用于存放流向本端的数据

intcount;用于指示连接建立后本端已经接受的字节数;10Libnids基本数据结构(4)intoffset:表示存储在data中数据的第一个字节的偏移量;intcount_new;用于指示是否有新数据到达本端,为0表示没有新数据 charcount_new_urg;用于指示是否有新的紧急数据到达本端,为0表示没有新的数据

11Libnids基本数据结构(5)TCP连接完整信息structtcp_stream{ structtuple4addr; charnids_state; structhalf_streamclient,server;

……};12Libnids基本数据结构(6)addr:用于表示一个TCP连接的四个重要信息;nids_state:表示连接的逻辑状态,共有六种状态: NIDS_JUST_EST NIDS_CLOSE NIDS_RESET NIDS_TIMED_OUT NIDS_EXITINGNIDS_DATA

13Libnids基本数据结构(6)成员client表示客户端信息,成员server表示客户端信息。14Libnids库中常用函数(1)intnids_init(void)

函数成功返回1,失败返回0

函数功能:对libnids进行初始化,包括打开网络接口,打开文件,编译过滤规则、设置过滤规则、判断网络链路层信息15Libnids库中常用函数(2)Voidnids_run(void);

此函数的功能是运行libnids,进入循环捕获数据包的状态,并将捕获的数据包交给注册的回调函数进行处理16Libnids库中常用函数(3)注册函数:针对IP、TCP、UDP协议分为三类注册函数IP注册函数

voidnids_register_ip(void(*))

注册一个可以处理IP数据包的函数,该函数的定义类型如下:

voidip_function(structip*a_packet)其中a_packet表示的是所捕获的IP数据包17Libnids库中常用函数(4)TCP注册函数

voidnids_register_tcp(void(*))

回调函数的形式为:

voidtcp_callback(structtcp_stream*ns,void**param)

其中ns表示一个TCP全连接的所有信息,param表示要传递的参数,18Libnids库中常用函数(5)UDP注册函数

voidnids_register_udp(void(*));

回调函数的形式是

voidudp_callback(structtuple4*addr,char*buf,intlen,structip*iph);addr用于表示接收与发送端的IP地址与端口,buf表示UDP协议负载数据的内容,参数len表示UDP负载数据的长度,IPH表示一个IP数据包,包括IP首部,UDP首部以及UDP负载19Libnids库中常用函数(6)Voidnids_killtcp(structtcp_stream*a_tcp)函数功能:终止TCP连接Voidnids_discard(structtcp_stream*a_tcp,intnum)函数的功能是丢弃num字节的TCP数据,用于存储更多的数据20试验阅读与理解libnids给出的例子程序sniff和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论