发布时间:2026/7/15 4:54:24
Linux系统基础12:防火墙管理 新手超详细教程 Linux 防火墙管理 新手超详细教程目录Linux 防火墙管理 新手超详细教程一、先搞懂防火墙核心基础概念1. 防火墙管什么三个流量方向2. 核心工作逻辑规则匹配 默认策略三种基础动作二、底层核心工具iptables1. 基础语法结构2. 常用操作与匹配条件核心操作命令常用匹配条件3. 新手必学实操举例例 1查看当前所有规则例 2允许 SSH22 端口的 TCP 入站流量例 3设置入站默认策略为丢弃白名单模式例 4只允许特定 IP 访问 SSH白名单例 5拉黑恶意 IP所有流量都丢弃例 6允许 ping 通本机ICMP 协议例 7删除一条规则4. 新手重要注意事项三、新手首选工具ufw1. 基础状态管理例 1查看防火墙状态例 2启用防火墙例 3关闭防火墙例 4重置所有规则恢复默认2. 默认策略新手不用改默认就很安全3. 核心实操端口与 IP 规则例 1开放 SSH 服务22 端口例 2开放网页服务 80 和 443 端口例 3开放一段端口范围例 4只允许指定 IP 访问 SSHIP 白名单例 5禁止某个 IP 访问所有端口例 6限制 SSH 连接速率防暴力破解4. 删除规则5. 新手完整配置流程示例四、区域化管理工具firewalld1. 核心概念区域Zone2. 最容易踩的坑运行时 vs 永久配置3. 基础状态命令例 1查看防火墙运行状态例 2查看当前默认区域例 3查看当前区域的所有生效规则例 4启动 / 停止 firewalld 服务4. 常用规则配置举例例 1永久开放 HTTP 服务80 端口例 2永久开放自定义端口比如 MySQL 3306例 3移除端口 / 服务例 4添加 IP 白名单允许该 IP 所有访问例 5禁止指定 IP 访问富规则五、新手选型与避坑指南1. 我该选哪个工具2. 新手最高频踩坑预警坑 1远程配置先把自己关外面了坑 2firewalld 改完规则不生效坑 3分不清 DROP 和 REJECT坑 4WSL 里防火墙不生效3. 排错小技巧防火墙是 Linux 系统安全的第一道防线核心作用是管控进出系统的网络流量允许合法的访问通过拦截非法、可疑的连接相当于系统的「网络门卫」。Linux 主流的防火墙工具有三层底层核心iptables操作内核 netfilter 模块所有发行版通用功能极强但语法复杂上层简化工具ufwUbuntu/Debian 系列默认专为简化 iptables 设计语法极其简单新手首选firewalldCentOS/RHEL 系列默认引入「区域」概念适合多网络环境支持动态更新本质关系ufw 和 firewalld 都是「壳」底层最终还是调用 iptables或新一代 nftables来执行规则只是把复杂的语法封装成了简单易懂的命令。下面我们从基础原理到每个工具的实操逐层讲解每个命令都配逐成分拆解 真实场景举例 新手避坑提醒。一、先搞懂防火墙核心基础概念1. 防火墙管什么三个流量方向防火墙根据流量的走向分成三类管控新手 99% 的场景只需要管「入站流量」。流量方向对应链名含义日常场景入站流量INPUT外部机器主动发往本机的数据包别人 SSH 连你、别人访问你搭的网站出站流量OUTPUT本机主动发往外部的数据包你访问百度、你下载软件、你连别人的服务器转发流量FORWARD经过本机转发给其他机器的数据包本机当路由器、网关时中转其他设备的流量2. 核心工作逻辑规则匹配 默认策略防火墙是一条条「规则」的集合数据包过来时从上到下按顺序匹配匹配到某条规则直接执行规则对应的动作不再往下检查所有规则都不匹配执行「默认策略」三种基础动作动作效果适用场景ACCEPT允许数据包通过开放合法的端口 / IPDROP直接丢弃数据包不做任何回应拉黑恶意 IP对方会表现为「连接超时」不知道端口是否存在更安全REJECT拒绝数据包并返回「连接被拒绝」的提示明确告诉对方端口不可用调试时用安全最佳实践默认策略设为拒绝只手动开放需要的端口白名单模式比「默认全放只拉黑」安全得多。二、底层核心工具iptablesiptables是 Linux 内核级防火墙的标准管理工具所有发行版都支持嵌入式精简系统也基本自带。它功能极强但语法繁琐、容易写错新手先掌握基础入站规则即可。1. 基础语法结构iptables [-t 表名] 操作命令 [链名] [匹配条件] -j 执行动作表名不写默认是filter表新手 99% 的场景都用这个表专门管控数据包过滤其他表nat、mangle 等新手不用深入。操作命令增、删、查、改规则链名INPUT / OUTPUT / FORWARD对应三个流量方向匹配条件按 IP、端口、协议等条件过滤数据包动作ACCEPT / DROP / REJECT2. 常用操作与匹配条件核心操作命令命令作用-L查看当前链的所有规则-A追加一条规则到链的末尾-I插入一条规则到链的开头优先级最高先匹配-D删除指定规则-P设置链的默认策略常用匹配条件条件作用示例-p 协议匹配网络协议-p tcp、-p udp、-p icmp--dport 端口匹配目标端口入站时是本机被访问的端口--dport 22-s 源IP匹配发送方的 IP 地址-s 192.168.1.100-i 网卡名匹配从哪个网卡进来的数据包-i eth03. 新手必学实操举例⚠️ 远程操作服务器 / 开发板警告永远先放开 SSH 22 端口再修改默认策略不然直接把自己挡在外面只能通过串口 / 机房恢复。例 1查看当前所有规则iptables -L -n逐成分拆解iptables命令名-L列出所有规则-n以数字形式显示 IP 和端口不解析域名速度更快输出会按 INPUT、FORWARD、OUTPUT 分成三块分别对应三个链的规则。例 2允许 SSH22 端口的 TCP 入站流量iptables -A INPUT -p tcp --dport 22 -j ACCEPT逐成分拆解-A INPUT给 INPUT 入站链追加一条规则-p tcp只匹配 TCP 协议的数据包--dport 22目标端口是 22SSH 默认端口-j ACCEPT匹配到就执行「允许通过」的动作效果外部机器可以通过 22 端口 SSH 连接到本机。例 3设置入站默认策略为丢弃白名单模式iptables -P INPUT DROP拆解-P INPUT DROP给 INPUT 链设置默认策略为 DROP效果所有没被规则明确允许的入站数据包全部直接丢弃安全性最高。 再次提醒执行这条之前必须已经放开了 SSH 端口例 4只允许特定 IP 访问 SSH白名单iptables -I INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT拆解-I INPUT插入到入站链最开头优先匹配-s 192.168.1.100只有源 IP 是 192.168.1.100 才匹配后面的端口和协议和之前一致效果只有 192.168.1.100 这台机器能 SSH 连过来其他 IP 都被默认策略挡住是最安全的远程登录方式。例 5拉黑恶意 IP所有流量都丢弃iptables -I INPUT -s 192.168.1.200 -j DROP效果192.168.1.200 这个 IP 发的所有包直接丢掉完全访问不了本机。例 6允许 ping 通本机ICMP 协议iptables -A INPUT -p icmp -j ACCEPT效果别人执行ping 你的IP能收到回应方便调试网络。例 7删除一条规则方法一按编号删除推荐不容易写错# 先查看规则编号 iptables -L -n --line-numbers # 删除 INPUT 链第 3 条规则 iptables -D INPUT 3方法二按规则内容删除iptables -D INPUT -p tcp --dport 80 -j ACCEPT4. 新手重要注意事项规则是临时的iptables 规则默认存在内存里重启系统就会全部消失。保存规则到文件iptables-save /etc/iptables.rules重启后恢复iptables-restore /etc/iptables.rulesUbuntu 可以装iptables-persistent工具实现开机自动加载。规则顺序很重要从上到下匹配匹配到就停。比如前面已经 DROP 了某个 IP后面再写允许也没用。嵌入式场景OK62xx 这类精简嵌入式 Linux 一般只带 iptables没有 ufw/firewalld直接用 iptables 配置即可。三、新手首选工具ufwufw全称 Uncomplicated Firewall是 Ubuntu/Debian 系列默认的防火墙工具专门为了简化 iptables 设计语法极其简单是新手学习防火墙的最佳选择。WSL 里的 Ubuntu 也自带 ufw但注意WSL2 网络共享 Windows 内核流量优先经过 Windows 防火墙ufw 的管控效果有限实体机 / 虚拟机 / 服务器上的 Ubuntu 完全生效。1. 基础状态管理例 1查看防火墙状态sudo ufw status输出Status: inactive代表未启用Status: active代表已启用启用状态下会列出当前所有生效的规则例 2启用防火墙sudo ufw enable⚠️远程操作必须先放开 SSH 端口再执行执行后会提示「可能中断现有 SSH 连接」输入y回车确认即可。例 3关闭防火墙sudo ufw disable例 4重置所有规则恢复默认sudo ufw reset清空所有自定义规则回到初始状态。2. 默认策略新手不用改默认就很安全ufw 出厂默认就是最安全的白名单模式入站默认deny全部拒绝出站默认allow全部允许也就是你主动访问外面不受限制外面主动连你默认全被挡住需要什么端口就手动开放什么端口完全符合最小权限原则。3. 核心实操端口与 IP 规则语法非常直观ufw 动作 条件动作主要有allow允许、deny拒绝、limit限流。例 1开放 SSH 服务22 端口写法一按服务名ufw 内置了常用服务和端口的对应关系sudo ufw allow ssh写法二按端口 协议更精准推荐sudo ufw allow 22/tcp拆解允许 TCP 协议的 22 端口入站为什么指定 tcpSSH 只用 TCP 协议不写的话会同时放开 TCP 和 UDP没必要。例 2开放网页服务 80 和 443 端口sudo ufw allow 80/tcp sudo ufw allow 443/tcp对应 HTTP 和 HTTPS 服务搭网站必开。例 3开放一段端口范围比如开放 1000~2000 的所有 TCP 端口sudo ufw allow 1000:2000/tcp例 4只允许指定 IP 访问 SSHIP 白名单sudo ufw allow from 192.168.1.100 to any port 22 proto tcp逐成分拆解allow from 192.168.1.100只有源 IP 是这个地址才允许to any port 22目标端口是 22proto tcpTCP 协议效果除了 192.168.1.100其他 IP 都连不上 SSH生产环境推荐这么配置。例 5禁止某个 IP 访问所有端口sudo ufw deny from 192.168.1.200效果这个 IP 的所有入站流量全部拒绝。例 6限制 SSH 连接速率防暴力破解sudo ufw limit ssh/tcp作用同一个 IP 30 秒内最多发起 6 次 SSH 连接超过就拒绝能有效防止暴力破解密码。只要开了 SSH 远程登录都建议加上这条规则。4. 删除规则方法一按规则内容删除sudo ufw delete allow 80/tcp拆解在原来的允许命令前面加delete就能删除对应规则。方法二按编号删除不容易错# 先查看带编号的规则列表 sudo ufw status numbered # 删除第 2 条规则 sudo ufw delete 25. 新手完整配置流程示例场景新服务器配置防火墙只开放 SSH 和网页端口限制 SSH 暴力破解# 1. 先放开SSH防止启用后自己断连 sudo ufw allow 22/tcp # 2. 开启SSH速率限制防暴力破解 sudo ufw limit 22/tcp # 3. 开放网页端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 4. 启用防火墙 sudo ufw enable # 5. 查看状态确认规则都在 sudo ufw status四、区域化管理工具firewalldfirewalld是 CentOS、RHEL、Rocky Linux 等红帽系发行版的默认防火墙和 ufw 同级都是上层简化工具。它的核心特点是「区域Zone」设计不同网络环境对应不同安全级别的区域网卡可以归属到不同区域适合经常切换网络、多网卡的场景。1. 核心概念区域Zone系统预设了多个安全等级不同的区域常用的有区域安全等级说明drop最高所有入站包全部丢弃只允许出站相当于隐身模式block高入站全部拒绝返回拒绝提示public中默认公共网络环境只开放手动添加的端口 / 服务默认最常用home/internal中低家庭 / 内部局域网信任度高开放更多服务trusted最低完全信任所有流量都允许新手只用默认的public区域就足够了。2. 最容易踩的坑运行时 vs 永久配置firewalld 的规则分两种运行时配置默认修改的就是这个立即生效但重启 firewalld 服务就消失永久配置加--permanent参数不立即生效重启服务后永久保留✅ 标准操作流程加--permanent写规则 → 执行firewall-cmd --reload加载生效 → 既立即生效又永久保存。3. 基础状态命令例 1查看防火墙运行状态sudo firewall-cmd --state输出running代表正在运行not running代表未启动。例 2查看当前默认区域sudo firewall-cmd --get-default-zone默认一般是public。例 3查看当前区域的所有生效规则sudo firewall-cmd --list-all会输出区域名、绑定的网卡、开放的服务、开放的端口等完整信息。例 4启动 / 停止 firewalld 服务# 启动服务 sudo systemctl start firewalld # 设置开机自启 sudo systemctl enable firewalld # 停止服务 sudo systemctl stop firewalld4. 常用规则配置举例以下都以默认public区域为例不指定--zone就默认操作当前区域。例 1永久开放 HTTP 服务80 端口# 添加永久规则 sudo firewall-cmd --permanent --add-servicehttp # 重新加载让规则立即生效 sudo firewall-cmd --reload拆解--permanent标记为永久规则--add-servicehttp添加 http 服务系统内置了服务对应的端口不用记端口号可用的内置服务可以用firewall-cmd --get-services查看全部。例 2永久开放自定义端口比如 MySQL 3306sudo firewall-cmd --permanent --add-port3306/tcp sudo firewall-cmd --reload格式--add-port端口号/协议例 3移除端口 / 服务# 移除服务 sudo firewall-cmd --permanent --remove-servicehttp # 移除端口 sudo firewall-cmd --permanent --remove-port3306/tcp # 重载生效 sudo firewall-cmd --reload例 4添加 IP 白名单允许该 IP 所有访问sudo firewall-cmd --permanent --add-source192.168.1.100 sudo firewall-cmd --reload例 5禁止指定 IP 访问富规则sudo firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.200 drop sudo firewall-cmd --reload效果丢弃 192.168.1.200 的所有入站数据包。五、新手选型与避坑指南1. 我该选哪个工具系统 / 场景推荐工具理由Ubuntu / Debian / WSLufw语法最简单新手零门槛系统默认自带CentOS / RHEL / Rockyfirewalld系统默认区域化管理适合服务器场景嵌入式 Linux / 精简系统iptables体积小通用性强上层工具一般没装❌ 不要多个工具混着用选一个就好同时启用多个会导致规则混乱、异常。2. 新手最高频踩坑预警坑 1远程配置先把自己关外面了错误操作直接启用防火墙没先开放 SSH 端口。后果SSH 连接直接断开再也连不上只能通过串口 / 机房重装 / 控制台恢复。正确顺序永远先加 SSH 允许规则 → 确认规则生效 → 再启用防火墙 → 不要关闭当前终端新开一个终端测试登录正常再退出。坑 2firewalld 改完规则不生效原因没加--permanent或者加了但没reload。记住口诀加永久必重载。坑 3分不清 DROP 和 REJECTDROP静默丢包对方表现为连接超时不知道端口是否存在更安全隐蔽生产环境用。REJECT明确返回拒绝对方知道端口存在但不让连调试的时候用。坑 4WSL 里防火墙不生效WSL2 的网络是共享 Windows 的流量优先经过 Windows 防火墙WSL 内部的 ufw/iptables 只能管控 WSL 内部的流量要对外管控端口需要在 Windows 防火墙里设置。3. 排错小技巧服务连不上先临时关防火墙测试一下关了就能通99% 是防火墙规则的问题。检查规则顺序iptables/ufw 都是从上到下匹配前面拒绝了后面再允许也没用。嵌入式设备排查先用iptables -L -n看有没有规则嵌入式系统默认一般是空规则、全放行。

