如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Libnids快速入门Libnids概述Libnids(LibraryNetworkIntrusionDetectionSystem)是网络入侵检测开发的专业编程接口,实现了网络入侵检测系统的基本框架,提供了一些基本的功能。Libnids是基于Libpcap和Libnet而开发的,其主要功能包括捕获网络数据包、IP碎片重组、TCP数据流重组以及端口扫面攻击检测和异常数据包检测等。Libnids的安装因为Libnids必须支持库Libpcap和Libnet,所以在安装Libnids之前需要先安装Libpcap和Libnet。在Linux下安装Libnids的步骤:(1)安装Libpcap开发包:我们安装的版本是libpcap-0.8.3.tar.gz.tar–xzvflibpcap-0.8.3.tar.gz./configuremakemakeinstall(2)安装Libnet开发包:我们安装的版本是libnet-1.1.2.1.tar.gz.tar–xzvflibnet-1.1.2.1.tar.gz./configuremakemakeinstall(3)安装Libnids开发包:我们安装的版本是libnids-1.20.tar.gz.tar–xzvflibnids.1.20.tar.gz./configuremakemakeinstallLibnids的数据结构Libnids的状态主要有如下6种:#defineNIDS_JUST_EST1(表示TCP连接建立,在此状态下就可以决定是否对此TCP连接进行数据分析,可以决定是否捕获TCP客户端接收的数据、TCP服务器端接收的数据、TCP客户端接收的紧急数据或者TCP服务器端接收的紧急数据);#defineNIDS_DATA2(表示接受数据,在这个状态下可以判断是否有新的诗句到达,如果有就可以把数据存起来,可以在这个状态之中来分析TCP传输数据,此数据就存储在half_stream数据结构的缓存之中);#defineNIDS_CLOSE3(表示TCP连接正常关闭);#defineNIDS_RESET4(表示TCP连接被重置关闭);#defineNIDS_TIMED_OUT5(表示由于超时TCP连接被关闭);#defineNIDS_EXITING6(表示Libnids正在推出,在这个状态下可以最后一次使用存储在half_stream数据结构中的缓存数据);tuple4的数据结构:structtuple4{//下面以TCP连接为例u_shortsource;//表示源IP地址的端口号u_shortdest;//表示目的IP地址的端口号u_intsaddr;//表示一个TCP连接的一端IP地址,称为源IP地址u_intdaddr;//表示一个TCP连接的另一端IP地址,称为目的IP地址}该数据结构描述的是一个地址端口对,表示发送方IP和端口以及接收方IP和端口。half_stream结构该结构用来描述在TCP连接中一端的所有信息(可以是客户端也可以是服务器端)structhalf_stream{charstate;//表示套接字的状态,即TCP连接状态charcollect;//用来表示有数据到达,此数据存放在data成员中,当此数据可以忽略时就不需要存储charcollect_urg;//表示有紧急数据到达,此数据存在urgdata中char*data;//存储正常接收到的数据intoffset;//存储在data中数据在第一个字节的偏移量intcount;//从TCP连接开始已经存储在data中的数据的字节数intcount_new;//有多少新的数据存储到data中u_charurgdata;//存储紧急数据u_charcount_new_urg;//有新的紧急数据到达……}tcp_stream的结构该结构中成员client表示客户端信息,成员server表示服务器端信息,都是half_stream类型的,所以tcp_stream数据结构描述了一个完整的TCP连接的所有信息。tcp_stream{structtuple4addr;charnids_state;structlurker_nods*listeners;structhalf_streamclient;structhalf_streamserver;structtcp_stream*next_node;structtcp_strem*prev_nod