目录

前言

1 iptables概述

1.1 Netfilter与iptables关系

1.1.1 Netfilter

1.1.2 iptables

1.1.3 两者关系

2 iptables的表、链结构

2.1 四表五链结构介绍

2.1.1 基本概念

2.1.2 四表功能***

2.1.3 五链功能***

2.2 数据包过滤的匹配流程***

2.2.1 规则表应用顺序***

2.2.2 规则链匹配顺序

2.2.3 规则链内匹配顺序

2.2.4 数据包匹配流程详解

3 编写防火墙规则

3.1 iptables安装配置

3.1.1 关闭firewalld

3.1.2 安装iptables

3.1.3 设置开机启动

3.2 基本语法与控制类型

3.2.1 语法构成

3.2.2 注意事项不指定表名时,默认使用 filter 表

3.2.3 数据包控制类型

3.3 基本操作命令

3.3.1 常用管理参数

3.3.2 添加新规则

3.3.3 查看规则列表

3.3.4 删除清空规则

3.3.5 设置默认策略

3.4 规则的匹配条件

3.4.1 通用匹配

3.4.2 隐含匹配

3.4.3 拓展

3.4.4 显式匹配

4 总结


前言

        在企业网络环境中,各种应用系统(如Web网站、电子邮件系统、FTP服务器、数据库系统等)都需要通过网络为用户提供服务。如何有效保护这些服务器,过滤不必要的访问请求甚至恶意入侵,成为网络安全的重要课题。

        Linux系统中的iptables防火墙正是为解决这些问题而设计。它工作在网络层,对TCP/IP数据包实施精细化的过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。基于内核实现的iptables具有卓越的性能和稳定性,在全球范围内获得了广泛应用。

        本文将系统介绍iptables防火墙的核心概念、结构原理、匹配机制和规则配置方法,帮助读者全面掌握这一重要的网络安全技术。

1 iptables概述

1.1 Netfilter与iptables关系

1.1.1 Netfilter
  • Linux防火墙功能由Netfilter组件提供

  • Netfilter工作在内核空间,集成在Linux内核中

  • 采用模块化设计,具有良好的可扩充性

  • 与IP协议栈无缝契合,支持数据包过滤、地址转换和处理操作

  • 官网文档:https://netfilter.org/documentation/

1.1.2 iptables
  • 属于用户空间(User Space)的防火墙管理体系

  • 管理Linux防火墙的命令行程序

  • 位于/sbin/iptables目录下

  • 使插入、修改和删除数据包过滤表中的规则变得容易

1.1.3 两者关系
  • netfilter:内核态的防火墙功能体系

  • iptables:用户态的防火墙管理工具

  • 后期简称为iptables,基于内核防火墙,内置raw、mangle、nat和filter四个规则表

2 iptables的表、链结构

2.1 四表五链结构介绍

2.1.1 基本概念
  • 规则表:容纳各种规则链的容器

  • 规则链:容纳各种防火墙规则的链条

  • 规则:对数据包进行过滤或处理的具体规则

  • 结构关系:表里有链,链里有规则

2.1.2 四表功能***
  1. raw表:决定是否对数据包进行状态跟踪

    • 包含链:OUTPUT、PREROUTING

  2. mangle表:修改数据包内容,做流量整形,设置标记

    • 包含链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

  3. nat表:负责网络地址转换,修改源/目标IP地址或端口

    • 包含链:OUTPUT、PREROUTING、POSTROUTING

  4. filter表:负责过滤数据包,决定是否放行

    • 包含链:INPUT、FORWARD、OUTPUT

2.1.3 五链功能***
  1. INPUT:处理入站数据包,匹配目标IP为本机的数据包

  2. OUTPUT:处理出站数据包

  3. FORWARD:处理转发数据包,匹配流经本机的数据包

  4. PREROUTING路由选择前处理数据包,用于DNAT

  5. POSTROUTING路由选择后处理数据包,用于SNAT

2.2 数据包过滤的匹配流程***

2.2.1 规则表应用顺序***

raw → mangle → nat → filter

2.2.2 规则链匹配顺序
  1. 主机型防火墙

  • 入站数据:PREROUTING → INPUT → 本机应用程序
  • 出站数据:本机应用程序 → OUTPUT → POSTROUTING
  1. 网络型防火墙

  • 转发数据:PREROUTING → FORWARD → POSTROUTING
2.2.3 规则链内匹配顺序
  • 自上向下依次检查,找到匹配规则即停止(LOG策略除外)

  • 找不到匹配规则时,按该链的默认策略处理

  • 默认策略不参与链内规则的顺序编排

