防火墙与入侵检测课程设计报告.docx
《防火墙与入侵检测课程设计报告.docx》由会员分享,可在线阅读,更多相关《防火墙与入侵检测课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
防火墙与入侵检测课程设计报告
HarbinInstituteofTechnologyatWeihai
防火墙与入侵检测
课程设计报告
课程名称:
防火墙与入侵检测
设计题目:
轻量级入侵检测系统的设计与实现
院系:
计算机科学与技术学院
班级:
0904201
设计者:
张洋、韩晓琰
学号:
090420115、090420102
指导教师:
张兆心
设计时间:
2012-11-12至2012-11-23
哈尔滨工业大学(威海)
二零一二年十一月
哈尔滨工业大学(威海)计算机学院
《防火墙与入侵检测课程设计》验收及成绩评定表(项目组)
项目名称
局域网入侵检测系统的设计与实现
职责
学号
姓名
主要分工
组长
090420115
张洋
数据源模块,响应模块,部分界面功能
组员
090420102
韩晓琰
数据分析模块,规则设置模块,部分界面功能
设计开始日期
2012-11-12
项目完成日期2012-11-22
文档评审成绩(共50分)
评审项目
评审内容
成绩标准
评审成绩
项目名称
课题是否从实际出发,是否具有创意等
10
文档格式
文档格式是否规范;文字是否规范;图表是否规范;术语是否准确等
20分
文档质量
程序设计思想与整体框架是否清晰等
20分
文档总体评价
总成绩
程序功能完备性评审成绩(共50分)
评审项目
评审内容
成绩标准
评审成绩
程序运行状况
程序是否能正常运行;是否出现死锁;是否遇到错误而中止运行
10分
程序正确性
对于给定的输入数据,是否能得到正确的输出结果
15分
程序与文档的一致性
程序与各种文档的内容是否一致
5分
程序的代码量
程序代码量的大小
10分
实现方法
图形界面或命令行界面,美观程度
5分
实现语言
面向过程或面向对象
5分
程序总体评价
总成绩
哈尔滨工业大学(威海)课程设计任务书
姓名:
张洋、韩晓琰
学号:
090420115、090420102
院(系):
计算机科学与技术学院专业:
信息安全
任务起止日期:
2012-11-12至2012-11-22
课程设计题目:
轻量级入侵检测系统的设计与实现
问题阐述与分析:
背景及意义:
局域网安全防护系统,需要使用主动地安全防护技术,以达到对内部攻击、外部攻击、误操作的实时性保护。
而其中后以防火墙和入侵检测技术使用最多。
即在网络系统受到危害前进行分析并积极的响应。
现在,局域网被攻击、瘫痪事件屡见不鲜。
防火墙和入侵检测应该受到人们的高度重视。
但是,现在的防火墙和入侵检测仅仅停留在研究、实验阶段。
可见,防火墙和入侵检测产品仍具有较大的发展空间。
本文使用入侵检测技术设计了一个能够进行局域网安全防护的轻量级入侵检测系统。
主要问题:
输入数据的选择是首先需要解决的问题,目前有基于主机的入侵检测系统和基于网络的入侵检测系统。
两种基本的入侵检测方法由于其采用的数据来源不同,而呈现不同的特点。
基于网络的入侵检测系统有很多优势,它能检测只能通过分析网络业务才能检测出来的网络攻击,可以检测出绝大多数的外部攻击行为,如拒绝服务攻击等。
不存在基于主机的入侵检测系统在网络环境下遇到的审计踪迹格式异构性的问题。
所以,本系统基于网络进行入侵检测。
使用Libnids进行数据包捕获、重组、分析。
另外,快速高效的进行规则匹配也尤为重要。
系统使用SQLite3轻量级关系型数据库存储规制数据。
而当分析出可疑的数据包时应积极做出响应。
系统使用Libnids库对基于TCP的各种协议进行阻断。
主要研究内容:
此次课程设计主要研究基于网络的入侵检测系统的各个功能模块及其特点,并设计实现了网络监听程序。
即实现扫描器、分析器、响应器。
工作量:
(本项主要说明课程设计的工作量体现之所在,具体的设计模块)
系统主要分为信息源获取模块(扫描器)、分析引擎模块(分析器)、响应模块(响应器)。
附加功能有规则设置模块。
可能用到的技术:
QT制作界面,与C程序通信,Libnids库使用、SQLite3数据库。
工作计划安排:
(张洋)
2012-11-12至2012-11-13:
查阅相关论文资料,相关开源代码进行学习。
2012-11-14至2012-11-16:
实现信息源获取模块。
2012-11-17至2012-11-19:
实现响应模块模块(警告及阻断)。
2012-11-20至2012-11-21:
测试所有模块,修复检测到的各种问题。
2012-11-22至验收前:
美化UI,不断测试系统。
同组设计者及分工:
(韩晓琰)
2012-11-12至2012-11-13:
查阅相关论文资料,相关开源代码进行学习。
2012-11-14至2012-11-16:
实现分析引擎模块(规则匹配)。
2012-11-17至2012-11-19:
不断优化匹配算法,完成规则设置模块。
2012-11-20至2012-11-21:
合并及测试所有模块,修复检测到的各种问题。
2012-11-22至验收前:
美化UI,不断测试系统。
防火墙与入侵检测课程设计报告
一、软硬件运行环境
●硬件推荐配置
CPU:
Pentium(R)Dual-Core
内存:
2GB
硬盘:
320GB
●软件运行环境
操作系统:
Ubuntu12.04(推荐使用64位系统)
相关函数库:
Libpcap、Libnet、Libnids、SQLite3、QT
●软件编译环境
操作系统:
Ubuntu12.04(推荐使用64位系统)
编译器:
GCC4.6.3
相关函数库:
Libpcap、Libnet、Libnids、SQLite3、QT、QTCreator
二、
项目研究背景与意义
(1)背景意义
局域网安全防护系统,需要使用主动地安全防护技术,以达到对内部攻击、外部攻击、误操作的实时性保护。
而其中后以防火墙和入侵检测技术使用最多。
即在网络系统受到危害前进行分析并积极的响应。
现在,局域网被攻击、瘫痪事件屡见不鲜。
防火墙和入侵检测应该受到人们的高度重视。
但是,现在的防火墙和入侵检测仅仅停留在研究、实验阶段。
可见,防火墙和入侵检测产品仍具有较大的发展空间。
本文使用入侵检测技术设计了一个能够进行局域网安全防护的轻量级入侵检测系统。
(2)需求分析
输入数据的选择是首先需要解决的问题,目前有基于主机的入侵检测系统和基于网络的入侵检测系统。
两种基本的入侵检测方法由于其采用的数据来源不同,而呈现不同的特点。
基于网络的入侵检测系统有很多优势,它能检测只能通过分析网络业务才能检测出来的网络攻击,可以检测出绝大多数的外部攻击行为,如拒绝服务攻击等。
不存在基于主机的入侵检测系统在网络环境下遇到的审计踪迹格式异构性的问题。
所以,本系统基于网络进行入侵检测。
使用Libnids进行数据包捕获、重组、分析。
另外,快速高效的进行规则匹配也尤为重要。
系统使用SQLite3轻量级关系型数据库存储规制数据。
而当分析出可疑的数据包时应积极做出响应。
系统使用Libnids库对基于TCP的各种协议进行阻断。
三、
关键技术及解决方案
(1)界面、可执行程序通信
由于系统提供命令行和界面两种接口。
而命令行为原生接口,故需要将命令行输出映射到界面,或者将界面事件传递给应用程序。
界面方面,使用QT绘制,并使用QProcess、system与应用程序进行交互。
应用程序方面,使用printf、system与应用程序或界面程序进行交互。
具体架构图,如下。
(2)数据源捕获技术
使用Libnids提供的库函数,注册分析IP、TCP、UDP、HTTP的回调函数。
nids_register_ip_frag(ip_protocol_callback);
/*注册分析IP协议回调函数,只处理非TCP、UDP协议*/
nids_register_tcp(tcp_protocol_callback);
/*注册分析TCP协议回调函数,只处理非HTTP协议*/
nids_register_udp(udp_protocol_callback);
/*注册分析UDP协议回调函数,只处理非HTTP协议*/
nids_register_tcp(http_protocol_callback);
/*注册分析HTTP协议回调函数*/
回调函数主要获得源地址和目的地址等相关信息,以TCP协议分析为例。
charsip[255],dip[255];
intsport,dport;
structtuple4ip_and_port=tcp_connection->addr;
my_inet_ntoa(*((structin_addr*)&(ip_and_port.saddr)),sip);
my_inet_ntoa(*((structin_addr*)&(ip_and_port.daddr)),dip);
sport=ip_and_port.source;
dport=ip_and_port.dest;
tcp_analyser(sip,sport,dip,dport,tcp_connection);
其中,tcp_analyser函数将获取的信息传递给分析器。
sprintf(cmd,"../annalyser/pattern@@match##tcp%s%d%s%d%s",
sip,sport,dip,dport,filename);
system(cmd);
而分析器则进一步调用响应器,对可疑的TCP连接进行阻断。
nids_killtcp(tcp_connection);
所有的动作则写入日志。
__writeLog__("TCP",0);
__writeLog__(asctime(timenow),0);
__writeLog__(ret,0);
__writeLog__(sip,0);
__writeLog__(NULL,sport);
__writeLog__(dip,0);
__writeLog__(NULL,dport);
__writeLog__(cmd,0);
(3)规则匹配技术
规则存储于轻量级关系型数据库Sqlite3中,如下图。
id
permit
sport
sip
dport
dip
arg
100
f
0
172.29.142.215
80
202.102.144.56
tcp
主要通过查询语句进行匹配,例如增加一条规则。
if(SQLITE_OK!
=sqlite3_exec(db,sqlstring,NULL,&msg))
{
returnERROR;
}
else
{
returnSUCCESS;
}
(4)TCP阻断技术
目前,系统实现了对基于TCP协议的阻断,主要使用Libnids提供的APIs。
if(!
strcmp(protocol,"ip")||!
strcmp(protocol,"udp"))
{
returnERROR;
}
elseif(!
strcmp(protocol,"tcp")||!
strcmp(protocol,"http"))
{
nids_killtcp(stream);
returnSUCCESS;
}
(5)异常检测技术
通过注册攻击函数,可以实现对各种异常数据包或者扫描攻击进行检测。
主要通过查询语句进行匹配,例如增加一条规则。
switch(type)/*检测类型*/
{
caseNIDS_WARN_IP:
//IP异常数据包
break;
caseNIDS_WARN_TCP:
//TCP异常数据包
break;
caseNIDS_WARN_UDP:
//UDP异常数据包
break;
caseNIDS_WARN_SCAN//TCP扫描攻击
break;
default:
//未知异常
break;
}
四、测试
1、在程序调试阶段遇到的问题:
问题一:
Libnids捕不到包
解决方案:
添加以下代码
structnids_chksum_ctltemp;
addr=0;
temp.mask=0;
temp.action=1;
nids_register_chksum_ctl(&temp,1);
问题二:
程序间通信
解决方案:
通过使用标准输入输出流、system、QProcess解决
问题三:
混杂模式失效
解决方案:
使用集线器代替交换机
2、问题及难点所在:
Libnids库函数的使用、QT相关界面函数的使用、协议的基本原理和理解、入侵检测系统的设计原理和思想。
3、
运行结果与分析(测试)
系统主界面,主要提供用户交互接口。
开始检测,列表显示当前的分析结果。
Kill表示成功阻断的个数,Pass表示放行的次数,Warn表示阻断失败或者无法进行阻断的次数。
双击每一行会显示详情。
日志查看,显示所有的记录日志。
规则设置,主要进行规则的增删改查。
异常检测查看,主要显示异常的数据包或者扫描攻击检测情况。
五、总结(收获与体会)
通过接近两周的《防火墙与入侵检测》课程设计,使我受益匪浅,主要表现在以下几方面。
一、加深了我对《防火墙与入侵检测》课程内容的理解,并应用于实践。
二、掌握了局域网安全系统的架构设计方法,及相关的技术实现方法。
例如,学会了Libpcap、Libnet、Libnids库函数的使用,能够进行数据包的抓取、分析、阻断,即可以开发小型的局域网安全系统。
掌握了Sqlite3轻量级数据库的基本使用方法。
同时,学习了Linux下使用QT进行界面开发的方法。
三、进一步提高了团队协作能力。
此次课程设计要感谢我的队友对我的种种帮助。
我们从一开始不知所措,到最终实现了该系统,可谓是感慨万千。
我们提高了分析问题、解决问题的能力。
尤其是在短时间内迅速的在互联网中检索相关资料,并尽可能的吸收消化核心的思想。
从捕获到第一个数据包,到最后提供两种用户使用接口,我们相互协作,共同攻关,一起熬夜,一起吃剩饭的日子将会给我们大四毕业之际画上难忘的一笔。
感谢我亲爱的队友小琰,感谢你的鼓励、帮助、包容。
四、最后,感谢老师的耐心指导和悉心讲解。
使外面不仅巩固了对防火墙及入侵检测基本原理和基本理论的理解,掌握防火墙及入侵检测应用系统设计开发的基本方法,提高了综合运用所学知识的能力。
而且,掌握了利用现有开发工具设计完成开发一个局域网安全防护系统的基本技能。