千家信息网

Centos 7的Firewalld防火墙基础

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、Linux防火墙的基础Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux系统的防火墙体系基于内核共存:firew
千家信息网最后更新 2026年11月01日Centos 7的Firewalld防火墙基础

一、Linux防火墙的基础

Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux系统的防火墙体系基于内核共存:firewalld、iptables、ebtables,默认使用firewalld来管理netfilter子系统。

  • netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"的防火墙功能体系;

  • firewalld:指用来管理Linux防护墙的命令程序,属于"用户态"的防火墙管理体系;

1、firewalld概述

firewalld的作用是为包过滤机制提供匹配规则(或称为策略),通过各种不同的规则,告诉netfilter对来自指定源,前往指定目的或具有某些协议特征的数据包采取何种处理方式。为了更加方便地组织和管理防火墙,firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。支持IPv4、IPv6防火墙设置以及以太网桥,并且拥有两种配置模式:

  • 运行配置

  • 永久配置
    还支持服务或应用程序直接添加防火墙规则接口。

2、firewalld网络区域

firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。

对于进入系统的数据包,首先检查的就是其源地址:

  • 若源地址关联到特定的区域,则执行该区域所制定的规则;
  • 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则;
  • 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则;

默认区域不是单独的区域,而是指向系统上定义的某个其他区域。默认情况下,默认区域是public,但是也可以更改默认区域。以上匹配规则,按照先后顺序,第一个匹配的规则胜出。在每个区域中都可以配置其要打开或者关闭的一系列服务或端口,firewalld的每个预定义的区域都设置了默认打开的服务。

3、firewalld预定义区域说明

  • trusted(信任区域):可接收所有的网络连接;
  • public:(公共区域):除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝流量传入;
  • work(工作区域):除非与传出流量相关,或与ssh、ipp-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于工作区;
  • home(家庭区域):除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于家庭网络;
  • internal(内部区域):除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于内部网络;
  • external(外部区域):除非与传出流量相关,或与ssh预定义服务匹配,否则拒绝流量传入;
  • dmz(隔离区域也称为非军事化区域):除非和传出的流量相关 ,或与ssh预定义服务匹配,否则拒绝流量传入;
  • blocak(限制区域):除非与传出流量相关,否则拒绝所有传入流量;
  • drop(丢弃区域):除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含ICMP的错误响应;

二、firewalld防火墙的配置方法

在Centos 7系统中,可以使用三种方式配置firewalld防火墙:

  • firewalld-config图形化工具;

  • firewalld-cmd命令行工具;

  • /etc/firewalld/中的配置文件;

一般情况下,不建议直接编辑配置文件;

1、firewalld-cmd的基础命令

[root@centos01 ~]# systemctl start firewalld    [root@centos01 ~]# systemctl enable firewalld[root@centos01 ~]# systemctl status firewalld [root@localhost ~]# firewall-cmd --state running[root@centos01 ~]# systemctl stop firewalld[root@centos01 ~]# systemctl disable firewalld[root@centos01 ~]# firewall-cmd --get-zones [root@centos01 ~]# firewall-cmd --get-service [root@centos01 ~]# firewall-cmd --get-default-zone [root@localhost /]# firewall-cmd --reload     [root@centos01 ~]# firewall-cmd --get-active-zones [root@centos01 ~]# firewall-cmd --get-icmptypes address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibitedhost-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisementneighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachableprecedence-cutoff protocol-unreachable redirect required-option-missingrouter-advertisement router-solicitation source-quench source-route-failed time-exceededtimestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option

firewall-cmd --get-icmptypes命令执行结果中部分阻塞类型的含义如下:

  • destination-unreachable:目的地址不可达;
  • echo-reply:应答回应;
  • parameter-problem:参数问题;
  • redirect:重新定向;
  • router-advertisement:路由器通告;
  • router-solicitation:路由器征寻;
  • source-quench:源端抑制;
  • time-exceeded:超时;
  • timestamp-reply:时间戳应答回应;
  • timestamp-request:时间戳请求;

2、firewalld区域管理选项

  • --get-default-zone:显示网络连接或接口的默认区域;
  • --set-default-zone=:设置网络连接或接口的默认区域;
  • --get-active-zones:显示已激活的所有区域;
  • --get-zone-of-interface=:显示指定接口绑定的区域;
  • --zone= --add-interface=:为指定接口绑定的区域;
  • --zone= --change-interface=:为指定的区域更改绑定的网络接口;
  • --zone= --remove-interface=:为指定的区域删除绑定的网络接口;
  • --list-all=zones:显示所有区域及其规则;
  • [--zone=] --list-all:显示所有指定区域的所有规则,省略--zone=时表示仅对默认区域操作;

区域管理示例如下:

[root@centos01 ~]# firewall-cmd --get-default-zone [root@centos01 ~]# firewall-cmd --list-all[root@centos01 ~]# firewall-cmd --get-zone-of-interface=ens32  internal[root@centos01 ~]# firewall-cmd --zone=internal --change-interface=ens32  The interface is under control of NetworkManager, setting zone to 'internal'.success[root@centos01 ~]# firewall-cmd --zone=internal --list-interface  ens32[root@centos01 ~]# firewall-cmd --get-active-zones   internal  interfaces: ens32

3、firewalld服务管理

为了方便管理,firewalld预先定义了很多服务,存放在/usr/lib/firewalld/services/目录中,服务通过单个的XML配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如ssh服务等。我们需要将service配置文件放置在/etc/firewalld/services/目录中。service配置具有以下优点:

  • 通过服务名字来管理规则更加人性化;
    通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式;

1)firewalld-cmd命令区域中服务管理的常用选项说明:

  • [--zone=] --list-services:显示指定区域内允许访问的所有服务;

  • [--zone=] --add-service=:为指定区域设置允许访问的某项服务;

  • [--zone=] --remove-service=:删除指定区域已设置的允许访问的某项服务;

  • [--zone=] --list-ports:显示指定区域内允许访问的所有端口号;

  • [--zone=] --add-port=[-]/:为指定区域设置允许访问的某个/某段端口号(包括协议号);

  • [--zone=] --remove-port=[-]/:删除指定区域已设置的允许访问的端口号(包括协议名);

  • [--zone=] --list-icmp-blocaks:显示指定区域内拒绝访问的所有ICMP类型;

  • [--zone=] --add-icmp-block=:为指定区域设置拒绝访问的某项ICMP类型;

  • [--zone=] --remove-icmp-block=:删除指定区域已设置的拒绝访问的某项ICMP类型,省略--zone=时表示对默认区域操作;

2)firewalld服务管理示例如下(为默认区域设置允许访问的服务):

 [root@centos01 ~]# firewall-cmd --list-services dhcpv6-client ssh [root@centos01 ~]# firewall-cmd --add-service=http success[root@centos01 ~]# firewall-cmd --add-service=https success[root@centos01 ~]# firewall-cmd --list-services dhcpv6-client ssh https http

3)firewalld服务管理示例如下(为internal区域设置允许访问的服务):

[root@centos01 ~]# firewall-cmd --zone=internal --add-service=mysql              success[root@centos01 ~]# firewall-cmd --zone=internal --remove-service=samba-client          success[root@centos01 ~]# firewall-cmd --zone=internal --list-services               ssh mdns dhcpv6-client mysql

4、端口管理

在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作即可实现在internal区域打开443/TCP端口。示例如下:

 [root@centos01 ~]# firewall-cmd --zone=internal --add-port=443/tcp                  success

若想实现在internal区域禁止443/TCP端口访问,可执行以下命令:

 [root@centos01 ~]# firewall-cmd --zone=internal --remove-port=443/tcp                success

以上配置都为临时配置,若想将当前配置保存为永久配置,可以使用下面命令:

 [root@centos01 ~]# firewall-cmd --runtime-to-permanentsuccess

直接配置为永久性规则,须带--permanent选项,如下:

[root@centos01 ~]# firewall-cmd --add-icmp-block=echo-request --permanent   success[root@centos01 ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent                      success

三、firewalld两种配置模式

前面提到firewall-cmd命令工具有两种配置模式:运行时模式(Runtime mode)表示当前内存中运行的防火墙配置,在系统或firewalld服务重启、停止时配置将失效;永久模式(Permanent mode)表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。

firewall-cmd命令工具与配置模式相关的选项有三个:

  • --reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置;

  • --permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动或重新加载防火墙规则时才会生效;若不带此项,表示用于设置运行时规则;

  • --runtime-to-permanent:将当前运行时的配置写入规则配置文件中,使当前内存中的规则称为永久性配置;

------ 本文至此结束,感谢阅读 ------

区域 服务 配置 规则 防火墙 防火 网络 流量 管理 接口 命令 文件 端口 永久 模式 数据 运行 地址 系统 体系 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 互联网公司 科技公司 互联网金融 金融科技 互联网 卓越科技 新浪科技互联网 长亮科技互联网金融 富国互联网科技创新基金 现代科技和互联网有关系吗 阿里互联网科技公司 厦门比较好的科技互联网公司 互联网5g黑科技有哪些 互联网公司黑科技创始人 特约风豹互联网科技为什么扣费 中科明德北京互联网科技 黑云互联网科技有限公司 互联网科技数字货币 上海乐五互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 互联网科技大会大佬 如何强化互联网金融科技 百单网互联网科技有限公司 湖北九亚互联网络科技有限公司 宜安科技 互联网金融 互联网和黑科技的看法 想开互联网科技公司怎么样 互联网科技的全部知识 互联网科技圈年度人物 互联网方面的科技前沿 银川新华互联网科技学校是国营吗 杭州融税互联网科技有限公司
0