




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、哈尔滨工程大学信息安全研究中心项目概要设计报告编号: HEUISRC-RDT-014 版本: 1.1 密级:编写:吕敬辉 -郝建波 -贺婷日 期:检查:日 期:审核:日 期:批准:日 期:版本日期作者修 订 要 点1.0 2007-03-20 杨武文件建立杨武内容及文档结构修订1.1 2007-03-21 目 录一、引言 1.1 编写目的 对网络数据流异常检测系统的整体开发进行概要设计,为系统编程提供基础支持。1.2 项目背景 项目名称网络数据流异常检测,该项目主要对网络数据出现大的流量变化,尤其对 syn、fin 、ping、端口和主机不可达事件进行异常检测并报警。1.3 术语libPcap
2、 缩写、术语解 释捕包库函数MySQL 数据库C+ builder 界面编程ODBC 数据库访问接口标准adsystem服务器端数据库名Newadsystem本地绑定远程数据库的系统数据源变量1.4 参考资料二、任务概述 2.1 系统描述 后台:1)本系统能够对网络出入口的数据包进行分析,统计出 TCP、UDP、ICMP 等协议以及 TCP-SYN 事件、 TCP-FIN 事件、 ICMP_PING 事件、 ICMP_3.1 事件(主机不可达 事件)、ICMP_3.3 事件(端口不可达事件)的包的数量。2)通过异常检测算法,对这些统计数量进行异常检测。根据统计结果用自回归模 型对网络数据流量进
3、行预测,当某时刻数据流和预测结果不同时触发报警事件。数据库:将统计量、异常信息存入数据库中前台:1)进行通讯:发送给后台登录、检测、关闭的标识;接收后台数据,包括登录标 识、流量包统计数及异常报警标识。2)对数据解析之后,对用户的不同类型检测的要求进行实时动态曲线的描绘;3)对异常事件进行报警 4)对历史流量及异常信息进行数据库查询 2.2 开发与运行环境 Linux 操作系统平台 C+ builder 、MySQL 数据库 提供各种端口扫描的机器 2.2.1 开发环境的配置类别标准配置最低配置计算机硬件计算机软件网络通信Linux 、Windows 操作系统、mysql 数据库管理工具、c+
4、 builder 前台开发工具 ODBC 其它2.2.2 运行环境的配置类别标准配置最低配置计算机硬件计算机软件 网络通信Linux 、Windows 操作系统、mysql 数据库管理工具 ODBC 其它2.2.3测试环境的配置 计算机软件: Linux 、 Windows 操作系统、 mysql 数据库管理工具网 络通 信: ODBC2.3 需求概述 用户登录:用户输入服务器地址、用户名、密码访问,验证用户权限是否正确用户其他操作:用户的其他操作需要并行进行。包括四个部分,介绍如下:1、动态实时曲线描绘:1) 配置信息, 用户可自己配置流量统计时间间隔,根据不同的流量类型, 设置曲线图的数据
5、显示高度,同时可设置曲线图的显示宽度(辅助设计);2) 对于各项值, 需要提供默认值, 尤其数据显示高度, 需根据以往的数据流量 值给出一个不同类型协议或事件的参考值;3) 完成信息的配置,启动检测,则在设置的时间间隔内开始描点;4) 曲线的描绘:曲线为动态波动、有规律进行的。2、异常检测:当后台检测到异常时,立即发出警报提示。3、历史流量数据的查询:用户可根据协议 量查询。4、异常流量信息查询:用户可根据协议 信息查询。2.4 条件与限制三、总体设计3.1 系统设计原则 在 linux 环境下进行系统后台的编程,用/事件类型及检测的时间范围完成历史流/事件类型及检测的时间范围完成异常流量li
6、bcap 库函数进行抓包,并对包进行分析,统计出 TCP、UDP、ICMP 等协议以及 TCP-SYN 事件、 TCP-FIN 事件、 ICMP_PING 事 件、 ICMP_3.1 事件(主机不可达事件) 、ICMP_3.3 事件(端口不可达事件)的包的数 量。统计完成后将数据传递给异常检测算法和数据库,异常检测算法根据初始统计的正常数据包数量对以后到达的数据包进行预测分析,出现异常时调用 socket函数传递给前台一个异常信号, c+ building 来进行异常报警。另外 pcap统计的包的数量也要传递给前台来建立一个正常流量模型。其中向前台传递正常数据和异常信息分别用一个分线程,还有一
7、个分线程用来接收前台的命令。3.2 系统网络结构网 外网 外服务器 192.168.101.201系统网络结构如图3.1 所示:路由器 192.168.100.1路由器 192.168.101.1用户交换机交换机用户用户用户用户用户图 3.1 系统网络结构图3.3 实现框架与处理流程1、系统总体设计流程如图 3.2 所示:数据包捕获数据流套接字通信 数据包的分析分类存储滑窗算法前台显示报警异常检测存储异常事件数据库数据库连接图 3.2 系统总体设计流程图2、前台业务流程如图 3.3 所示:开始登录失败通讯获取登录标识成功异常标识启动主线程用户并行操作数据标识异常报告描绘曲线检测查看历史流量查看
8、异常流量关闭发送关闭标识结束图 3.3 前台业务流程图3.4 结构模块设计结构模块如图 3.4 所示:数据流异常检测系统前台 后台登录模块用户操作模块多线程模块数据包捕获异常检测通讯模块非查查保通法看看存接曲异字历异配收线常讯符史常置数描报判流信信据绘警断量息息图 3.4 系统结构模块 模块一览表模块名称标识符模块功能模块性能要求登录模块Login 与后台进行连接通讯; 判能够及时返回断字符是否合法; 判断登用 户 登 录 信录,登录成功,开启主线息,提供登录程。或 重 登 录 信息。用户操作模块Configuration 对数据库操作: 保存配置能快速的对数多线程模块信息,提供检测启动标据
9、库 进 行 操识;查看历史流量信息;作,返回用户查看异常流量信息。查询信息TCommunicationThread 接收后台数据, 判断数据当用户进行检数据包捕获类型,解析数据,启动曲测时,应及时线描绘函数及异常警报的、有规律的线程。描绘出曲线PCAP 在网络数据流里捕获数对 TCP、UDP、据包并对数据包进行统ICMP 等数据计,提取出相关的数据信流 量 进 行 统息进行分析并存储于数计,检测出相据库中。关数据流量的异常。异常检测Anomaly detection 检测异常数据流对不符合捕获数据包正常流量的进行检测并报警通讯communication 进行前后台的通信将统计得数据包数量直接输
10、送到前台进行显示以及异常检测的显示。3.5 功能需求与程序模块的关系需求代码捕包模块异常检测模块通讯登录模块用户操作模块前台多线程模块获取原始数据流异常数据检测存储数据查询数据库接收数据发送数据显示结果3.6 尚未解决的问题四、接口设计4.1 外部接口4.2 内部接口4.2.1 MySQL 数据库和前台 1)连接步骤c+ builder 的连接第一步:使用 ODBC数据库访问接口标准,绑定服务器 adsystem 数据库建立一个数据源 Newadsystem;第二步: 使用 Databasesource(一个能和远端资料库透过 BDE 进行连结的元件) ,绑定数据源 Newadsystem,可
11、以储存登入资料库所需的身分认证资料,包括用户名密码,确保以后的数据库操作中,不在需要确认;第三步:使用 Query 数据库存取元件,绑定 Databasesource;第四步:使用 Datasource 传递元件,将 Query 取得的值传递给显示元件;第五步:使用 StringGrid 元件,将获取到的数据显示。2)数据库连接及数据存取示意图如图 4.1 所示:ODBC数据 源用Database提供Query将获Data传递String可直取到sour接获给显数据户名source的数Grid取的元件ce示元源密码 绑定元件据暂元件资料件元件存库服务器地址访问远端数据库 adsystem图 4
12、.1 数据库连接及数据存取示意图4.2.2 MySQL 数据库和后台Linux 的连接sql 描述符m_sql,再用主要是调用API 函数,先用mysql_init 初始化一个mysql_real_connect去连接服务器上的mysql,然后用 mysql_query 对数据库进行读写操作,其中读数据库操作还要 mysql_query和 mysql_fetch_row 来读出和存储数据库中的值。4.2.3 后台 Linux 与前台界面的 socket连接套接字有两套, 分别为后台作为 socket服务器端前台作为 socket客户端和后台作为socket客户端前台作为 socket服务器端。
13、 也是调用相关的API 函数来实现套接字连接与通信,其中服务器端先用 socket 函数初始化一个 socket描述符 sock_fd,对 sockaddr_in结构体的成员变量进行赋值,其中sin_family 为 AF_INET ,sin_port =为 4005,地址是本地地址,完了以后用 bzero函数将结构体其余空间清零,然后用 bind 函数进行端口与本地地址绑定,用 listen 函数来监听是否用连接,用连接是用 accept函数生成一个连接socket描述符 new_fd,用 recv 函数来接受前台传来的数据。五、数据结构设计5.1 逻辑结构设计1)后台TCP typedef
14、 struct tcp_node/存储 TCP 流量的循环链表,结构体初始化 int value; /TCP 流量大小struct tcp_node *next;/定义指针tcp_node; tcp_node *head,*tail;/TCP 循环链表头尾指针typedef struct tcpsyn_node/存储 TCPSYN 流量的循环链表,结构体初始化 int value; /TCPSYN 流量大小struct tcpsyn_node *next;/定义指针 tcpsyn_node; tcpsyn_node *head,*tail;/TCPSYN 循环链表头尾指针typedef str
15、uct tcpfin_node/存储 TCPFIN 流量的循环链表,结构体初始化 int value; /TCPFIN 流量大小struct tcpfin_node *next;/定义指针 tcpfin_node; tcpfin_node *head,*tail;/TCPFIN 循环链表头尾指针typedef struct udp_node/存储 UDP 流量的循环链表,结构体初始化 int value; /UDP 流量大小 struct udp_node *next; /定义指针 tcpudp_node; udp_node *head,*tail;/UDP 循环链表头尾指针typedef s
16、truct icmp_node/存储 ICMP 流量的循环链表,结构体初始化 int value; /ICMP 流量大小 struct icmp_node *next;/定义指针 icmp_node; icmp_node *head,*tail;/ICMP 循环链表头尾指针typedef struct icmpping_node/存储 ICMPPING 流量的循环链表,结构体初始化 int value; /ICMPPING 流量大小 struct icmpping_node *next;/定义指针 icmpping_node; icmpping_node *head,*tail;/ICMPPI
17、NG 循环链表头尾指针typedef struct icmp31_node/存储 ICMP31 流量的循环链表,结构体初始化 int value; /ICMP31 流量大小struct icmp31_node *next;/定义指针 icmp31_node; Icmp31_node *head,*tail;/ICMP31 循环链表头尾指针typedef struct icmp33_node/存储 ICMP33 流量的循环链表,结构体初始化 int value; /ICMP33 流量大小struct icmp33_node *next;/定义指针 icmp33_node; Icmp33_node
18、 *head,*tail;/ICMP33 循环链表头尾指针2)前台实现登录功能,创建的类函数,主要完成用户登录及通讯。class TLoginForm : public TForm _published: 系统自定义的控件private: / User declarations public: / User declarations _fastcall TLoginForm(TComponent* Owner); /登录表单的构造函数AnsiString Judgement(AnsiString EditContent); /非法字符判断函数; AnsiString GetLLtime ; /
19、保存获取到的系统时间的变量AnsiString ServiesAddress; /保存服务器地址的变量实现流量检测,包括异常流量报警,正常流量曲线模型的绘制;实现历史流量及异常流量的历史数据查询操作,对数据库进行取操作。class TConfigurationForm : public TForm _published: /声明系统的控件及方法函数private: / User declarations public: / User declarations _fastcall TConfigurationForm(TComponent* Owner);/ 配置窗口的构造函数int _fast
20、call connect_database1(AnsiString Ip); /Socket 通讯函数AnsiString PotocolType; /记录时间间隔值int wWidth; /坐标宽度变量int WHight; /坐标高度变量void DrawDot (int DotValue,int count); /描绘曲线函数函数int TCtime; /保存配置信息时间差int SummitMessage; void CheckHistoryDatabass(); AnsiString HistoryType; /保存配置完成标识符 /历史流量数据库查询函数 /所需查询的历史流量类型i
21、nt SumCount; /记录从历史流量表查询到的记录数int AERecordCount; int sock_fd, numbytes; /记录从异常流量数据库中获取到的记录数 /通讯端口使用的全局变量char recvbuf100; /接收后台数据char sendbuf100; /发送数据char command20; /发送关闭值; 主线程类函数,用于保持接收后台数据,并且进行数据解析,曲线绘制函数的调用及异常报警线程的调用。class TCommunication : public TThread private: protected: public: ; void _fastca
22、ll Execute(void); /线程的执行方法函数/int CommunicationSelect; _fastcall TCommunication(); /线程的构造函数AnsiString _fastcall Connect(); /连接函数从线程类函数,用于实现异常报警。class TWarningThread : public TThread private: protected: public: ; void _fastcall Execute(void); /报警线程的执行方法函数_fastcall TWarningThread(); /报警线程的构造函数/AnsiStri
23、ng TempMessage; 5.2 物理结构设计 5.3 数据结构与程序代码的关系结构代码捕包模块异常检测模块数据库模块前台struct ether_headerstruct in_addrstruct arp_headerstruct ip_headerstruct udp_headerstruct tcp_headerstruct icmp_headerstruct Linklistclass TLoginForm class TConfigurationForm class TCommunication class TWarningThread 六、 数据库设计6.1 异常信息表 a
24、_yichang(对异常时间段内异常包的信息进行统计)异常的协议类型, Yevent 表示包出现异常的事件类型,。其中 Yprotocol 表示包出现 Ytime 表示统计异常事件发生的时间, Ynumber 表示异常事件还有此类型事件的个数。表 6.2 异常信息表( a_yichang)字段含义字段名称数据类型长度空备注ID ID Int 11 否主键,自增协议类型Yprotocol Varchar 10 时间类型Yevent Varchar 10 检测时间Ytime Datatime 10 异常包个数Ynumber Int 6.2 流量表 a_liuliang(对包中的 tcp 等协议流量
25、以及tcp-syn 等事件流量进行统计) 。其中 Ltcp表示单位时间内捕获的 tcp 协议的包的数量, Ludp 表示单位时间内捕获的 udp 协议的包的数量, Licmp 表示单位时间内捕获的 icmp 协议的包的数量, Lsyn 表示单位时间内捕获的含有 syn 事件的包的数量, Lfin 表示单位时间内捕获的含有 fin 事件的包的数量,Lping 表示单位时间内捕获的含有 捕获的含有主机不可达事件的包的数量,达事件的包的数量。ping 事件的包的数量, Lzhu 表示单位时间内 Lduan 表示单位时间内捕获的含有端口不可表 6.1 流量表( a_liuliang)字段含义字段名称数
26、据类型长度空备注ID ID Int 11 否主键,自增Ltcp Int 10 Tcp 包数量Udp 包数量Ludp Int 10 Icmp 包数量Licmp Int 10 Syn 包数量Lsyn Int 10 Fin 包数量Lfin Int 10 Lping Int 10 Ping 包数量Lzhu Int 10 Icmp_3.1 包数量Lduan Int 10 Icmp_3.2 包数量Ltime Datatime 检测时间6.3 配置信息表a_configuration (前台给后台配置时间窗口大小)大小。Ctime 表示前台给后台传的的捕包的窗口表 6.2 配置信息表( a_configuration)字段含义字段名称数据类型长度空备注ID ID Int 11 否主键,自增统计流量时间差Ctime Varchar 10 6.4 用户表 表 6.4 用户表( a_user)字段含义字段名称数据类型长度空备注ID ID Int 11 否主键,自增用户名Uus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论