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

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

  而防火墙正是网络的保护伞,形形色色的防火墙很多,本文通过介绍包过滤技术实现个人防火墙,使大家对防火墙的知识有进一步的了解。

   一、防火墙和包过滤技术简介

  防火墙是一种用于在两个网络间进行访问控制的设备,防火墙系统防范的对象是来自被保护的网络的外部的对网络安全的威胁,它通过检测、限制、更改跨越防火墙的数据流,尽可能的实现对外部网络的安全保护。

  而包过滤技术是防火墙最基本的实现技术,具有包过滤技术的装置是用来控制内、外网络数据流入和流出,包过滤技术的数据包大部分是基于TCP/IP协议平台的,对数据流的每个包进行检查,根据数据报的源地址、目的地址、TCP和IP的端口号,以及TCP的其他状态来确定是否允许数据包通过。

   二、截获网络封装包

  截获数据包是实现一个防火墙的第一步,截获数据包的方法有很多种,既可以在用户态下拦截网络数据包,又可以在核心状态下进行数据包截获。

  在用户态下进行网络数据包拦截有以下几种方法:

  (1)Winsock Layered Service Provider (LSP)。

  (2)Windows 2000 包过滤接口。

  (3)替换系统自带的WINSOCK动态连接库。

  很显然,在用户态下可以很简单的进行数据包拦截,但其最致命的缺点就是只能在Winsock层次上进行,而对于网络协议栈中底层协议的数据包无法进行处理。对于一些木马和病毒来说很容易避开这个层次的防火墙。

  因此大多数的个人防火墙选择利用网络驱动程序来实现的。例如用中间层驱动程序来截获数据包。

  中间层驱动介于协议层驱动和小端口驱动之间,它能够截获所有的网络数据包(如果是以太网那就是以太帧)。NDIS中间层驱动的应用很广泛,不仅仅是个人防火墙,还可以用来实现VPN,NAT,PPPOverEthernet以及VLan。中间层驱动的概念是在Window NT SP4之后才有的,因此对于Windows9x来说无法直接利用中间层驱动的功能。Windows DDK提供了两个著名的中间层驱动例子:Passthru以及Mux。开发人员可以在Passthru的基础上进行开发,Mux则实现了VLan功能。目前个人防火墙的产品还很少用到这种技术,主要的原因在于中间层驱动的安装过于复杂,尤其是在Windows NT下。Windows 2000下可以通过程序实现自动安装,但是如果驱动没有经过数字签名的话,系统会提示用户是否继续安装。中层层驱动功能强大,应该是今后个人防火墙技术的趋势所在,特别是一些附加功能的实现。

图1.NDIS驱动程序模型

三、驱动程序和应用程序间的通讯

  当驱动程序截获网络数据包后,驱动程序要和应用程序进行通讯,通知应用程序对数据包进行判断,如果符合过滤规则,则接受数据包,否则,则放弃该数据包,其步骤大致如下:

  (1)应用程序创建一事件Event;

  (2)应用程序通过CreateFile创建驱动程序实例;

  (3)把该事件的句柄传给驱动程序;

  (4)驱动程序通过DeviceControl函数接受Event的句柄;

  (5)应用程序通过DeviceIOControl函数传递控制驱动程序的消息;

  (6)驱动程序通过Dispatch历程得到应用程序传来的消息,然后根据消息类型进行不同的服务;

  (7)把结果数据放入共享内存区,设置Event事件通知应用程序所请求的事情已经办完;

  (8)应用程序通过WaitForSingleObject来获知事件发生;

  (9)应用程序在共享内存区获得数据,并重置该事件。

图2  驱动程序与应用程序通讯模型

四、过滤规则设置

  包过滤防火墙的过滤规则集由若干条规则组成,它应涵盖对所有出入防火墙的数据包的处理方法,
  对于没有明确定义的数据包,应该有一个缺省处理方法;过滤规则应易于理解,易于编辑修改;
  同时应具备一致性检测机制,防止冲突。IP包过滤的依据主要是根据IP包头部信息如源地址和目的地址进行过滤,
  如果IP头中的协议字段表明封装协议为ICMP、TCP或UDP,那么再根据ICMP头信息(类型和代码值)、
  TCP头信息(源端口和目的端口)或UDP头信息(源端口和目的端口)执行过滤,其他的还有MAC地址过滤。
  应用层协议过滤要求主要包括FTP过滤、基于RPC的应用服务过滤、基于UDP的应用服务过滤要求以及动态包过滤技术等。

  在一般情况下,我们可以从以下几个方面来进行访问规则的设置:

  (1)禁止一切源路由寻径的IP包通过;

  (2)IP包的源地址和目的地址;

  (3)IP包中TCP与UDP的源端口和目的端口;

  (4)运行协议;

  (5)IP包的选择。

动作

协议

方向

访问时间

远端IP

端口

应用程序

备注

放行

IP

流进

工作时间

202.114.165.240

8080

IE

 

询问

TCP

流进

工作时间

202.114.165.192

1080

IE

 

拒绝

IP

流出

工作时间

202.114.204.153

80

IE

 

