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

【Firewalld】Linux中firewall-cmd的基本使用

平时学习Linux的时候默认都是将firewalld服务关掉,其实firewalld功能非常强大,可以而且配置起来比iptables简单,但是由于我学习iptables更加久,而且够用,就没有深入研究firewall,其实firewall-cmd底层也是调用iptables的操作

Firewalld 基础命令

1. 查看所有 Zone(区域)

[root@nat-router ~]# firewall-cmd --get-zones

输出示例:

block dmz drop external home internal public trusted work

2. 查看默认的 Zone

[root@nat-router ~]# firewall-cmd --get-default-zone

输出示例:

public

3. 查看当前默认 Zone 的所有规则

[root@nat-router ~]# firewall-cmd --list-all

此命令显示当前 Zone 的详细配置,包括服务、端口、富规则等。

4. 查看指定 Zone 中的服务列表

[root@nat-router ~]# firewall-cmd --zone=public --list-services

临时规则配置(重载即失效)

添加临时服务规则

例如:添加 HTTP 服务规则:

[root@nat-client ~]# firewall-cmd --add-service=http

输出应显示 success

添加临时端口规则

例如:添加 443 端口(TCP)的规则:

[root@nat-client ~]# firewall-cmd --add-port=443/tcp

输出同样显示 success

查看临时生效的规则

[root@nat-client ~]# firewall-cmd --list-all

输出示例:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client http ssh
  ports: 443/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

重新加载规则

使当前配置重新加载:

[root@nat-client ~]# firewall-cmd --reload

输出 success 表示重载成功。


永久规则配置(重启后依然有效)

添加永久规则

例如:同时添加 HTTP 和 HTTPS 服务为永久规则:

[root@nat-client ~]# firewall-cmd --add-service={http,https} --permanent

输出 success

重新加载规则使永久规则生效

[root@nat-client ~]# firewall-cmd --reload

输出 success


删除规则

删除临时规则

例如:删除一个临时添加的服务规则:

[root@nat-client ~]# firewall-cmd --remove-service=http

同样删除端口规则:

[root@nat-client ~]# firewall-cmd --remove-port=443/tcp

删除永久规则

例如:删除永久配置的 HTTPS 服务规则:

[root@nat-client ~]# firewall-cmd --remove-service=https --permanent

删除后记得重载配置:

[root@nat-client ~]# firewall-cmd --reload

动态与永久配置

  • 临时规则:不带 --permanent 参数,重启或重新加载后失效,适用于测试场景。
  • 永久规则:加上 --permanent 参数,修改会保存到配置文件中,重启后依然生效,需要执行 firewall-cmd --reload 使其立即生效。

firewalld zone(区域)

firewalld 默认提供了以下常用区域,每个区域的安全策略从最严格到最宽松大致如下:

区域名称默认规则及应用场景
drop丢弃所有传入数据包(不发送任何回复),仅允许发起的连接。适用于极高安全要求的环境。
block拒绝所有传入连接,并通过 ICMP 消息告知对方拒绝。
public用于公共网络(如咖啡厅、机场 Wi-Fi),只允许少量必要服务(例如 SSH、DHCP)通过,默认较严格。
external适用于外部网络接口,常用于路由器或网关,同时支持 IP 伪装(masquerade)。
dmz用于隔离区(DMZ),通常放置对外公开但需要与内部网络隔离的服务器。
work工作环境,信任程度适中,允许常用业务服务。
home家庭网络,信任程度较高,允许更多常用服务。
internal内部网络,通常应用于企业局域网,允许大部分内部流量。
trusted完全信任的区域,允许所有数据包进出。通常只在安全、受控的网络环境中使用。

区域的管理与应用

  • 查看所有区域

    firewall-cmd --get-zones
    

    该命令列出所有 firewalld 提供的区域。

  • 查看默认区域

    firewall-cmd --get-default-zone
    

    显示当前系统默认的区域,通常是 public。

  • 查看某个区域的所有规则
    例如,查看 public 区域配置:

    firewall-cmd --zone=public --list-all
    

    输出包括允许的服务、开放的端口、接口绑定情况等信息。

  • 将网络接口分配到某个区域
    如将接口 eth0 绑定到 internal 区域:

    firewall-cmd --zone=internal --change-interface=eth0
    

    此操作将使 eth0 上的流量按照 internal 区域的规则进行过滤。

  • 设置默认区域
    修改默认区域为 home:

    firewall-cmd --set-default-zone=home
    

    注意,此命令同时可加上 --permanent 参数实现永久生效。


相关文章:

  • Runnable组件容灾回退机制 with_fallback 深度解析降低程序错误率
  • 单链表的实现 | 附学生信息管理系统的实现
  • 3D打印技术助力高精密零件制造与维修工具革新
  • C# Winform 入门(13)之通过WebServer查询天气预报
  • 网络钓鱼攻击的威胁和执法部门的作用(第一部分)
  • 架构师面试(二十六):系统拆分
  • 【Csharp】获取实时的鼠标光标位置,测试用——做窗口软件绘图需要确定光标位置
  • GenerationMixin概述
  • Python Cookbook-5.5 根据内嵌的数字将字符串排序
  • 清明假期间
  • 数据分析-Excel-学习笔记
  • AI大模型:(二)2.1 从零训练自己的大模型概述
  • 【LeetCode 热题100】55:跳跃游戏(详细解析)(Go语言版)
  • 用python来操作mysql(复习一,主要是mysql连接和授权)
  • 【清明折柳】写在扬马三周目后
  • 【NLP 54、大模型训练相关知识】
  • Sentinel核心源码分析(上)
  • InfoSec Prep: OSCP靶场渗透
  • 定义和初始化 vector 对象(三十八)
  • TypeScript学习第十六篇 - interface和type的区别?
  • 视频制作素材/杭州seo外包服务
  • 网站空间租/网站里的友情链接
  • 汇鑫网站建设便捷/下拉关键词排名
  • 沛县微网站开发/seo网站培训优化怎么做
  • 做qq图片的网站吗/搜狗推广登录平台官网
  • 设计网站怎样做色卡/外贸网站大全