2.2.4 数据包匹配流程详解
  1. 入站数据流向:外界数据包 → PREROUTING → 路由选择 → INPUT → 应用程序

  2. 转发数据流向:外界数据包 → PREROUTING → 路由选择 → FORWARD → POSTROUTING

  3. 出站数据流向:本机数据包 → 路由选择 → OUTPUT → POSTROUTING

3 编写防火墙规则

3.1 iptables安装配置

3.1.1 关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
sentenforce 0
3.1.2 安装iptables
yum -y install iptables iptables-services
3.1.3 设置开机启动
systemctl start iptables.service
systemctl enable iptables.service

3.2 基本语法与控制类型

3.2.1 语法构成

iptables 【-t 表名】【管理参数】【链名】【匹配条件】【-j 控制类型】

3.2.2 注意事项不指定表名时,默认使用 filter
  • 不指定链名时,默认指表内所有链

  • 除非设置链的默认策略,否则必须指定匹配条件

  • 参数、链名、控制类型使用大写字母

3.2.3 数据包控制类型
ACCEPT允许通过
DROP直接丢包,不回应
REJECT拒绝通过,回应
LOG记录日志信息后传递给下一条规则
SNAT修改数据包源地址
DNAT修改数据包目的地址
MASQUERADE伪装成非固定公网IP地址

3.3 基本操作命令

3.3.1 常用管理参数
选项功能描述示例
-A在指定链末尾追加规则iptables -A INPUT
-I在指定链中插入新规则iptables -I INPUT
-P指定默认规则iptables -P OUTPUT ACCEPT
-D删除规则iptables -t nat -D INPUT
-R修改、替换规则iptables -t nat -R INPUT
-L查看规则iptables -t nat -L
-n数字形式显示iptables -L -n
-v显示详细信息iptables -v -L
--line-number显示规则编号iptables -L --line-number
-F清除链中所有规则iptables -F
-X清空自定义链规则iptables -X
-Z清空链计数器iptables -Z
-S查看链的所有规则iptables -t nat -S
3.3.2 添加新规则
iptables -t filter -A INPUT -p icmp -j REJECT       
#在filter表 INPUT链 行末添加:禁止所有ICMP请求进入本机,并告知被拒者
解释:其他计算机将无法成功 ping 通你的服务器iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT        
#在filter表 INPUT链 第2行添加:允许所有目标端口为 22 的 TCP 请求进入本机
解释:开放了服务器的 SSH 远程登录端口,允许外部连接
3.3.3 查看规则列表
iptables -L INPUT --line-numbers
iptables -nL INPUT
iptables -vnL --line-numbers
3.3.4 删除清空规则
iptables -D INPUT 5
iptables -F INPUT
iptables -t nat -F
3.3.5 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

3.4 规则的匹配条件

3.4.1 通用匹配
  1. 协议匹配-p 协议名

  2. 地址匹配-s 源地址-d 目的地址

  3. 接口匹配-i 入站网卡-o 出站网卡

iptables -A FORWARD ! -p icmp -j ACCEPT
#在filter表 FORWARD链 行末添加:接收所有非ICMP请求进入本机iptables -A INPUT -s 192.168.80.11 -j DROP
#在filter表 INPUT链 行末添加:拒绝 IP地址为 192.168.80.11 的数据进入本机,并丢弃不回应iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP 
#在filter表 INPUT链 行首添加:拒绝 192.168.80.0/24网段的数据通过ens33网卡进入本机,并丢弃不回应
3.4.2 隐含匹配
  1. 端口匹配--sport 源端口--dport 目的端口

  2. TCP标记匹配--tcp-flags TCP标记

  3. ICMP类型匹配--icmp-type ICMP类型

iptables -A INPUT -p tcp --sport 1000:3000 -j REJECT
#在filter表 INPUT链 行末添加:拒绝所有从外部发起、且源端口号在1000到3000范围内的TCP连接,并告知被拒者iptables -A INPUT -p icmp --icmp-type 8 -j DROP        
#丢弃所有发往本机的 ICMP Echo Request 请求包,并丢弃不回应
3.4.3 拓展

  --icmp-type 8 vs  -p icmp

-p icmp -j DROP-p icmp --icmp-type 8 -j DROP
这会丢弃所有类型的 ICMP 包,包括 Echo Request (8)、Echo Reply (0)、Destination Unreachable (3) 等

只丢弃 ICMP Echo Request 包(即入站 ping 请求)。其他类型的 ICMP 包(如出站 ping 的回复、网络错误消息等)仍然被允许