图3 一个典型的规则表

  五、记录和报警

  防火墙处理完整日志的方法:防火墙规定了对于符合条件的报文做日志,应该提供日志信息管理和存储方法。
  提供自动日志扫描:指防火墙是否具有日志的自动分析和扫描功能,这可以获得更详细的统计结果,达到事后分析、亡羊补牢的目的。
  提供自动报表、日志报告书写器:防火墙实现的一种输出方式,提供自动报表和日志报告功能。

动作

开始时间
结束时间

协议

进流量

出流量

本地IP:端口
远端IP:端口

应用程序

备注

放行

21:54 -
22:00

TCP

200

400

202.114.165.240:80
202.114.165.225:80

IE

 

放行

22:01-
22:10

IP

250

100

202.114.165.240:80
202.114.165.193:80

IE

 
图4 一个典型的日志记录表

  警告通知机制:防火墙应提供告警机制,在检测到入侵网络以及设备运转异常情况时,通过告警来通知管理员采取必要的措施,包括E-mail、呼机、手机等。

  提供简要报表(按照用户ID或IP地址):防火墙实现的一种输出方式,按要求提供报表分类打印。

  提供实时统计:防火墙实现的一种输出方式,日志分析后所获得的智能统计结果,一般是图表显示。

  用包过滤技术实现防火墙较为容易,具有比较好的网络安全保障功能,但也存在不足之处,由于过滤技术中无法包括用户名,而仅仅是客户机的IP地址,那么如果要过滤用户名就不能使用包过滤技术了,另外,由于包过滤技术遵循”未禁止就允许通过”的规则,因此,一些未经禁止的包的进出,可能对网络产生安全威胁。今后防火墙的发展会朝着简单化、安全化方向迈进, 综合包过滤和应用代理的功能,达到两者的有效结合,实现新型加密算法的设计,使数据的传输更加安全, 会和IDS、病毒检测等相关安全产品联合起来,充分发挥各自的长处,协同配合,共同建立一个有效的安全防范体系。

转载于:https://www.cnblogs.com/java20130725/archive/2008/04/02/3215990.html

如何运用包过滤技术实现个人防火墙相关推荐

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

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

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

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

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

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

  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. Iptables—包过滤(网络层)防火墙

    一:Linux防火墙基础: Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(也称网络层防火墙): Linux防火墙体系基于内核编码实现,具有非常稳定 ...

  6. 【互联网及其应用】第7章计算机网络安全及管理技术

    一.计算机网络安全 计算机网络安全是指通过采取各种技术和管理措施,确保网络数据的可用性.完整性和保密性,其目的是确保经过网络传输和交换的数据不会发生增加.修改.丢失和泄露等. 1.1 网络系统安全介绍 ...

  7. HCIP H12-223 题库

    习题 1 企业网络常常使用DHCP为用户分配IP地址,与静态地址分配方式相比,DHCP地址分配方式极大地减少了对网络地址进行管理的工作量? A. 正确 B. 错误 答案: A 习题 2 下列哪项故障排 ...

  8. HCIP-H12-223练习题

    习题 1 企业网络常常使用DHCP为用户分配IP地址,与静态地址分配方式相比,DHCP地址分配方式极大地减少了对网络地址进行管理的工作量? A. 正确 B. 错误 答案: A 习题 2 下列哪项故障排 ...

  9. [个人笔记]HCIP-Routing Switching-IEEP/H12-223

    网络规划 网络规划:侧重于调研网络需求以及确认网络实现的外部条件 网络实现:侧重于技术实现.用各种手段实现规划阶段确定的网络需求 网络规划的目标 项目背景:明确网络项目所处的外部条件 确定需求:确定网 ...

最新文章

  1. mysql www.school.com_MySQL 基础学习
  2. 企业数据中心和互联网数据中心有何不同?
  3. mysql中concat函数的使用相关总结
  4. W - Pasha and Phone CodeForces - 595B (收益颇丰的数学题
  5. LeetCode_700.二叉搜索树中的搜索
  6. RUP,XP,敏捷原理
  7. 【读】这一次,让我们再深入一点 - TCP协议
  8. 7.高性能MySQL --- MySQL 高级特性
  9. python playsound 音量_Win32 PlaySound:如何控制音量?
  10. 德普图拉在北京香山AI分论坛的主持词
  11. ffmpeg -progress读取进度
  12. Java发送QQ邮件的3种形式(commons-email)
  13. 微信小程序连锁店如何做
  14. 关于 Bandizip 每次解压都催你更新
  15. 一文了解循环神经网络
  16. mysql命令行集锦
  17. 【Gaze】A Survey on Using Gaze Behaviour for Natural Language Processing
  18. 使用python用递归的方法实现冰山立方体BUC算法(以水果分类数据为例)
  19. 【数理统计】学习笔记05:区间估计
  20. 一日一技:我是如何爬取百万影视资源的

热门文章

  1. 最短路——最短路(spfa)
  2. [汉化主题] Knowhow v1.1.16 – 响应式论坛知识库WordPress主题
  3. 80%的经理人都不知道的邮件常识
  4. java——java删除指定文件或文件夹
  5. 机器学习数据划分笔记(train_test_split)
  6. Node.js的卸载
  7. oracle 查看表空间使用情况
  8. 如何关闭电脑自动更新?方案三部曲带你走出自动更新的阴影
  9. 毛巾架用久了生锈怎么办?
  10. Arduino开发-TFT_eSPI库学习