目录
摘要 I
Abstract II
目录 III
1 绪论 1
1.1 研究背景 1
1.2 研究意义 2
1.3 课题内容 3
2 包过滤防火墙技术 4
2.1 包过滤防火墙技术简介 4
2.2 防火墙包过滤技术的特点 5
2.3 包过滤防火墙工作原理 6
2.4 数据包过滤技术 8
2.5 数据包过滤类型 8
2.6开发工具 10
3 系统设计 14
3.1 设计概要 14
3.2 选项功能 17
3.3 界面控制 18
4 系统实现 20
4.1 规则基本操作 20
4.2 启动过滤 24
4.3退出防火墙 24
5 总结 25
参考文献 26
致谢 27
1.2 研究意义
目前市场上大多数的防火墙产品仅仅是网关型的,虽然功能相当强大,但大多基于下述的假设:内部网是安全可靠的,所有的威胁都来自网外。因此,这些防火墙产品防外不防内,难以实现对企业内部局域网内主机之间的安全通信,也不能很好地解决每一个拨号上网用户所在主机的安全问题,而大多数个人上网之时,并没有置身于得到防护的安全网络内部。因此个人防火墙就显得尤为重要,可以帮助用户抵御一切来自非本计算机的恶意数据包。
个人上网用户多使用Windows操作系统,而Windows操作系统本身的安全性并不如人意。各种Windows漏洞不断被公布,对用户计算机的攻击也越来越多。一般都是利用操作系统设计的安全漏洞和通信协议的安全漏洞来实现攻击。如假冒IP包对通信双方进行欺骗;对主机大量发送IP数据包进行轰炸攻击,使之崩溃;以及蓝屏攻击等。因此,为了保护主机的安全通信,个人用户可以选择使用防火墙。服务于Windows系统基于包过滤的个人防火墙,可以为世界上使用最广泛的Windows操作系统用户主机提供一定的网络安全保护。
1.3 课题内容
本文主要研究个人安全防御系统中包过滤系统的设计与实现,通过对现有包过滤技术深入的研究与分析,发现其中的不足之处,并在设计实现的过程中对其进行改进和完善。
1全面深入的研究现有的包过滤技术,分析比较每一种包过滤技术的优缺点,结合个人安全防御系统的特点确定所要使用的技术。
2探讨包过滤系统在个人安全防御系统中的位置,以及与其它子系统之间的关系。
3分析比较现有的安全产品,结合具体的应用平台,设计包过滤系统的总体模型。
4对操作系统的网络结构等技术进行深入分析和研究,完成整个包过滤系统的具体实现。
5分析个人安全防御系统各子系统间的关系,完成子系统间接口的设计与实现。
2.3 包过滤防火墙工作原理
包过滤防火墙工作在OSI网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。
包过滤方式是一种通用、廉价和有效的安全手段。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。
在整个防火墙技术的发展过程中,包过滤技术出现了两种不同版本,称为“第一代静态包过滤”和“第二代动态包过滤”。
第一代:静态包过滤
这种类型的防火墙根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议TCP、UDP、ICMP等等、TCP/UDP目标端口、ICMP消息类型等。包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。
第二代:动态包过滤
这种类型的防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测(Stateful Inspection)技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
包过滤方式的优点是不用改动客户机和主机上的应用程序,因为它工作在网络层和传输层,与应用层无关。但其弱点也是明显的:过滤判别的依据只是网络层和传输层的有限信息,因而各种安全要求不可能充分满足;在许多过滤器中,过滤规则的数目是有限制的,且随着规则数目的增加,性能会受到很大地影响;由于缺少上下文关联信息,不能有效地过滤如UDP、RPC一类的协议;另外,大多数过滤器中缺少审计和报警机制,它只能依据包头信息,而不能对用户身份进行验证,很容易受到“地址欺骗型”攻击。
包过滤是一种内置于Linux内核路由功能之上的防火墙类型,其防火墙工作在网络层。
(1)使用过滤器。数据包过滤用在内部主机和外部主机之间,过滤系统是一台路由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。用于过滤数据包的路由器被称为过滤路由器。
数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:
IP源地址
IP目标地址
协议(TCP包、UDP包和ICMP包)
TCP或UDP包的源端口
TCP或UDP包的目标端口
ICMP消息类型
TCP包头中的ACK位
数据包到达的端口
数据包出去的端口
在TCP/IP中,存在着一些标准的服务端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接,例如,可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。
(2)过滤器的实现。数据包过滤一般使用过滤路由器来实现,这种路由器与普通的路由器有所不同。
普通的路由器只检查数据包的目标地址,并选择一个达到目的地址的最佳路径。它处理数据包是以目标地址为基础的,存在着两种可能性:若路由器可以找到一个路径到达目标地址则发送出去。
过滤路由器会更加仔细地检查数据包,除了决定是否有到达目标地址的路径外,还要决定是否应该发送数据包。“应该与否”是由路由器的过滤策略决定并强行执行的。路由器的过滤策略主要有:
拒绝来自某主机或某网段的所有连接。
允许来自某主机或某网段的所有连接。
拒绝来自某主机或某网段的指定端口的连接。
允许来自某主机或某网段的指定端口的连接。
拒绝本地主机或本地网络与其它主机或其它网络的所有连接。
允许本地主机或本地网络与其它主机或其它网络的所有连接。
拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。
允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。
2.4 数据包过滤技术
这种技术是在网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问控制表-----Access Control List),只有满足过滤规则的数据包才被转发至相应的网络接口,其余数据包则被从数据流中删除。
包过滤在本地端接收数据包时,一般不保留上下文,只根据目前数据包的内容做决定。根据不同的防火墙的类型,包过滤可能在进入、输出时或这两个时刻都进行。可以拟定一个要接受的设备和服务的清单,本文转载自http://www.biyezuopin.vip/onews.asp?id=12459一个不接受的设备和服务的清单,组成访问控制表。在主机或网络级容易用包过滤接受或决绝访问,例如,可以允许主机A和主机B之间的任何IP访问,或者拒绝除A外的任何设备对B的访问。
包过滤的设置:
⑴必须知道什么是应该和不应该被允许的,即必须制定一个安全策略。
⑵必须正式规定允许的包类型、包字段的逻辑表达。
⑶必须用防火墙支持的语法重写表达式。

