内容目录

iptables基本介绍

什么是防火墙

  • 过去,很长一段时期里,房屋都是草屋结构,如果一旦着火,四邻也会跟着遭殃,所以为安全起见,古人就在自己居住地周围修筑高高的围墙,以阻挡外来的火势,包含自身的安全,这种墙就叫防火墙
  • 如今,因特网把世界各地的计算机都紧密地连接在一起。如果不严加防卫,一旦网络被侵害,可能会出现不可预计的损失。那么在互联网上,我们会采用类似防火墙的方法,来保护我们的网络不受侵害,为此我们需要设定防火墙规则,确定哪些类型的数据包允许通过,哪些不允许通过
  • 那么具备这种功能的硬件或软件就可以称之为防火墙

防火墙的分类

  • 从逻辑上讲,防火墙可以大体分为主机防火墙和网络防火墙
    • 主机防火墙:针对于单个主机进行防火,比如windows
    • 网络防火墙:往往处于网路入口,针对于网络入口进行防护,服务于防火墙背后的服务器群组。
  • 从物理上讲,防火墙可以分为硬件防火墙和软件防火墙
    • 硬件防火墙:在硬件级别实现部分防护墙功能,另一部分功能基于软件实现,性能高,成本高
    • 软件防火墙:以软件的方式模拟防火墙功能,允许在操作系统上,性能不高,成本较低

什么是iptables

  • iptables 其实不是真正的防火墙,就是一个代理程序,用户通过 iptables 这个代理程序将安全规则执行到对应的”安全框架“中,这个”安全框架“才是真正的防火墙,这个安全框架叫netfilter,是内核代码中不可缺少的一部分
  • iptables 位于操作系统的用户空间,我们是通过 iptables 命令工具操作 netfilter 内核框架
  • 所以 iptables 的完整叫法应该是 netfilter/iptables,它是 linux 平台下的”包过滤型防火墙“,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成数据包的过滤、连接追踪、限速、网络地址转换(nat)等功能

file

什么是包过滤防火墙

  • 包过滤防火墙它工作在OSI七层模型中的网络层,用来匹配网络数据包的(header
  1. 将 header 与预先定义好的防火墙规则进行比对
  2. 与规则相匹配的包会被执行
  3. 与规则不匹配的包则可能会被丢弃、也可能执行更复杂的动作
  • 由于包过滤防火墙工作在网络层,故也称”网络层防火墙“,它通过检查每一个数据包的:
    • 源地址、目的地址
    • 源端口、目的端口
    • 协议类型(TCP、UDP、ICMP)等状态信息来判断是否符合规则

包过滤防火墙如何实现

  • 包过滤防火墙是由 netfilter 来实现的,它是内核的一部分
  • 如果我们想要防火墙能够达到”防火“的目的,则需要在内核中设置关卡,所有进出的报文都要经过这些关卡进行检查
    • 将符合条件的放行
    • 不符合条件的阻止
    • 而这些关卡在 iptables 中被称为

iptables链的概念

什么是链

  • 在iptables中的关卡为什么被称为
  • 防火墙的作用就是在于对经过的数据报文进行规则匹配,然后执行规则对应的动作,所以当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一起的时候,就形成了
  • 所以,每个经过这个关卡的报文,都要将这条上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作,如果没有则执行默认链的动作

iptables有哪些链

  • 当我们启用了防火墙功能时,报文需要经过很多关卡,也就是说,根据实际情况不同,报文经过可能不同,大体分为如下三类:
  1. 请求本机会经过哪些链(prerouting-->input-->local process)
  2. 经过本机又会经过哪些链(prerouting-->forward-->postrouting)
  3. 从本机发出又会经过哪些链(local process-->output-->postrouting)

file

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--
最后修改日期: 2024年3月18日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。