项目概要设计报告.docx
- 文档编号:30112307
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:24
- 大小:351.42KB
项目概要设计报告.docx
《项目概要设计报告.docx》由会员分享,可在线阅读,更多相关《项目概要设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
项目概要设计报告
哈尔滨工程大学信息安全研究中心
项目概要设计报告
编号:
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
捕包库函数
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)通过异常检测算法,对这些统计数量进行异常检测。
根据统计结果用自回归模型对网络数据流量进行预测,当某时刻数据流和预测结果不同时触发报警事件。
数据库:
将统计量、异常信息存入数据库中
前台:
1)进行通讯:
发送给后台登录、检测、关闭的标识;接收后台数据,包括登录标识、流量包统计数及异常报警标识。
2)对数据解析之后,对用户的不同类型检测的要求进行实时动态曲线的描绘;
3)对异常事件进行报警
4)对历史流量及异常信息进行数据库查询
2.2开发与运行环境
Linux操作系统平台
C++builder、MySQL数据库
提供各种端口扫描的机器
2.2.1开发环境的配置
类别
标准配置
最低配置
计算机硬件
计算机软件
Linux、Windows操作系统、mysql数据库管理工具、c++builder前台开发工具
网络通信
ODBC
其它
2.2.2运行环境的配置
类别
标准配置
最低配置
计算机硬件
计算机软件
Linux、Windows操作系统、mysql数据库管理工具
网络通信
ODBC
其它
2.2.3测试环境的配置
计算机软件:
Linux、Windows操作系统、mysql数据库管理工具
网络通信:
ODBC
2.3需求概述
用户登录:
用户输入服务器地址、用户名、密码访问,验证用户权限是否正确
用户其他操作:
用户的其他操作需要并行进行。
包括四个部分,介绍如下:
1、动态实时曲线描绘:
1)配置信息,用户可自己配置流量统计时间间隔,根据不同的流量类型,设置曲线图的数据显示高度,同时可设置曲线图的显示宽度(辅助设计);
2)对于各项值,需要提供默认值,尤其数据显示高度,需根据以往的数据流量值给出一个不同类型协议或事件的参考值;
3)完成信息的配置,启动检测,则在设置的时间间隔内开始描点;
4)曲线的描绘:
曲线为动态波动、有规律进行的。
2、异常检测:
当后台检测到异常时,立即发出警报提示。
3、历史流量数据的查询:
用户可根据协议/事件类型及检测的时间范围完成历史流量查询。
4、异常流量信息查询:
用户可根据协议/事件类型及检测的时间范围完成异常流量信息查询。
2.4条件与限制
三、总体设计
3.1系统设计原则
在linux环境下进行系统后台的编程,用libcap库函数进行抓包,并对包进行分析,统计出TCP、UDP、ICMP等协议以及TCP-SYN事件、TCP-FIN事件、ICMP_PING事件、ICMP_3.1事件(主机不可达事件)、ICMP_3.3事件(端口不可达事件)的包的数量。
统计完成后将数据传递给异常检测算法和数据库,异常检测算法根据初始统计的正常数据包数量对以后到达的数据包进行预测分析,出现异常时调用socket函数传递给前台一个异常信号,c++building来进行异常报警。
另外pcap统计的包的数量也要传递给前台来建立一个正常流量模型。
其中向前台传递正常数据和异常信息分别用一个分线程,还有一个分线程用来接收前台的命令。
3.2系统网络结构
系统网络结构如图3.1所示:
图3.1系统网络结构图
3.3实现框架与处理流程
1、系统总体设计流程如图3.2所示:
图3.2系统总体设计流程图
2、前台业务流程如图3.3所示:
图3.3前台业务流程图
3.4结构模块设计
结构模块如图3.4所示:
图3.4系统结构模块
模块一览表
模块名称
标识符
模块功能
模块性能要求
登录模块
Login
与后台进行连接通讯;判断字符是否合法;判断登录,登录成功,开启主线程。
能够及时返回用户登录信息,提供登录或重登录信息。
用户操作模块
Configuration
对数据库操作:
保存配置信息,提供检测启动标识;查看历史流量信息;查看异常流量信息。
能快速的对数据库进行操作,返回用户查询信息
多线程模块
TCommunicationThread
接收后台数据,判断数据类型,解析数据,启动曲线描绘函数及异常警报线程。
当用户进行检测时,应及时的、有规律的描绘出曲线
数据包捕获
PCAP
在网络数据流里捕获数据包并对数据包进行统计,提取出相关的数据信息进行分析并存储于数据库中。
对TCP、UDP、ICMP等数据流量进行统计,检测出相关数据流量的异常。
异常检测
Anomalydetection
检测异常数据流
对不符合捕获数据包正常流量的进行检测并报警
通讯
communication
进行前后台的通信
将统计得数据包数量直接输送到前台进行显示以及异常检测的显示。
3.5功能需求与程序模块的关系
需求代码
捕包模块
异常检测模块
通讯
登录模块
用户操作模块
前台多线程模块
获取原始数据流
√
异常数据检测
√
存储数据
√
√
√
查询数据库
√
接收数据
√
√
√
√
发送数据
√
√
√
√
√
显示结果
√
√
3.6尚未解决的问题
四、接口设计
4.1外部接口
4.2内部接口
4.2.1MySQL数据库和前台c++builder的连接
1)连接步骤
第一步:
使用ODBC数据库访问接口标准,绑定服务器adsystem数据库建立一个数据源Newadsystem;
第二步:
使用Databasesource(一个能和远端资料库透过BDE进行连结的元件),绑定数据源Newadsystem,可以储存登入资料库所需的身分认证资料,包括用户名密码,确保以后的数据库操作中,不在需要确认;
第三步:
使用Query数据库存取元件,绑定Databasesource;
第四步:
使用Datasource传递元件,将Query取得的值传递给显示元件;
第五步:
使用StringGrid元件,将获取到的数据显示。
2)数据库连接及数据存取示意图
如图4.1所示:
图4.1数据库连接及数据存取示意图
4.2.2MySQL数据库和后台Linux的连接
主要是调用API函数,先用mysql_init初始化一个sql描述符m_sql,再用mysql_real_connect去连接服务器上的mysql,然后用mysql_query对数据库进行读写操作,其中读数据库操作还要mysql_query和mysql_fetch_row来读出和存储数据库中的值。
4.2.3后台Linux与前台界面的socket连接
套接字有两套,分别为后台作为socket服务器端前台作为socket客户端和后台作为socket客户端前台作为socket服务器端。
也是调用相关的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…………………
typedefstructtcp_node//存储TCP流量的循环链表,结构体初始化
{
intvalue;//TCP流量大小
structtcp_node*next;//定义指针
}tcp_node;
tcp_node*head,*tail;//TCP循环链表头尾指针
typedefstructtcpsyn_node//存储TCPSYN流量的循环链表,结构体初始化
{
intvalue;//TCPSYN流量大小
structtcpsyn_node*next;//定义指针
}tcpsyn_node;
tcpsyn_node*head,*tail;//TCPSYN循环链表头尾指针
typedefstructtcpfin_node//存储TCPFIN流量的循环链表,结构体初始化
{
intvalue;//TCPFIN流量大小
structtcpfin_node*next;//定义指针
}tcpfin_node;
tcpfin_node*head,*tail;//TCPFIN循环链表头尾指针
typedefstructudp_node//存储UDP流量的循环链表,结构体初始化
{
intvalue;//UDP流量大小
structudp_node*next;//定义指针
}tcpudp_node;
udp_node*head,*tail;//UDP循环链表头尾指针
typedefstructicmp_node//存储ICMP流量的循环链表,结构体初始化
{
intvalue;//ICMP流量大小
structicmp_node*next;//定义指针
}icmp_node;
icmp_node*head,*tail;//ICMP循环链表头尾指针
typedefstructicmpping_node//存储ICMPPING流量的循环链表,结构体初始化
{
intvalue;//ICMPPING流量大小
structicmpping_node*next;//定义指针
}icmpping_node;
icmpping_node*head,*tail;//ICMPPING循环链表头尾指针
typedefstructicmp31_node//存储ICMP31流量的循环链表,结构体初始化
{
intvalue;//ICMP31流量大小
structicmp31_node*next;//定义指针
}icmp31_node;
Icmp31_node*head,*tail;//ICMP31循环链表头尾指针
typedefstructicmp33_node//存储ICMP33流量的循环链表,结构体初始化
{
intvalue;//ICMP33流量大小
structicmp33_node*next;//定义指针
}icmp33_node;
Icmp33_node*head,*tail;//ICMP33循环链表头尾指针
2)前台
实现登录功能,创建的类函数,主要完成用户登录及通讯。
classTLoginForm:
publicTForm
{
__published:
···系统自定义的控件
private:
//Userdeclarations
public:
//Userdeclarations
__fastcallTLoginForm(TComponent*Owner);//登录表单的构造函数
AnsiStringJudgement(AnsiStringEditContent);//非法字符判断函数
AnsiStringGetLLtime;//保存获取到的系统时间的变量
AnsiStringServiesAddress;//保存服务器地址的变量
};
实现流量检测,包括异常流量报警,正常流量曲线模型的绘制;实现历史流量及异常流量的历史数据查询操作,对数据库进行取操作。
classTConfigurationForm:
publicTForm
{
__published:
···//声明系统的控件及方法函数
private:
//Userdeclarations
public:
//Userdeclarations
__fastcallTConfigurationForm(TComponent*Owner);//配置窗口的构造函数
int__fastcallconnect_database1(AnsiStringIp);//Socket通讯函数
AnsiStringPotocolType;//记录时间间隔值
intwWidth;//坐标宽度变量
intWHight;//坐标高度变量
voidDrawDot(intDotValue,intcount);//描绘曲线函数函数
intTCtime;//保存配置信息时间差
intSummitMessage;//保存配置完成标识符
voidCheckHistoryDatabass();//历史流量数据库查询函数
AnsiStringHistoryType;//所需查询的历史流量类型
intSumCount;//记录从历史流量表查询到的记录数
intAERecordCount;//记录从异常流量数据库中获取到的记录数
intsock_fd,numbytes;//通讯端口使用的全局变量
charrecvbuf[100];//接收后台数据
charsendbuf[100];//发送数据
charcommand[20];//发送关闭值
};
主线程类函数,用于保持接收后台数据,并且进行数据解析,曲线绘制函数的调用及异常报警线程的调用。
classTCommunication:
publicTThread
{
private:
protected:
void__fastcallExecute(void);//线程的执行方法函数
//intCommunicationSelect;
public:
__fastcallTCommunication();//线程的构造函数
AnsiString__fastcallConnect();//连接函数
};
从线程类函数,用于实现异常报警。
classTWarningThread:
publicTThread
{
private:
protected:
void__fastcallExecute(void);//报警线程的执行方法函数
public:
__fastcallTWarningThread();//报警线程的构造函数
//AnsiStringTempMessage;
};
5.2物理结构设计
5.3数据结构与程序代码的关系
结构
代码
捕包模块
异常检测模块
数据库模块
前台
structether_header
√
√
√
structin_addr
√
√
√
structarp_header
√
√
√
structip_header
√
√
√
structudp_header
√
√
√
structtcp_header
√
√
√
structicmp_header
√
√
√
structLinklist
√
classTLoginForm
√
classTConfigurationForm
√
√
classTCommunication
√
classTWarningThread
√
六、数据库设计
6.1异常信息表
a_yichang(对异常时间段内异常包的信息进行统计)。
其中Yprotocol表示包出现异常的协议类型,Yevent表示包出现异常的事件类型,Ytime表示统计异常事件发生的时间,Ynumber表示异常事件还有此类型事件的个数。
表6.2异常信息表(a_yichang)
字段含义
字段名称
数据类型
长度
空
备注
ID
ID
Int
11
否
主键,自增
协议类型
Yprotocol
Varchar
10
时间类型
Yevent
Varchar
10
检测时间
Ytime
Datatime
异常包个数
Ynumber
Int
10
6.2流量表
a_liuliang(对包中的tcp等协议流量以及tcp-syn等事件流量进行统计)。
其中Ltcp表示单位时间内捕获的tcp协议的包的数量,Ludp表示单位时间内捕获的udp协议的包的数量,Licmp表示单位时间内捕获的icmp协议的包的数量,Lsyn表示单位时间内捕获的含有syn事件的包的数量,Lfin表示单位时间内捕获的含有fin事件的包的数量,Lping表示单位时间内捕获的含有ping事件的包的数量,Lzhu表示单位时间内捕获的含有主机不可达事件的包的数量,Lduan表示单位时间内捕获的含有端口不可达事件的包的数量。
表6.1流量表(a_liuliang)
字段含义
字段名称
数据类型
长度
空
备注
ID
ID
Int
11
否
主键,自增
Tcp包数量
Ltcp
Int
10
Udp包数量
Ludp
Int
10
Icmp包数量
Licmp
Int
10
Syn包数量
Lsyn
Int
10
Fin包数量
Lfin
Int
10
Ping包数量
Lping
Int
10
Icmp_3.1包数量
Lzhu
Int
10
Icmp_3.2包数量
Lduan
Int
10
检测时间
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
否
主键,自增
用户名
Uusername
Varchar
10
密码
Upassword
Varchar
10
七、用户界面设计
7.1登录页界面设计
登录页如下图7.1所示,服务器地址部分有非法字符判断,如果每个字段超过3个字符,或者所填的不是数字字符,将有提示框进行提示,并取消此字母的输入。
界面的编辑框及登录设置按钮有tab键的排序,可轻松跳格。
窗体的大小固定,不能进行放大、缩小。
图7.1登录页
7.2信息配置及曲线描绘页设计
信息配置及曲线描绘页设计如下图7.2所示:
1)曲线描绘设置
在配置信息中可以由用户根据需要设置窗口的高度和宽度,以及曲线描绘图的标题(由下拉框中的类型决定标题),当提交时,描绘框口的各个部分将进行相应的改变。
在坐标中的纵坐标代表的包个数,横轴代表第几个时间间隔。
2)默认设置
配置信息中设置了默认设置,根据以往的测试获得的参数,选取的一个较为合适的值作为默认参数。
3)时间间隔代表的是在多长时间间隔内统计一次流量,并将其显示在曲线描绘窗口中,以一个点的形式出现。
图7.2信息配置及曲线描绘页
7.3历史流量查看页设计
历史流量查看如下图7.3及7.4所示:
1)查询历史流量是根据查询类型的不同,所具有的字段数量不同,如图7.2为查询单个类型协议/事件时,结果显示窗口的设计;图7.3为查看所有类型的数据时,结果显示窗口的设计。
2)在历史流量查看窗口中,用户可选择自己想要查看的协议/事件类型,也可以查看所有的类型的流量数据,同时可设置所要查询的数据所检测的时间范围,从而使得操作更具有灵活性。
图7.3单个类型历史流量查看图
图7.4全部历史流量查看图
7.4异常流量查看页设计
异常流量查看如下图7.5所示,其设计与历史流量查看的设计相似,不进行赘述。
图7.5异常流量查看图
八、出错处理设计
8.1出错输出信息
错误分类
子项及其编码
错误名称
错误代码
备注
8.2出错处理对策
九、安全保密设计
9.1数据传输安全性设计
9.2应用系统安全性设计
9.3数据存储安全性设计
十、维护设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 概要 设计 报告