// MainFrm.h : interface of the CMainFrame class
//
/#if !defined(AFX_MAINFRM_H__D4F52F5F_ED8A_4DB8_86C7_E5E0A88D0924__INCLUDED_)
#define AFX_MAINFRM_H__D4F52F5F_ED8A_4DB8_86C7_E5E0A88D0924__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "winioctl.h"
#include "rules.h"
#include "ipFilter.h"class CMainFrame : public CFrameWnd
{protected: // create  from serialization onlyCMainFrame();DECLARE_DYNCREATE(CMainFrame)// Attributes
public:// Operations
public:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMainFrame)virtual BOOL PreCreateWindow(CREATESTRUCT& cs);//}}AFX_VIRTUAL// Implementation
public:virtual ~CMainFrame();
#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;
#endifprotected:  // control bar embedded membersCStatusBar  m_wndStatusBar;CToolBar    m_wndToolBar;BOOL started;//标识过滤功能是否已经启动BOOL installed;//标识过滤规则是否已经被应用CIpFilter cIpFilter;//过滤器RuleInfo rule;//增加规则时,接收规则参数bool bAdded;//增加规则时,是否确实是已经增加了规则void OnIn();//增加对流入数据包的过滤规则void OnOut();//增加对流出数据包的过滤规则
// Generated message map functions
protected://{{AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnButtonstart();afx_msg void OnButtonadd();afx_msg void OnButtondel();afx_msg void OnButtondesinstall();afx_msg void OnButtoninstall();afx_msg void OnButtonstop();afx_msg void OnUpdateButtonstart(CCmdUI* pCmdUI);afx_msg void OnUpdateButtonstop(CCmdUI* pCmdUI);afx_msg void OnMenuAddrule();afx_msg void OnMenuDelrule();afx_msg void OnMenuInstallrules();afx_msg void OnMenuUninstallrules();afx_msg void OnMenustart();afx_msg void OnUpdateMenustart(CCmdUI* pCmdUI);afx_msg void OnMenustop();afx_msg void OnUpdateMenustop(CCmdUI* pCmdUI);afx_msg void OnAppExit();afx_msg void OnLoadRules();afx_msg void OnSaveRules();afx_msg void OnUpdateInstallrules(CCmdUI* pCmdUI);afx_msg void OnUpdateUninstallrules(CCmdUI* pCmdUI);afx_msg void OnUpdateButtondesinstall(CCmdUI* pCmdUI);afx_msg void OnUpdateButtoninstall(CCmdUI* pCmdUI);afx_msg void OnUpdateButtondel(CCmdUI* pCmdUI);afx_msg void OnUpdateButtonadd(CCmdUI* pCmdUI);//}}AFX_MSGDECLARE_MESSAGE_MAP()
};///{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_MAINFRM_H__D4F52F5F_ED8A_4DB8_86C7_E5E0A88D0924__INCLUDED_)















