新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux防火墙 firewalld 实战

发布时间:2026/9/28 20:44:33来源:尧图网络
Linux防火墙 firewalld 实战
Linux防火墙 firewalld 实战简介讲解 Linux 内核 Netfilter 框架firewalld 核心概念 zone 区域runtime 运行时与 permanent 永久配置放行服务端口、源 / 网卡绑定、MASQUERADE 源地址转换、端口转发 DNAT、ICMP 控制、rich‑rule 富规则。一、防火墙基础概念防火墙分类按保护范围主机防火墙只保护本机firewalld、iptables。网络防火墙保护整个局域网硬件防火墙设备。按实现方式硬件防火墙专用硬件设备华为、华三、天融信等。软件防火墙运行在通用操作系统之上firewalld、iptables。按 OSI 模型网络层包过滤防火墙工作在四层检查源 IP、目的 IP、端口、协议速度快无法解析应用层内容。应用层 WAFWeb 应用防火墙解析 HTTP/HTTPS防御 SQL 注入、XSS 等 Web 攻击消耗 CPU 高。Netfilter 内核子系统Netfilter 是Linux 内核态网络过滤子系统真正负责处理数据包用户空间工具只是编写规则交给内核执行。 配套用户层工具iptablesIPv4 包过滤ip6tablesIPv6arptablesARP 协议过滤防 ARP 欺骗ebtables二层数据链路过滤多用于桥接、VLAN 环境[rootcentos7 ~]# ls -1 /sbin/*tables -rwxr-xr-x 1 root root 59872 11月 6 2016 /sbin/arptables -rwxr-xr-x. 1 root root 7016 4月 11 2018 /sbin/ebtables lrwxrwxrwx. 1 root root 13 8月 1 15:45 /sbin/ip6tables - xtables-multi lrwxrwxrwx. 1 root root 13 8月 1 15:45 /sbin/iptables - xtables-multiNftables新一代 netfilter 增强框架CentOS7 firewalld 底层可使用 nftables 后端。静态防火墙 vs 动态防火墙静态防火墙iptables‑service修改规则后要完整 reload 全部规则会中断现有 TCP 连接。动态防火墙firewalld只增量更新变更的规则不中断已有连接生产环境优势大。注意不要同时混用 firewalld 和 iptables 两套服务两套规则会互相干扰。二、firewalld 核心Zone 区域zone 就是一套预定义的规则集合把网卡、源 IP 流量绑定到不同 zone实现不同安全策略。全部 zone 说明表格zone 名称策略说明trusted全部流量允许通过public默认 zone仅允许 ssh、dhcpv6‑client其余拒绝external允许 ssh开启 IPv4 地址伪装 SNAT适合路由器外网网卡home家庭内网放行 ssh、samba‑client 等internal同 homework工作环境放行 sshdmz隔离区仅允许 ssh 访问block拒绝入站数据包返回拒绝应答包drop直接丢弃数据包不回复任何 ICMP 错误报文对方看不到拒绝提示数据包匹配 zone 优先级如果数据包源 IP 匹配 zone 配置的 source 源地址 → 使用该 zone 规则。不匹配 source则看数据包进入的网卡接口绑定哪个 zone。都不匹配使用系统default 默认 zone默认 public。lo 本地回环网卡默认绑定 trusted。 不匹配允许规则的流量默认拒绝trusted 除外。规则内部优先级端口转发、伪装普通允许规则service、port普通拒绝规则日志审计✅富规则 rich‑rule 优先级高于普通 zone 规则全部规则不匹配默认拒绝三、runtime 运行时 vs permanent 永久配置非常重要实操最容易踩坑runtime运行时不加--permanent规则立即生效重启 firewalld 服务全部丢失。permanent永久加--permanent参数写入磁盘配置文件不会立刻生效需要执行firewall‑cmd --reload加载。reload vs complete‑reloadfirewall‑cmd --reload加载永久规则不切断已经建立好的 TCP 连接。firewall‑cmd --complete‑reload全部重新加载现有连接全部断开。推荐实操写法两条一起执行立刻生效同时保存永久配置# 示例放行http服务永久立即生效 [rootcentos7 ~]# firewall-cmd --permanent --add-servicehttp [rootcentos7 ~]# firewall-cmd --add-servicehttp另一种方式先只写 permanentreload或者运行时配置完成后--runtime‑to‑permanent把内存规则保存到磁盘。四、zone 区域基础管理命令# 列出全部可用zone [rootcentos7 ~]# firewall-cmd --get-zones # 查看当前激活的zone绑定网卡/源 [rootcentos7 ~]# firewall-cmd --get-active-zones # 查看系统默认zone [rootcentos7 ~]# firewall-cmd --get-default-zone # 修改系统默认zone同时会写永久配置 [rootcentos7 ~]# firewall-cmd --set-default-zonepublic # 查看默认zone完整规则 [rootcentos7 ~]# firewall-cmd --list-all # 查看指定zone完整规则 [rootcentos7 ~]# firewall-cmd --list-all --zonehome五、source 源地址管理按源 IP 网段匹配 zone来自指定源 IP / 网段的流量交给对应 zone 处理。# 将10.1.1.0/24网段流量交给home zone运行时 [rootcentos7 ~]# firewall-cmd --add-source10.1.1.0/24 --zonehome # 永久生效 [rootcentos7 ~]# firewall-cmd --permanent --add-source10.1.1.0/24 --zonehome # 查看home zone绑定的source [rootcentos7 ~]# firewall-cmd --list-sources --zonehome # 查询网段属于哪个zone [rootcentos7 ~]# firewall-cmd --get-zone-of-source10.1.1.0/24 # 删除source绑定 [rootcentos7 ~]# firewall-cmd --remove-source10.1.1.0/24 --zonehome [rootcentos7 ~]# firewall-cmd --permanent --remove-source10.1.1.0/24 --zonehome六、interface 网卡接口管理网卡设备绑定 zone流量从该网卡进来就使用对应 zone 策略。# 查看绑定网卡 [rootcentos7 ~]# firewall-cmd --list-interfaces # 查询网卡属于哪个zone [rootcentos7 ~]# firewall-cmd --get-zone-of-interfaceens32 # 修改网卡归属zone [rootcentos7 ~]# firewall-cmd --change-interfaceens32 --zonehome # 删除网卡和zone绑定 [rootcentos7 ~]# firewall-cmd --remove-interfaceens32 --zonehome [rootcentos7 ~]# firewall-cmd --permanent --remove-interfaceens32 --zonehome七、放行服务 service 管理firewalld 内置服务定义对应端口写在/usr/lib/firewalld/services/*.xml例如 http 对应 80/tcphttps 对应 443/tcp。# 查看系统预定义全部服务 [rootcentos7 ~]# firewall-cmd --get-services # 放行http服务运行时 [rootcentos7 ~]# firewall-cmd --add-servicehttp # 永久放行http [rootcentos7 ~]# firewall-cmd --permanent --add-servicehttp # 查看当前zone放行的服务 [rootcentos7 ~]# firewall-cmd --list-services # 查询是否放行http [rootcentos7 ~]# firewall-cmd --query-servicehttp # 移除放行 [rootcentos7 ~]# firewall-cmd --remove-servicehttp [rootcentos7 ~]# firewall-cmd --permanent --remove-servicehttp八、直接放行端口 port 管理没有预定义 service直接放行端口 / 端口范围。格式端口号/协议(tcp/udp)# 放行5900/tcp端口运行时 [rootcentos7 ~]# firewall-cmd --add-port5900/tcp # 永久放行 [rootcentos7 ~]# firewall-cmd --permanent --add-port5900/tcp # 查看放行端口列表 [rootcentos7 ~]# firewall-cmd --list-ports # 查询端口是否放行 [rootcentos7 ~]# firewall-cmd --query-port5900/tcp # 删除端口放行 [rootcentos7 ~]# firewall-cmd --remove-port5900/tcp [rootcentos7 ~]# firewall-cmd --permanent --remove-port5900/tcp九、MASQUERADE 地址伪装路由器功能内网机器经过本机上网把内网源 IP 替换成本机公网 IPexternal zone 默认自带 masquerade。# 查看是否开启masquerade [rootcentos7 ~]# firewall-cmd --query-masquerade # 开启masquerade运行时 [rootcentos7 ~]# firewall-cmd --add-masquerade # 永久开启 [rootcentos7 ~]# firewall-cmd --permanent --add-masquerade # 关闭 [rootcentos7 ~]# firewall-cmd --remove-masquerade [rootcentos7 ~]# firewall-cmd --permanent --remove-masquerade⚠️端口转发 forward‑port必须当前 zone 开启 masquerade 才会生效。十、forward‑port 端口转发 DNAT把访问本机某端口的流量转发到其他 IP:port可以转发到本机端口也转发内网其他服务器。 语法--add-forward‑portport源端口:prototcp:toport目标端口[:toaddr目标IP]# 示例1访问本机8000端口转发到本机80端口 [rootcentos7 ~]# firewall-cmd --add-forward-portport8000:prototcp:toport80 # 示例2访问本机1022转发到内网机器10.1.1.11的22端口 [rootcentos7 ~]# firewall-cmd --add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11 # 永久配置加上--permanent [rootcentos7 ~]# firewall-cmd --permanent --add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11 # 查看端口转发规则 [rootcentos7 ~]# firewall-cmd --list-forward-ports # 删除端口转发 [rootcentos7 ~]# firewall-cmd --remove-forward-portport8000:prototcp:toport80 [rootcentos7 ~]# firewall-cmd --permanent --remove-forward-portport1022:prototcp:toport22:toaddr10.1.1.11十一、ICMP 控制icmp‑block‑inversion 总开关默认no放行全部 ICMP可以单独 block 某类 icmp 类型。设置yes全部 ICMP 默认禁止再通过规则放行部分 icmp 类型。# 查看状态 [rootcentos7 ~]# firewall-cmd --query-icmp-block-inversion # 开启全局禁止ICMP [rootcentos7 ~]# firewall-cmd --add-icmp-block-inversion [rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block-inversion # 恢复默认关闭 [rootcentos7 ~]# firewall-cmd --remove-icmp-block-inversion [rootcentos7 ~]# firewall-cmd --permanent --remove-icmp-block-inversionicmp‑block屏蔽指定 ICMP 类型echo‑request就是 ping 请求报文屏蔽它别人无法 ping 通本机。# 查看系统支持的icmp类型 [rootcentos7 ~]# firewall-cmd --get-icmptypes # 禁止ping屏蔽echo‑request [rootcentos7 ~]# firewall-cmd --add-icmp-block echo-request [rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block echo-request # 查看被屏蔽的icmp清单 [rootcentos7 ~]# firewall-cmd --list-icmp-blocks # 删除屏蔽恢复ping [rootcentos7 ~]# firewall-cmd --remove-icmp-block echo-request [rootcentos7 ~]# firewall-cmd --permanent --remove-icmp-block echo-request注意修改 icmp‑block 后如果旧连接还能 ping 通执行--complete‑reload完全重载清空连接状态。[rootcentos7 ~]# firewall-cmd --complete-reload十二、rich‑rule 富规则普通 service/port 只能对整个 zone 生效富规则可以精细控制源 IP、目的 IP、协议、日志、限流、审计优先级高于普通 zone 规则。富规则基础语法rule [source] [destination] service|port|protocol|icmp‑type [log][audit][accept|reject|drop]实操示例示例 1拒绝所有 IPv4 的 icmp所有人无法 ping 本机[rootcentos7 ~]# firewall-cmd --add-rich-rulerule familyipv4 protocol valueicmp drop [rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 protocol valueicmp drop # 查看富规则列表 [rootcentos7 ~]# firewall-cmd --list-rich-rules # 删除富规则 [rootcentos7 ~]# firewall-cmd --remove-rich-rulerule familyipv4 protocol valueicmp drop [rootcentos7 ~]# firewall-cmd --permanent --remove-rich-rulerule familyipv4 protocol valueicmp drop示例 2只允许 10.1.8.10 这台主机 ping 本机其他全部禁止 ping# 全局禁止ping [rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block-inversion # 允许指定源IP的ping请求 [rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept # 完全重载规则 [rootcentos7 ~]# firewall-cmd --complete-reload示例 3只允许 10.1.8.0/24 网段访问 http 服务其他源拒绝访问 80[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.0/24 service namehttp accept十三、direct 直接规则direct 直接规则优先级最高直接使用类似iptables语法用来做补充业务优先使用 firewalld 自身 zone/rich‑rule。# 查看全部direct规则 [rootcentos7 ~]# firewall-cmd --direct --get-all-rules简单示例把 192.168.0.0/24 网段拉黑每分钟限制一次日志输出然后 drop。[rootcentos7 ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist [rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist [rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted [rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP [rootcentos7 ~]# firewall-cmd --reload清理 direct 规则[rootcentos7 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist [rootcentos7 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING [rootcentos7 ~]# firewall-cmd --direct --remove-chain ipv4 raw blacklist [rootcentos7 ~]# firewall-cmd --reload十四、其他实用功能panic 应急模式全部网络丢弃被入侵应急断网# 开启panic所有进出数据包全部丢弃 [rootcentos7 ~]# firewall-cmd --panic-on # 查询panic状态 [rootcentos7 ~]# firewall-cmd --query-panic # 关闭panic恢复网络 [rootcentos7 ~]# firewall-cmd --panic-offruntime 配置写入永久磁盘调试全部使用运行时规则确认没问题一键保存到永久配置不用每条加 --permanent。[rootcentos7 ~]# firewall-cmd --runtime-to-permanent临时生效的超时规则调试用单位秒# http服务放行10秒之后自动失效不需要手动删除 [rootcentos7 ~]# firewall-cmd --add-servicehttp --timeout10
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Codex Desktop 本地化配置全攻略:中文界面与 API 接入实战 2026/9/28 23:29:46