相关新闻

2026/7/15 4:54:24

SPI时序图实战分析:从芯片手册到代码配置的完整指南

1. SPI时序图分析入门:从恐惧到理解第一次接触SPI时序图的时候,我完全被那些密密麻麻的波形线和专业术语吓到了。芯片手册上那些看似天书般的图示,让我一度怀疑自己是不是选错了职业方向。但后来我发现,这其实就像学骑自行车一样&…

2026/7/15 4:54:24

C++建造者模式实战:从复杂对象构建到现代工程应用

1. 项目概述:为什么我们需要建造者模式?在C项目里,尤其是那些涉及复杂对象构造的场景,你肯定遇到过这样的头疼事:一个对象有十几个甚至几十个成员变量需要初始化,构造函数长得像裹脚布,参数列表…

2026/7/15 6:49:31

JeecgBoot工作流引擎完整配置指南:Activiti与表单设计器无缝集成

JeecgBoot工作流引擎完整配置指南:Activiti与表单设计器无缝集成 【免费下载链接】jeecg-boot 【低代码迈入 v2.0】AI低代码平台,AI Skills 一句话生成整个系统;一键生成前后端代码甚至整个模块。 AI Skills 一句话画流程、设计表单、生成报表…

2026/7/15 6:44:31

【5G系列】PDCP协议演进与实战:从LTE到NR的关键增强与实现挑战

1. PDCP协议演进背景与核心需求5G时代对无线通信提出了三大关键指标:峰值速率提升10倍、空口时延降低到1ms级别、可靠性达到99.999%。这些需求直接推动了PDCP协议的深度演进。我在参与某5G基带芯片开发时,实测发现LTE的PDCP设计在高速率场景下会出现序列…

2026/7/14 12:47:32

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/14 19:23:19

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/14 18:30:06

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/15 0:08:29

【LINUX】驱动

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

2026/7/15 0:08:29

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

2026/7/15 0:08:29

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…

2026/7/14 12:47:31

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…