影响: 你不仅无法被 ping 通,还可能影响路径 MTU 发现、网络诊断等关键功能,可能导致网络连接问题影响: 效果非常精准。你的服务器仍然可以正常 ping 通外部(因为能收到 Echo Reply (Type 0)),也能接收其他重要的网络控制消息,只是别人无法 ping 通你
3.4.4 显式匹配
  1. 多端口匹配-m multiport --sport/dport 端口列表

  2. IP范围匹配-m iprange --src-range IP范围

  3. MAC地址匹配-m mac --mac-source MAC地址

  4. 状态匹配-m state --state 连接状态

iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
#在filter表 INPUT链 行末添加:接受所有端口号为80,22,21,20,53的TCP数据进入本机iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
#在filter表 FORWARD链 行末添加:拒绝所有 新连接状态且没有syn标志 的TCP数据,并丢弃不回应

4 总结

        iptables作为Linux系统中最强大的防火墙工具,提供了灵活而精细的网络数据包控制能力。通过本文的系统学习,我们掌握了:

  1. 核心架构:理解了netfilter与iptables的关系,以及四表五链的结构设计理念

  2. 匹配机制:掌握了数据包在表和链间的流转流程匹配优先级

  3. 规则配置:学会了使用各种管理选项进行规则的添加、查看、删除和修改

  4. 匹配条件:熟悉了通用匹配隐含匹配显式匹配三种匹配方式的应用场景

        在实际生产环境中,iptables的合理配置对网络安全至关重要。建议遵循"默认拒绝,按需开放"的原则,结合具体的业务需求设计防火墙规则。同时,要注意规则的测试和验证,避免因配置失误导致的服务中断。通过持续学习和实践,能够更加熟练地运用iptables构建坚固的网络安全防护体系。

        重要提醒:在对远程服务器进行iptables配置时,务必先设置允许SSH连接的规则,然后再设置默认策略为DROP,防止因配置失误导致无法远程连接服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96793.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96793.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96793.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记3