Codex Desktop 本地化配置全攻略:中文界面与 API 接入实战

1. 为什么值得折腾 Codex Desktop 的本地化配置Codex Desktop 是 OpenAI 推出的桌面端编程助手,本质上是一个把大模型能力封装进本地开发环境的客户端。它跟网页版 ChatGPT 最大的区别在于:它能直接读写你本地的项目文件、执行终端命令、跑测试、改代码&…

阅读更多 →
SUMO交通仿真从入门到精通:安装配置全流程实战指南 2026/9/28 23:29:40

SUMO交通仿真从入门到精通:安装配置全流程实战指南

做交通仿真的人,十有八九绕不开SUMO。这套由德国宇航中心(DLR)开源的微观交通仿真工具,从2001年诞生到现在,已经成了学术界和工业界事实上的标准之一。我在这个领域摸爬滚打了几年,从最早的SUMO 0.x版本用到…

阅读更多 →
基于JK触发器的七进制同步加法计数器设计与实现 2026/9/28 23:29:27

基于JK触发器的七进制同步加法计数器设计与实现

做数字电路课程设计,计数器基本是绕不开的一道硬菜。最近我把实验室里一个很经典的题目重新完整走了一遍——基于JK触发器的七进制同步加法计数器,从状态表推导、卡诺图化简,到仿真验证和面包板实物搭建,每一步都理清楚了。这个项…

