- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
防火墙与入侵检测课程设计方案报告
研究课题:防火墙与入侵检测
指导老师:董理君
学生姓名:王敬
学生班级:193062
学生学号:20061002781
防火墙与入侵检测课程设计报告
软硬件运行环境
硬件推荐配置
内存:128M 及以上配置
其他:无特殊要求
软件运行环境
操作系统:windows 2000 及以上版本
其他:无特殊要求
项目研究背景与意义
背景意义:
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,
防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件(其中硬件防火墙用的较少,例如国防部以及大型机房等地才用,因为它价格昂贵)。该计算机流入流出的所有网络通信均要经过此防火墙。
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
关键技术及解决方案
概要设计
注:1)对于不满一个字节的字段,如一些标志位DF,URG等等需要用位运算将其取出
如:if(*pos 0x04)
DF=true;
else
DF=false;
其中pos为unsigned char*,指向当前字节,而DF为该字节中右起第3位。
2)对于大于一个字节的字段,需要进行大数端到小数端的转换。因为网络中传输是按大数段(高位在低地址处),而本地机器中则相反,按小数端(地位在低地址处)。
如:totallen=(*pos)*256+(*(pos+1));
total为双字节,pos指针开始时指向低地址,乘256是完成大数端到小数端的转换。
过滤方法:
网络包的拦截
1. 捕获网络的数据包后,先查看是来自哪个程序的。在数据库中查找有没有相应的规则:
如果规则数据库中没有相应的规则,就弹出对话框让用户配置规则,然后添加到数据库中,然后按相应的规则,访问网络。
如果规则数据库中有相应的配置,就需要读取配置,对照访问规则权限来确定是阻止还是放行。
2. 将进出的报文记录在数据日志中待以后查询。
3. 将进出的报文情况添加到封包监视器中,待管理员查询。
测试
在程序调试阶段遇到的问题:
(1)如何编译动态链接库的问题
(2)如何分析通过winpcap捕获的数据包
以上问题最终通过查看相应的资料解决。
问题及难点所在:
防火墙的难点与重点就在如何获取网络中的发送或接受的报文,并分析报文。找出潜在的安全问题,防患于未然。通过对winpcap程序开发包的学习,掌握了如何通过winpcap提过的动态链接库中的基础函数来捕捉进出网络的数据包,并参阅资料,了解了各种网络数据包数据的格式与其的特点,通过字节的对比,解析数据包,提取出各个字段的内容,并判断如何网络的情况。提醒用户设置网络访问的规则,来阻止或允许或条件允许。
运行结果与分析(测试)
启动程序:
访问网络:
配置规则:
访问结果:
放行时候:
拒绝时:
网络包监测窗口:
日志查询:
分析网络数据包的源代码如下:
TCP报文的数据结构与解析方法:
class TCPGram
{
public:
TCPGram();
TCPGram(const unsigned char *buf,int buflen);
virtual ~TCPGram();
int srcport;//源端口
int destport;//目的端口
unsigned int seqnum;//顺序号
unsigned int acknum;//确认号
int headlen;//头部长
bool URG;//为1表示使用紧急指针
bool ACK;//为1表示确认号合法
bool PSH;//表示带有PUSH标志的数据
bool RST;//用于主机崩溃或其他原因后的复位
bool SYN;//用于建立连接
bool FIN;//用于释放连接
int windowsize;//窗口大小
int checksum;//校验和
int urgpos;//紧急指针,从当前顺序号到紧急数据位置偏移量
int optlen;//选项长度
unsigned char *options;//选项字段
int datalen;//数据段的长度
u
文档评论(0)