基于VC++包过滤技术防火墙设计与实现相关推荐

  1. 基于IMD驱动ARP防火墙设计(windows平台)

    基于 IMD 驱动 ARP 防火墙设计 (windows 平台 ) IMD 驱动认识 当 IMD 注册的时候,会同时注册协议和端口,他们分别代码着 protocol_block,miniport_bl ...

  2. 基于VC++的网络扫描器设计与实现

    本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...

  3. 防火墙软件Netfilter之包过滤技术(转)

    防火墙软件Netfilter之包过滤技术(转)[@more@] 如果您不知道什么是IP地址.网络地址.网络掩码.路由或者DNS,那么,请先阅读相关的网络基础书籍. 1.什么是包过滤(Packet Fi ...

  4. 基于VC++的包过滤防火墙系统设计与实现

    目录 摘要 I Abstract II 目录 III 1 绪论 1 1.1 研究背景 1 1.2 研究意义 2 1.3 课题内容 3 2 包过滤防火墙技术 4 2.1 包过滤防火墙技术简介 4 2.2 ...

  5. 如何运用包过滤技术实现个人防火墙

    摘要:本文通过介绍如何运用 包过滤技术实现个人 防火墙,深入的剖析了个人防火墙中所用到的各种技术,并重点介绍了通过微软的NDIS 中间驱动 程序实现网络封装包,以及驱动程序与应用程序之间的通讯方法. ...

  6. 用包过滤技术实现个人防火墙

      随着网络的迅速发展,各种各样的网络软件也随之出现,人们的生活和学习对网络的依赖也越来越多,但问题也接踵而来,网站被攻击,病毒泛滥,个人信息被窃取,使人们面临这样一个问题:网络是否安全? 而防火墙正 ...

  7. c语言五子棋开题报告,基于VC的五子棋游戏的设计与实现(附答辩记录)

    基于VC的五子棋游戏的设计与实现(附答辩记录)(包含选题审批表,任务书,开题报告,中期检查报告,毕业论文12300字,程序) 摘 要:以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以 ...

  8. 基于arm-linux的防火墙设计,基于ARM9的Linux驱动开发及防火墙设计

    摘要: 随着通信与信息科技.数字与IC设计技术在我们的日常生活及工作中的的迅猛普及,嵌入式系统设计正在成为现代信息技术中的主流技术.本文主要阐述了嵌入式Linux的概念.基础.网络结构.网络设备驱动程 ...

  9. 防火墙系列(二)-----防火墙的主要技术之包过滤技术,状态检测技术

    防火墙系列(二)-–防火墙的主要技术 必备知识:TCP/IP基础 包过滤技术 工作对象–>数据包 防火墙要在数据包进入系统之前处理它 实现包过滤技术的防火墙模块要在操作系统协议栈的网络层的位置. ...

最新文章

  1. 02 使用百度地图获得当前位置的经纬度
  2. 基于OpenCV的透视图转化为不同平面
  3. 烂泥:php5.6源码安装及php-fpm配置与nginx集成
  4. 关于CefSharp的坎坷之路
  5. 本地环境和测试环境搭建
  6. idea中pom.xml文件横线解决办法
  7. leetcode 5756. 两个数组最小的异或值之和(状态压缩dp)
  8. 程序员的数学笔记2--余数
  9. 积分图像 Integral
  10. 物联网技术引发第三次信息产业浪潮
  11. 【报告分享】2022电商行业趋势报告.pdf
  12. 微信小程序webview内页面分享
  13. 互联网运营数据分析(3): 留存分析
  14. Hadoop实战经验之HDFS故障排除-尚硅谷大数据培训
  15. 共轭梯度法及其matlab程序
  16. 网页微信linux,Ubuntu安装Linux网页版微信
  17. 你会在本地搭建 Web 版 VS Code 吗,看完这一篇你就能轻松实现了!
  18. vim插件管理利器:pathogen
  19. c语言.jpg图片转成数组_如何把PDF图片转成JPG?两个方法快速搞定PDF转图片!
  20. 笔记本 键盘 唤醒计算机,笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...

热门文章

  1. 信用卡Java_信用卡号验证Java程序
  2. CVTE中央研究院后台开发一面面经
  3. 滴滴回应乐清顺风车乘客遇害事件:深感自责与愧疚
  4. 账号分享ios《Florence》
  5. 企业架构建模工具:Archi中文介绍
  6. EF CodeFirst下,当实体结构发生修改怎么更新数据库结构
  7. MacBook 如何让Touch Bar电池电量显示百分比?
  8. Google Sites开始向所有人免费开放 可自由建个人主页
  9. 小红书2020校招测试开发后端笔试题卷一
  10. git命令--远程、本地仓库之间的push与pull