阅读更多 →
IAR 9.5下JLink驱动替换与调试中断修复实战指南 2026/9/28 23:29:20

IAR 9.5下JLink驱动替换与调试中断修复实战指南

做嵌入式开发的朋友,十有八九都遇到过这种场景:写好的代码在IAR里一按Debug,连日志都没跑出来,调试器就直接断开,或者弹出一串看不懂的报错。尤其是换了新版本IAR 9.5之后,原本工作正常的JLink突然罢工&…

阅读更多 →
WorkBuddy国际版免费接入DeepSeek-V4.1-Flash:配置与实战指南 2026/9/28 23:29:14

WorkBuddy国际版免费接入DeepSeek-V4.1-Flash:配置与实战指南

最近圈子里讨论最多的,应该就是 WorkBuddy 国际版 把 DeepSeek-V4.1-Flash 直接放开免费额度这件事了。我第一时间装了国际版客户端试了一周多,整个过程比我想象的顺利。先说结论:这块免费模型不是拿来当噱头的摆设,日常写代码、改…

阅读更多 →
Pi Agent 从零安装到跑通:CLI、桌面端、源码一条龙实测指南 2026/9/28 23:29:13

Pi Agent 从零安装到跑通:CLI、桌面端、源码一条龙实测指南

上周发完《Pi Agent 从 0 到 1(一)》之后,我后台收到最多的留言不是“原理没看懂”,而是“我到底该怎么装?”说真的,我第一次装 Pi Agent 的时候也没那么顺利,官方文档把安装过程写得特别简略&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