Linux防火墙之通俗易懂的iptables五表五链解释

Linux防火墙

  • Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。
  • Linux内核自带防火墙功能,防火墙的实现就是基于对数据包的过滤。

背景基础知识

  • Linux操作系统对数据的处理都是通过内核来实现的,就像计算机的主要运算都是由CPU来完成的一样。
  • 一个完整的Linux操作系统由最核心的内核,负责内核与外部交互的shell,以及其他外部应用程序组成
  • Linux内核空间负责接收外部数据并通过系统调用与计算机硬件例如cpu内存打交道

内核中数据包的传输过程

  • 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去
  • 如果数据包是进入本机的,数据包就会到达INPUT链。
  • 数据包到达INPUT链后,任何进程都会收到它。
  • 本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达
    POSTROUTING链输出
  • 如果数据包是要转发出去的,且内核允许转发,数据包就会经过FORWARD链,然后到达POSTROUTING链输出

传说中的五表五链

五链

INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
  • INPUT, 进内核(包含:filter,mangle)
  • OUTPUT, 出内核(包含:filter,nat,mangle,raw)
  • FORWARD, 转发(包含:filter,mangle)
  • PREROUTING,前置路由检查(包含:nat,mangle,raw)
  • POSTROUTING 后置路由检查(包含:nat,mangle,raw)

五表

security -->raw-->mangle-->nat-->filter
  • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
  • nat:network address translation 地址转换规则表
  • mangle:修改数据标记位规则表
  • raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
  • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

三种报文流向

  • 流入本机:PREROUTING --> INPUT–>用户空间进程
  • 流出本机:用户空间进程 -->OUTPUT–> POSTROUTING
  • 转发:PREROUTING --> FORWARD --> POSTROUTING

通俗易懂的解释

  1. 内核就可以理解为首都
  2. 五链就可以理解为五个检查站
  3. 五表就可以理解为防疫防暴防xx等政策
  4. 数据包或者数据报文就可以理解为开着小车打算进京或者离京的你

进京 数据报文流入本机

  • PREROUTING 链 即进京检查站
  • 规则包含:nat,mangle,raw
  • 看你有没有48小时核酸,办没办进京证,符不符合防疫要求
  • 如果都符合,就放行-》INPUT链
  • 如果发现只是路过北京,劝解绕行G95或者六环 (转发)
  • 如果不符合则直接劝返(Drop)

出京 数据报文由内核出去

  • OUTPUT–> POSTROUTING 链
  • 规则包含:filter,nat,mangle,raw
  • 单位或者报备,是否符合防疫要求,谁审批谁负责
  • 符合要求才允许离京,非必要不离京,杜绝恶意返乡

猜你喜欢

转载自blog.csdn.net/timonium/article/details/122725088