🎯 一、核心目标:解决“找服务”的问题 想象一下,一辆现代汽车里有上百个智能设备(ECU),比如: 自动驾驶控制器(需要“车速”服务)中控大屏(需要“导航”和“音…

AAA服务器技术

一、AAA认证架构理解AAA基本概念与架构先介绍: AAA是什么(认证、授权、计费)重点理解: 为什么需要AAA?它的三大功能分别解决什么问题?关联后续: 这是所有后续协议(RADIUS/TACACS&…

客户生命周期价值帮助HelloFresh优化其营销支出

1 引言 了解客户的长期价值对HelloFresh至关重要。客户生命周期价值(CLV)代表了客户与公司关系的整个过程中所产生的总价值。通过预测这一指标,我们可以更明智地决定如何分配营销资源,以获得最大的影响。 在本文中,我…

Vue 2 中的 v-model和Vue3中的v-model

你问的是 v-model&#xff08;不是 v-modal 吧 &#x1f604;&#xff09;&#xff0c;我来帮你梳理一下 Vue2 和 Vue3 的 v-model 区别。&#x1f539; Vue 2 中的 v-model语法<input v-model"msg">v-model 本质上是 语法糖&#xff0c;等价于&#xff1a;<…

朴素贝叶斯算法学习总结

一、贝叶斯理论基础 1. 贝叶斯思想的核心 贝叶斯算法由 18 世纪英国数学家托马斯・贝叶斯提出&#xff0c;其核心是解决 “逆概” 问题 —— 区别于 “正向概率” 已知条件求结果概率的思路&#xff0c;逆概是通过观测到的结果&#xff0c;反推导致该结果的原因概率。比如在日常…

【Protues仿真】基于AT89C52单片机的舵机和直流电机控制

目录 1 PWM信号 1.1 三个最基本的量 1.1.1 周期 T&#xff08;Period&#xff09; 1.1.2脉冲宽度 Th&#xff08;High Time&#xff09; 1.1.3占空比 D&#xff08;Duty Cycle&#xff09; 1.2 为什么要用 PWM 1.3 关键参数对照表 1.4单片机里产生 PWM 的四种套路 1.4…

vue家教预约平台设计与实现(代码+数据库+LW)

摘要 随着互联网技术的不断发展&#xff0c;在线家教平台逐渐成为家长和学生选择教育服务的重要途径。尤其在现代社会中&#xff0c;个性化教育需求日益增多&#xff0c;传统的线下家教形式已无法完全满足广大家长和学生的需求。在线家教平台不仅能为学生提供更多选择&#xf…

AI系列 - Claude 与 Qwen 模型自动补全对比:谁更胜一筹?

Claude 与 Qwen 模型自动补全对比&#xff1a;谁更胜一筹&#xff1f; 导读&#xff1a;随着大语言模型的快速发展&#xff0c;自动补全功能在代码编写、文本生成等领域变得越来越重要。本文将对比 Anthropic 的 Claude 系列模型与 Alibaba 的 Qwen 系列模型在自动补全任务中的…

【ARM】MDK在debug模式下断点的类型

1、 文档目标本文旨在深入探讨嵌入式开发环境中&#xff08;以MDK为例&#xff09;调试模式下的断点类型&#xff0c;帮助开发者全面了解不同断点的工作原理及其应用场景。通过掌握这些知识&#xff0c;开发者可以更高效地进行代码调试&#xff0c;快速定位和解决问题。2、 问题…

CF2133C 下界(The Nether)

CF2133C 下界&#xff08;The Nether&#xff09; 洛谷题目传送门 题目描述 这是一道交互题。 最近发现下界&#xff08;The Nether&#xff09;后&#xff0c;Steve 在他的世界中建造了一个由 nnn 个下界传送门组成的网络&#xff0c;每个传送门位于不同的位置。 每个传送…

无线USB转换器TOS-WLink网盘更新--TOS-WLink使用帮助V1.0.pdf

1&#xff0c;编写原因 随着当前视频越来越多&#xff0c;对于首次接触到WLink的朋友、首次开箱使用的朋友不够友好&#xff0c;常常感觉无从下手&#xff0c;为此编写了TOS-WLink使用帮助V1.0.pdf&#xff1b;按照文档进行一步一步驱动安装&#xff0c;配网&#xff1b;文档中…

Redis面试精讲 Day 29:Redis安全防护与最佳实践

【Redis面试精讲 Day 29】Redis安全防护与最佳实践 在“Redis面试精讲”系列的第29天&#xff0c;我们聚焦于一个在生产环境中至关重要、却常被开发者忽视的核心主题——Redis的安全防护与最佳实践。随着Redis广泛应用于高并发、分布式系统中&#xff0c;其暴露在公网或内网中…

【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题

文章目录一、相交链表问题问题描述解题思路分析思路一&#xff1a;暴力遍历法思路二&#xff1a;双指针对齐法&#xff08;最优解&#xff09;二、链表的回文结构问题描述解题思路完整代码三、 随即链表的复制问题描述解题思路复杂度分析一、相交链表问题 问题描述 给定两个单…

Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】

Mysql InnoDB 底层架构设计、功能、原理、源码系列合集 一、InnoDB 架构先导。【模块划分&#xff0c;各模块功能、源码位置、关键结构体/函数】 二、内存结构核心 - 缓冲池与性能加速器 三、日志系统 - 事务持久化的基石 四、事务引擎核心 - MVCC与锁机制 五、InnoDB 高阶…

[ pytorch ] 基于CLIP的zero-shot图像分类

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 地址&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 一、关于CLIP 基于图文匹配的特征学习&#xff1a;该论文证明了预测哪个标题与哪个图像…

SP95N65CTO:一款高性能650V SiC MOSFET的全面解析

碳化硅&#xff08;SiC&#xff09;功率器件因其优异的性能&#xff0c;在高频、高温、高效率的应用中越来越受到重视。本文将以SP95N65CTO为例&#xff0c;详细介绍这款650V SiC MOSFET的关键特性、电气参数与应用场景。一、产品概述SP95N65CTO是一款采用TOLI&#xff08;TO-2…

week4-[二维数组]平面上的点

week4-[二维数组]平面上的点 题目描述 有 NNN 个二维平面上的点&#xff0c;每个点的坐标都是整数且坐标范围都在 0∼9990\sim 9990∼999 之间&#xff0c;求其中出现最频繁的点的出现次数及其坐标。 输入格式 第一行有一个整数 NNN&#xff0c;表示平面上点的个数。 接下来 NN…

领域专用AI模型训练指南:医疗、法律、金融三大垂直领域微调效果对比

领域专用AI模型训练指南&#xff1a;医疗、法律、金融三大垂直领域微调效果对比 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0…

在自动驾驶中ESKF实现GINS时,是否将重力g作为变量考虑进去的目的是什么?

在自动驾驶的ESKF中&#xff0c;是否将重力 g 作为估计变量&#xff0c;可以从多个维度来比较这两种方法的差异。对比维度不将重力 g 作为变量将重力 g 作为变量核心假设重力矢量 g 是已知且恒定的完美参考量。重力矢量 g 是需要被估计或校准的量&#xff0c;其值可能存在不确定…

Dify 从入门到精通(第 55/100 篇):Dify 的模型微调(进阶篇)

Dify 从入门到精通&#xff08;第 55/100 篇&#xff09;&#xff1a;Dify 的模型微调 Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#xff1a;从节点…