内容目录
iptables基本介绍
什么是防火墙
- 过去,很长一段时期里,房屋都是草屋结构,如果一旦着火,四邻也会跟着遭殃,所以为安全起见,古人就在自己居住地周围修筑高高的围墙,以阻挡外来的火势,包含自身的安全,这种墙就叫防火墙
- 如今,因特网把世界各地的计算机都紧密地连接在一起。如果不严加防卫,一旦网络被侵害,可能会出现不可预计的损失。那么在互联网上,我们会采用类似防火墙的方法,来保护我们的网络不受侵害,为此我们需要设定防火墙规则,确定哪些类型的数据包允许通过,哪些不允许通过
- 那么具备这种功能的硬件或软件就可以称之为防火墙。
防火墙的分类
- 从逻辑上讲,防火墙可以大体分为主机防火墙和网络防火墙
- 主机防火墙:针对于单个主机进行防火,比如
windows
- 网络防火墙:往往处于网路入口,针对于网络入口进行防护,服务于防火墙背后的服务器群组。
- 主机防火墙:针对于单个主机进行防火,比如
- 从物理上讲,防火墙可以分为硬件防火墙和软件防火墙
- 硬件防火墙:在硬件级别实现部分防护墙功能,另一部分功能基于软件实现,性能高,成本高
- 软件防火墙:以软件的方式模拟防火墙功能,允许在操作系统上,性能不高,成本较低
什么是iptables
iptables
其实不是真正的防火墙,就是一个代理程序,用户通过iptables
这个代理程序将安全规则执行到对应的”安全框架“中,这个”安全框架“才是真正的防火墙,这个安全框架叫netfilter
,是内核代码中不可缺少的一部分iptables
位于操作系统的用户空间,我们是通过iptables
命令工具操作netfilter
内核框架- 所以
iptables
的完整叫法应该是netfilter/iptables
,它是linux
平台下的”包过滤型防火墙“,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成数据包的过滤、连接追踪、限速、网络地址转换(nat)等功能
什么是包过滤防火墙
- 包过滤防火墙它工作在OSI七层模型中的网络层,用来匹配网络数据包的(
header
)
- 将 header 与预先定义好的防火墙规则进行比对
- 与规则相匹配的包会被执行
- 与规则不匹配的包则可能会被丢弃、也可能执行更复杂的动作
- 由于包过滤防火墙工作在网络层,故也称”网络层防火墙“,它通过检查每一个数据包的:
- 源地址、目的地址
- 源端口、目的端口
- 协议类型(TCP、UDP、ICMP)等状态信息来判断是否符合规则
包过滤防火墙如何实现
- 包过滤防火墙是由
netfilter
来实现的,它是内核的一部分 - 如果我们想要防火墙能够达到”防火“的目的,则需要在内核中设置关卡,所有进出的报文都要经过这些关卡进行检查
- 将符合条件的放行
- 不符合条件的阻止
- 而这些关卡在
iptables
中被称为链
iptables链的概念
什么是链
- 在iptables中的关卡为什么被称为链
- 防火墙的作用就是在于对经过的数据报文进行规则匹配,然后执行规则对应的动作,所以当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一起的时候,就形成了链
- 所以,每个经过这个关卡的报文,都要将这条链上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作,如果没有则执行默认链的动作
iptables有哪些链
- 当我们启用了防火墙功能时,报文需要经过很多关卡,也就是说,根据实际情况不同,报文经过链可能不同,大体分为如下三类:
- 请求本机会经过哪些链
(prerouting-->input-->local process)
- 经过本机又会经过哪些链
(prerouting-->forward-->postrouting)
- 从本机发出又会经过哪些链
(local process-->output-->postrouting)
iptables表的概念
- 我们对每个链上都放置了一串规则,但是这些规则有些很相似,比如:
- A类规则都是对IP或者端口的过滤
- B类规则都哦是对报文进行修改的
- C类规则都是进行地址转换的
那么这个时候,我们是不是能把实现相同功能的规则放在一起?
- 当我们把具有相同功能的规则集合在一起叫做表,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而
iptables
已经为我们定义了4种表,每种表对应了不同的功能
表的功能
表名 | 作用 | 包含的链 |
---|---|---|
filter | 负责过滤功能 | INPUT、OUTPUT、FORWARD |
nat | 负责网络地址转换(路由) | PREROUTING、INPUT、OUTPUT、POSTROUTING |
mangle | 负责修改数据包内容 | INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING |
raw | 关闭nat表上启用的连接追踪机制 | PREROUTING、OUTPUT |
表与链的关系
raw--
留言