Linux网络之数据包过滤原理

【推荐阅读】

浅谈linux 内核网络 sk_buff 之克隆与复制

深入linux内核架构--进程&线程

了解Docker 依赖的linux内核技术

数据包过滤原理

数据包过滤技术是防火墙最常用的技术。对于一个充满危险的网络,过滤路由器提供了一种方法,用这种方法可以阻塞某些主机和网络连入内部网络,也可以用它来限制内部人员对一些危险和色情站点的访问。

数据包过滤技术,顾名思义是在网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问控制表——Access Ccntrol List),只有满足过滤规则的数据包才被转发至相应的网络接口,其余数据包则被从数据流中删除。

数据包过滤可以控制站点与站点、站点与网络和网络与网络之间的相互访问,但不能控制传输的数据内容,因为内容是应用层数据,不是包过滤系统所能辨认的,数据包过滤允许你在单个地方为整个网络提供特别的保护。

包过滤检查模块深入到系统的网络层和数据链路层之间。因为数据链路层是事实上的网卡(NIC),网络层是第一层协议堆栈,所以防火墙位于软件层次的最底层,如下图所示。

通过检查模块,防火墙能拦截和检查所有出站的数据。防火墙检查模块首先验证这个包是否符合过滤规则,不管是否符合过滤规则,防火墙一般要记录数据包情况,不符合规则的包要进行报警或通知管理员。对丢弃的数据包,防火墙可以给发方一个消息,也可以不给,这要取决于包过滤策略。包检查模块能检查包中的所有信息,一般是网络层的IP头和传输层的头。包过滤一般要检查下面几项:

IP源地址;

IP目标地址;

协议类型(TCP包、UDP包和ICMP包);

TCP或UDP的源端口;

TCP或UDP的目标端口;

ICMP消息类型;

TCP报头中的ACK位。

包过滤在本地端接收数据包时,一般不保留上下文,只根据目前数据包的内容做决定。根据不同的防火墙的类型,包过滤可能在进入、输出时或这两个时刻都进行。可以拟定一个要接受的设备和服务的清单,一个不接受的设备和服务的清单,组成访问控制表。

1 . 设置步骤

配置包过滤有三步:

(1)必须知道什么是应该和不应该被允许的,即必须制定一个安全策略。

(2)必须正式规定允许的包类型、包字段的逻辑表达。

(3)必须用防火墙支持的语法重写表达式。

按地址过滤

下面是一个最简单的数据包过滤方式,它按照源地址进行过滤。比如说,认为网络202.110.8.0是一个危险的网络,那么就可以用源地址过滤禁止内部主机和该网络进行通信。下表是根据上面的政策所制定的规则。

表: 过滤规则示例

规则 方向 源地址 目标地址 动作

A 出 内部网络 202.110.8.0 拒绝

B 入 202.110.8.0 内部网络 拒绝

很容易看出这种方式没有利用全部信息,所以是不科学的,下面将要讲一种更为先进的过滤方式——按服务过滤。

按服务过滤

假设安全策略是禁止外部主机访问内部的E-mail服务器(SMTP,端口25),允许内部主机访问外部主机,实现这种的过滤的访问控制规则类似下表。

规则按从前到后的顺序匹配,字段中的“*”代表任意值,没有被过滤器规则明确允许的包将被拒绝。就是说,每一条规则集都跟随一条含蓄的规则,就像下表中的规则C。这与一般原则是一致的:没有明确允许的就被禁止。

规则 方向 动作 源地址 源端口 目的地址 目的端口 注释

A 进 拒绝 M * E-mail 25 不信任

B 出 允许 * * * * 允许联接

C 双向 拒绝 * * * * 缺省状态

任何一种协议都是建立在双方的基础上的,信息流也是双向的。规则总是成对出现的,而且在讲解规则时也是成对讲解的原因。

4.包过滤实例

无疑按服务过滤的安全性要比单纯按地址过滤高。

下面,将通过一个例子来讲解这种过滤方式。第一,假设处于一个类网络116.111.4.0,认为站点202.208.5.6上有黄色的BBS,所以希望阻止网络中的用户访问该点的BBS;再假设这个站点的BBS服务是通过Telnet方式提供的,那么需要阻止到那个站点的出站Telnet服务,对于Internet的其他站点,允许内部的网用户通过Telnet方式访问,但不允许其他站点以Telnet方式访问网络。第二,为了由发电子邮件,允许SMTP出站入站服务,邮件服务器是IP地址为116.111.4.1。第三,对于WWW服务,允许内部网用户访问Internet上任何网络和站点,但只允许一个公司的网络访问内部WWW服务器,内部WWW服务器的IP地址为116.111.4.5,因为你们是合作伙伴关系,那个公司的网络为98.120.7.0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值