首页 存档 技术 查看内容

原创投稿 | 防火墙及NAT服务

2018-3-30 13:00 |来自: 互联网 385 0

摘要: 糖豆贴心提醒,本文阅读时间7分钟 一、简介 1. 关于防火墙 防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件和软件防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任 ...

糖豆贴心提醒,本文阅读时间7分钟


一、简介

1. 关于防火墙

防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件和软件防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略、规则,以达到让它对出入网络的IP、数据进行检测。

目前市面上比较常见的有三、四层的防火墙,叫做网络层的防火墙,还有七层的防火墙,其实是代理层的网关。对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者相互结合的。

2. iptables的发展

包括iptables及其前身在内,这些都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,并且可以让在内核空间当中的“Netfilter”来读取,从而实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是TCP/IP的协议栈所经过的地方Netfilter。

iptables只是防火墙的管理工具,在内核中真正实现防火墙功能的是Netfilter。

对Linux而言,TCP/IP协议栈存在于内核当中,这就意味着对数据报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成TCP/IP报文所流进的位置,使用规则去检查,才真正能工作起来。

3. iptables的结构

从上面的发展我们知道了作者选择了五个位置,来作为控制的地方,但是你有没有发现,其实前三个位置已经基本上能将路径彻底封锁了,但是为什么已经在进出的口设置了关卡之后还要在内部设置关卡呢?由于数据包尚未进行路由决策,还不知道数据要走向哪里,所以在进出口是没有办法实现数据过滤的。所以要在内核空间里设置转发的关卡,进入用户空间的关卡,从用户空间出去的关卡。那么,既然他们没有什么用,我们为什么还要放置他们呢?因为在进行NAT/DNAT的情况下,目标地址转换必须在路由之前转换。所以我们必须在外网而后内网的接口处进行设置关卡。
Netfilter规定的这五个位置也叫五个规则链:



iptable的结构:在数据包过滤表中,规则被分组放在我们所谓的链中。链,就是一个规则的列表(如图所示)。


二、表和链

要设置一个Linux防火墙,就要使用规则,每个规则指定在包中与什么匹配,以及对包执行什么操作。那么什么是规则呢?因为iptables利用的是数据包过滤的机制,所以它会分析数据包的报头数据。根据报头数据与定义的规则来决定该数据包是否可以通过或者是被丢弃。也就是说,根据数据包的分析资料来与预先定义的规则内容进行“比对”,若数据包数据与规则内容相匹配则进行相应的处理,否则就继续下一条规则的比对。重点在于比对与比对的顺序。

什么是表和链呢?这得由iptables的名称说起,为什么称为iptables呢?因为它里面包含有多个表格(table),每个表格都定义出自己的默认策略与规则,且每个表格的用途都不相同。iptables包含四个表,五个链。其中表是按照对数据包的处理功能区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。

四个规则表分别为:Filter、NAT、Mangle、Raw,默认表是Filter(没有指定表的时候就是Filter表)。 表的处理优先级为:Raw

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部