当前位置: 首页 > news >正文

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
  • 单位或者报备,是否符合防疫要求,谁审批谁负责
  • 符合要求才允许离京,非必要不离京,杜绝恶意返乡

相关文章:

  • nmap部分实例应用
  • VSFTP服务器配置具有不同访问权限的虚拟用户
  • linux配置应用服务器通过证书免密码登录SFTP测试站点
  • Linux下非逻辑卷扩容之创建逻辑卷pvcreate是否会损坏原数据测试
  • Linux下非逻辑卷扩容之新增盘扩容
  • Linux下多挂载点mount实验
  • Linux取ip地址
  • Linux利用sed批量自动化更换IP
  • 批量保存打开的网页到本地
  • Linux挂载点是否可以是软链接测试实验
  • 【无标题】CSDN发布模板水文
  • Windows安装Python3学习环境
  • Linux下Ngxin服务器防DDos攻击自动加iptables的Shell脚本
  • CentOS7安装Redis教程
  • 基于Controller接口的Spring MVC控制器的Web应用(一)
  • python3.6+scrapy+mysql 爬虫实战
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Asm.js的简单介绍
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript 奇技淫巧
  • JavaScript中的对象个人分享
  • js ES6 求数组的交集,并集,还有差集
  • linux安装openssl、swoole等扩展的具体步骤
  • maven工程打包jar以及java jar命令的classpath使用
  • mysql innodb 索引使用指南
  • session共享问题解决方案
  • 基于游标的分页接口实现
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端临床手札——文件上传
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • - 转 Ext2.0 form使用实例
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 阿里云服务器如何修改远程端口?
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (1)bark-ml
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (javascript)再说document.body.scrollTop的使用问题
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .form文件_一篇文章学会文件上传
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • ::
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ C++ ] STL---string类的模拟实现
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [AR Foundation] 人脸检测的流程
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C/C++] C/C++中数字与字符串之间的转换