文章目录
- 一、防火墙以及Linux防火墙服务介绍
- 什么是防火墙,有什么用
- 防火墙的结构
- 防火墙的作用
- 为什么需要防火墙
- 防火墙何时需要开启
- 防火墙何时可以关闭
- 名词
- 什么是入站?出站
- Linux防火墙发展历程
- 1. 初期阶段
- 2. iptables的出现
- 3. 发展与扩展
- 4. nftables的引入
- 5. 当前状况
- 6. 其他相关工具
- firewalld与nftables、iptables的区别
- 主要区别:
- 使用场景:
- 二、CentOS7的firewalld使用
- 系统firewalld服务启停、状态查看
- firewalld区域管理概念
- 什么意思,为什么使用区域?
- 为什么使用区域
- firewall-cmd命令
- 一些选项解释
- LOCATION ????????????
- 重载防火墙——`firewalld-cmd --reload`
- 区域设置相关命令
- 获取防火墙的默认区域内容——`firewall-cmd --get-default-zone`
- 切换默认区域——`firewall-cmd --set-default-zone=区域名`
- 获取防火墙定义的所有区域——`firewall-cmd --get-zones`
- 新增防火墙的区域——`firewall-cmd --new-zone=新增的区域名 --permanent`+`firewall-cmd --reload`
- `--permanent`的作用?
- 服务入站出站相关命令
- 什么是防火墙的服务入站出站?
- 查看防火墙支持的服务——`firewall-cmd --get-services`
- `firewall-cmd --add-service=服务名 --permanent`+`firewall-cmd --reload`
- `firewall-cmd --remove-service=服务名
- 端口入站出站相关命令
- 什么是防火墙的端口的入站出站?
- 添加新端口——`firewall-cmd --add-port=端口号/协议名 --permanent`
- 删除端口——`firewall-cmd --remove-port=端口号/协议名 --permanent`
- 网卡入站出站相关命令
- 什么是防火墙的网卡的入站出站?
- 添加网卡到指定区域——`firewall-cmd --add-interface=网卡名 --zone=区域名`
- 删除网卡从指定区域(如果事先已在那个区域的话)——`firewall-cmd --remove-interface=网卡名 --zone=区域名`
- 测试例子:
- 自定义配置防火墙支持服务内容
- 配置端口转发策略
- 配置富规则
- 什么是防火墙富规则?
- 如何配置
- 配置内部上网
一、防火墙以及Linux防火墙服务介绍
什么是防火墙,有什么用
防火墙是一种网络安全设备或软件,旨在监控和控制进出网络的流量,以保护内部网络免受外部攻击和不必要的访问。
防火墙的结构
- 策略规则:定义哪些流量被允许或阻止。
- 过滤引擎:分析流量并根据规则进行处理。
- 日志记录系统:记录流量和事件以供审计和分析。
- 用户接口:用于配置和管理防火墙的界面。
-
硬件组件:
- 网络接口卡、处理器、内存和存储设备。
-
软件组件:
- 操作系统、防火墙引擎、管理界面和日志处理程序。
-
规则集:
- 定义允许和阻止的流量类型的具体规则。
-
管理界面:
- 提供图形用户界面(GUI)或命令行界面(CLI),用于配置和管理防火墙设置。
-
监控工具:
- 用于实时监控流量和生成报告的附加工具。
防火墙的作用
- 流量控制:管理进出网络的数据包。
- 安全保护:防止未授权访问和恶意攻击。
- 隐私保护:隐藏内部网络结构和信息。
- 监控和报告:提供网络活动的可见性,便于问题排查和合规审计。
-
流量过滤:
- 允许或拒绝特定类型的数据包。
- 基于源和目的IP地址、端口号和协议进行过滤。
-
状态监控:
- 跟踪每个连接的状态,确保只有有效的连接能够通过。
-
日志记录和监控:
- 记录所有进入和出去的数据包,便于日后的审计和分析。
- 实时监控网络活动,及时发现异常行为。
-
访问控制:
- 定义用户或设备的访问权限,限制不必要的访问。
-
内容过滤:
- 根据内容类型(如URL、文件类型)阻止某些内容的传输。
-
带宽管理:
- 限制特定应用或用户的带宽使用,优化网络资源分配。
-
VPN支持:
- 提供安全的远程访问,通过加密保护数据传输。
-
攻击防护:
- 识别和阻止常见的攻击方式,如DDoS攻击、网络扫描等。
-
策略管理:
- 允许管理员根据需要配置和调整防火墙策略。
为什么需要防火墙
- 防护机制:抵御网络攻击、病毒和恶意软件。
- 数据保护:确保敏感信息不被泄露。
- 合规要求:满足行业标准和法律法规的安全要求。
防火墙何时需要开启
- 常规使用:在任何时候都应保持开启状态,以保护网络安全。
- 远程访问时:确保外部连接时仍然受到保护。
防火墙何时可以关闭
- 维护和配置:在进行维护或更新时,可能需要临时关闭,但应尽快重新开启。
- 特定测试:在进行特定网络测试时,需注意风险并在测试后及时开启。
总的来说,防火墙是保障网络安全的重要工具,应根据具体需求合理配置和管理。
防火墙的相关名词、功能和组成部分如下:
名词
- 网络防火墙:用于保护计算机网络的设备,监控和控制进出网络流量。
- 包过滤:根据预定规则检查数据包,并决定是否允许其通过。
- 状态检测:跟踪已建立连接的状态,允许合法流量并阻止非法流量。
- 代理防火墙:通过代理服务器处理流量,隐藏内部网络结构。
- 入侵检测系统(IDS):监控网络活动,识别潜在的安全威胁。
- 入侵防御系统(IPS):在识别威胁后主动阻止或修复攻击。
- 虚拟专用网络(VPN):通过加密通道安全地连接远程用户与内部网络。
- 应用层防火墙:在应用层检查流量,提供更细粒度的安全控制。
什么是入站?出站
在防火墙中,“入站”和“出站”是用来描述网络流量方向的两个基本概念。它们在配置防火墙规则时至关重要,下面是详细说明:
1. 入站流量(Inbound Traffic)
定义:入站流量指的是从外部网络(例如互联网)进入内部网络或计算机的所有数据包。
特点:
- 来源:入站流量的源地址通常是外部IP地址。
- 目的:目的地是防火墙内部的特定设备或服务(如服务器、工作站等)。
管理:- 规则设置:防火墙会根据设定的规则决定是否允许这些入站数据包通过。例如,可以允许某个端口的HTTP流量(如80端口),而阻止其他所有入站流量。
- 安全性:常见的入站流量控制措施包括:
- 限制特定IP的访问权限。
- 过滤特定协议(如只允许TCP或UDP)。
- 配置入侵检测和防御系统来监测异常活动。
2. 出站流量(Outbound Traffic)
定义:出站流量是指从内部网络或计算机发往外部网络的所有数据包。
特点:
- 来源:出站流量的源地址是内部设备的IP地址。
- 目的:目的地是外部IP地址(如访问互联网服务)。
管理:
规则设置:防火墙会根据设定的规则决定是否允许这些出站数据包通过。例如,可以允许所有出站HTTP流量,但禁止出站FTP流量。
安全性:常见的出站流量控制措施包括:
- 限制内网设备访问特定外部网站或服务。
- 监控和记录出站流量,以防止数据泄露或恶意软件通信。
- 通过代理服务器或VPN保护用户的隐私。
入站流量主要关注从外部进入内部网络的数据包,确保只有合法和安全的请求被允许。
出站流量则关注内部网络向外发送的数据,确保不发起不安全或未授权的连接。
设置合理的入站和出站规则是防火墙策略的重要组成部分,有助于增强网络的安全性和可靠性。
Linux防火墙发展历程
Linux的防火墙主要是通过iptables、nftables等工具来实现的,用以控制网络流量,保护系统免受不必要的访问和攻击。以下是Linux防火墙的发展历程及其基本概念。
1. 初期阶段
- IPChains:在Linux 2.2内核中引入,取代了早期的ipfw。IPChains使用链表结构(链)来管理网络流量,允许用户基于来源和目的IP地址、端口号等信息设置规则。
2. iptables的出现
- Iptables:在Linux 2.4内核中引入,成为了Linux防火墙的标准工具。iptables提供了更灵活和强大的功能,支持状态检测(stateful inspection),可以根据连接状态(如NEW, ESTABLISHED等)来匹配数据包。iptables采用表和链的结构,允许用户定义复杂的规则集。
3. 发展与扩展
- Netfilter:与iptables紧密集成,成为底层框架,负责处理网络包的过滤、修改和转发。Netfilter为iptables提供了一个强大的基础,使得开发者能够创建自定义的网络防火墙解决方案。
4. nftables的引入
- Nftables:在Linux 3.13内核中引入,旨在替代iptables。nftables简化了防火墙规则的管理,合并了iptables的多个模块,并且提供了更高效的性能和更现代的API。它使用一个单一的命令行工具
nft
来代替iptables、ip6tables等多个工具。
5. 当前状况
- 现代防火墙配置:目前,nftables已成为推荐的工具,许多新的Linux发行版默认支持它。同时,iptables依然被广泛使用,特别是在一些旧的系统中。两者都能提供强大的网络流量过滤能力。
6. 其他相关工具
- Firewalld:一个动态管理防火墙的工具,基于iptables或nftables,允许用户通过区域和服务来简化规则管理。
- Fail2ban:可以监控日志文件,自动添加iptables规则以阻止恶意IP地址,增强系统安全性。
Linux防火墙经历了从ipchains到iptables,再到nftables的演变过程,逐步提高了网络流量管理的灵活性和安全性。随着云计算和容器技术的发展,Linux防火墙也在不断适应新的网络环境,增强网络安全策略。
firewalld与nftables、iptables的区别
Firewalld、nftables 和 iptables 都是 Linux 系统中用于管理网络防火墙的工具,但它们在设计、功能和使用方式上有所不同:
-
iptables:
- 历史:iptables 是 Linux 系统中最早使用的防火墙工具之一,从 Linux 2.4 内核开始集成。
- 功能:它提供了一套复杂的规则集,用于控制进出网络接口的数据包。
- 复杂性:iptables 的规则是基于链的,规则的配置相对复杂,需要对网络协议有较深的理解。
- 性能:在处理大量并发连接时,性能可能不如 nftables。
-
nftables:
- 历史:nftables 是 iptables 的后继者,从 Linux 3.13 内核开始引入。
- 功能:它提供了更现代的框架,支持更复杂的规则表达和更高效的数据包处理。
- 表达性:nftables 使用表达式来定义规则,这使得规则更加灵活和强大。
- 性能:nftables 在处理大量并发连接时通常比 iptables 更高效。
- 兼容性:nftables 旨在与 iptables 兼容,因此许多 iptables 规则可以转换为 nftables 规则。
-
Firewalld:
- 历史:Firewalld 是一个较新的动态防火墙管理工具,它不直接处理数据包,而是管理 iptables 或 nftables 的规则。
- 功能:它提供了一个高级的配置界面,允许用户通过服务和区域的概念来管理防火墙规则。
- 易用性:Firewalld 使得防火墙规则的管理更加简单和直观,适合非专业用户。
- 动态性:Firewalld 可以动态地重新加载规则,而不需要重启服务。
- 服务和区域:Firewalld 允许定义服务(如 HTTP、SSH)和区域(如公共、工作、家庭),并为这些服务和区域配置规则。
主要区别:
- iptables 是一个低级别的工具,提供了直接控制数据包处理的能力,但配置相对复杂。
- nftables 是 iptables 的现代替代品,提供了更高效的性能和更灵活的规则表达方式。
- Firewalld 是一个高级管理工具,它抽象了 iptables 或 nftables 的复杂性,提供了更易于管理的界面。
使用场景:
- iptables 适合需要精细控制和优化性能的场景。
- nftables 适合需要高性能和复杂规则的场景。
- Firewalld 适合需要易于管理和动态配置的场景。
在选择使用哪个工具时,需要根据具体的网络需求、系统环境和用户的技术背景来决定。
二、CentOS7的firewalld使用
在CentOS7中,
firewalld
是一个动态管理防火墙的服务,提供了更简单、灵活的方式来配置和管理防火墙规则。以下是关于firewalld
的详细说明,包括其基本概念、使用方法以及常见命令。一. 基本概念
- 区域(Zones):
firewalld
使用区域来定义不同网络连接的信任级别。每个区域都有一组规则,可以根据连接的来源IP或网络接口来应用。- 服务(Services):预定义的服务(如HTTP、SSH等)可以方便地添加到区域中。每个服务对应一组端口和协议。
- 规则(Rules):可以手动创建自定义规则,指定允许或拒绝的流量。
二、 2. 安装和启动
默认情况下,
firewalld
在CentOS 7中是预安装的。可以通过以下命令检查其状态并启动:
# 检查firewalld状态
sudo systemctl status firewalld
# 启动firewalld
sudo systemctl start firewalld
# 设置开机自启
sudo systemctl enable firewalld
三. 常见命令
查看当前状态和区域
# 查看firewalld状态
sudo firewall-cmd --state
查看可用区域和服务
# 查看所有可用区域
sudo firewall-cmd --get-zones
# 查看某个区域支持的服务
sudo firewall-cmd --zone=public --list-services
添加和移除服务
# 将服务添加到公共区域
sudo firewall-cmd --zone=public --add-service=http --permanent
# 移除服务
sudo firewall-cmd --zone=public --remove-service=http --permanent
# 重新加载配置以应用更改
sudo firewall-cmd --reload
添加和移除端口
# 开放特定端口(例如TCP 8080)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 移除特定端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 重新加载配置
sudo firewall-cmd --reload
临时规则
如果不想在防火墙重启(使用
firewall-cmd --reload
重载)后保留规则,可以省略--permanent
选项:
# 添加临时规则
sudo firewall-cmd --zone=public --add-service=ftp
# 移除临时规则
sudo firewall-cmd --zone=public --remove-service=ftp
查看规则
# 查看当前区域的配置 sudo firewall-cmd --zone=public --list-all
四. 配置文件
firewalld
的配置文件位于/etc/firewalld/
目录下,主要有:
firewalld.conf
:主配置文件,设置全局参数。zones/
:存储每个区域的配置文件。services/
:存储服务定义的 XML 文件。
五. 重要注意事项
- 在添加新的防火墙规则时,要确保不会阻止SSH连接(如果远程管理)。
firewalld
的规则在重启后会保持,常规更改需使用--permanent
选项。
firewalld
为CentOS7提供了一个灵活易用的防火墙管理工具,通过区域和服务的概念,使得管理网络安全变得更加直观和高效。利用其动态特性,可以实时调整规则,而无需重启服务或系统。
系统firewalld服务启停、状态查看
# 状态查看
systemctl status firewalld
# 启停
systemctl start firewalld
systemctl stop firewalld
firewalld区域管理概念
预定义的一些区域:
什么意思,为什么使用区域?
firewalld使用区域来定义不同网络连接的信任级别。每个区域都有一组规则,可以根据连接的来源IP或网络接口来应用。
Firewalld 是一个动态管理防火墙的工具,允许用户通过区域(zones)来组织和管理不同的网络连接。以下是关于 Firewalld 区域管理的详细说明以及使用区域的原因。
1. 区域的定义
- 每个区域代表了一组规则,这些规则定义了允许和拒绝的流量。
- Firewalld 默认提供多个预定义区域,如
public
、internal
、trusted
等。
2. 区域的功能
- 流量控制:每个区域可以设置不同的入站和出站规则,允许或拒绝特定的服务和端口。
- 动态变化:区域可以根据网络环境的变化动态调整,而不需要重新加载防火墙。
3. 常见区域
- trusted:信任所有流量,通常用于内部网络。
- home:适合家庭网络,允许常见的家庭服务。
- work:适合工作网络,限制不必要的外部访问。
- public:默认区域,通常用于公共网络,限制大部分流量。
- dmz:用于隔离特定服务(如Web服务器)以保护内网。
这段内容描述的是网络安全中不同网络区域的配置和用途:
trusted:这个区域配置信任所有流量。这意味着在该区域内的设备可以自由地发送和接收数据,没有限制。这种设置通常用于内部网络,比如公司内部的局域网,因为内部网络中的设备被认为是可信的。
home:这个区域配置适合家庭网络使用。它允许常见的家庭服务,如在线游戏、流媒体服务等。家庭网络通常需要访问这些服务,因此配置较为宽松。
work:这个区域配置适合工作网络。它限制了不必要的外部访问,以保护网络内的资源不被外部未经授权的访问。这种设置适用于办公环境,确保只有必要的服务可以被外部访问。
public:这是默认的网络区域,通常用于公共网络。它限制了大部分流量,只允许最基本的网络服务,如网页浏览和电子邮件。这种设置用于公共场合,如图书馆、咖啡厅等,以保护用户的安全和隐私。
这些设置有助于根据不同的使用场景和安全需求来调整网络的访问控制。
为什么使用区域
1. 简化管理
- 区域提供了一种简洁的方法来管理和组织不同网络接口的访问策略。通过将相似的规则归类到同一区域,管理变得更直观。
2. 灵活性
- Firewalld 允许根据网络环境动态切换区域,用户可以在不同的网络连接间快速切换,从而适应不同的安全需求。
3. 安全性
- 使用不同的区域可以确保更高的安全性。例如,可以将公共Wi-Fi连接设置为
public
区域,仅允许最基本的流量,而将内部网络设置为trusted
区域,允许更多的流量。
4. 细粒度控制
- 可以对每个区域定义不同的服务、端口和协议,从而实现精细的流量控制。这种分层管理能够更有效地减少潜在的攻击面。
5. 适应多样化环境
- 在具有多个网络接口或多种网络环境的设备上(如路由器、网关),区域管理使得配置更容易并且可维护。
Firewalld 的区域管理提供了一种灵活且高效的方式来控制网络流量,通过将不同的网络连接与相应的安全策略关联,可以显著提升系统的安全性和管理的便利性。这种分区方法使得用户能够根据实际需求对防火墙进行优化配置。
firewall-cmd命令
一些选项解释
状态选项:
1、firewall-cmd --state
检查firewalld守护进程是否处于活动状态(即正在运行)。如果活动,则返回退出代码0;如果在启动时发生故障,则返回RUNNING BUT FAILED;否则返回NOT RUNNING。请参阅“退出代码”部分。这也会将状态打印到标准输出(STDOUT)。
2、firewall-cmd --reload
重新加载防火墙规则并保留状态信息。当前的永久配置将成为新的运行时配置,即所有仅在运行时进行的更改在重新加载时会丢失,如果它们没有同时在永久配置中。
注意:通过直接接口应用的运行时更改不受影响,因此在完全重启firewalld守护进程之前,它们将保持不变。
3、--complete-reload
完全重新加载防火墙,包括netfilter内核模块。这很可能会终止活动连接,因为状态信息会丢失。这个选项应该只在防火墙出现严重问题时使用。例如,如果存在状态信息问题,导致无法用正确的防火墙规则建立连接。
注意:通过直接接口应用的运行时更改不受影响,因此在完全重启firewalld守护进程之前,它们将保持不变。
4、 --runtime-to-permanent
保存活动运行时配置,并用它覆盖永久配置。这种方式的工作原理是,在配置firewalld时,你只进行运行时更改,一旦你对配置感到满意,并且测试了它按照你想要的方式工作,就将配置保存到磁盘。
注:
在使用 Firewalld 时,--permanent
和--runtime-to-permanent
的作用是将规则保存为永久配置,但这两者的行为和后续步骤的影响如下:1. 使用
--permanent
- 当你使用
--permanent
添加或修改规则时,这些更改会被保存,但不会立即应用到当前运行的防火墙配置中。- 不写
--reload
:这些更改不会生效,直到你执行--reload
。此时,之前添加的规则会在下次防火墙重启时生效。2. 使用
--runtime-to-permanent
- 这个选项用于将当前的临时规则保存为永久规则。
- 不写
--reload
:同样,这些更改会被保存,但不会立即应用到当前的防火墙配置中,直到你再次执行--reload
。影响
- 不写
--reload
的结果:
- 新增的永久规则不会立刻生效,你需要手动执行
--reload
才能使它们生效。- 如果你只希望临时测试某些规则,而不想立即影响现有配置,那么可以选择不执行
--reload
。为了使
--permanent
或--runtime-to-permanent
添加的更改立即生效,最好执行
--reload
。如果不执行,新增的规则将在下次重启 Firewalld 时生效,但在此之前不会对当前的连接或流量产生影响。
永久选项
--permanent
–permanent选项可用于永久设置选项。这些更改不会立即生效,只有在服务重启/重新加载或系统重启后才会生效。如果没有–permanent选项,更改将只作为运行时配置的一部分。
如果你想在运行时和永久配置中进行更改,请使用相同的调用,同时使用和不使用–permanent选项。
区域选项
--get-default-zone
打印连接和接口的默认区域。
--set-default-zone=zone名
更改连接或选定的默认区域的区域。设置默认区域。
这是一个运行时和永久性的更改。
会立即生效,无需再写--permanent
--get-active-zones
打印当前激活的区域以及与之绑定的接口。激活的区域是那些绑定到接口或源的区域。输出格式为:
区域1 接口:接口1 接口2…
源:源1
区域2 接口:接口1…
源:源2…
如果没有接口或源绑定到区域,则相应的行将被省略。
firewall-cmd --list-all
查看当前默认区域的所有规则
内容:
LOCATION ????????????
- icmp-block-inversion——icmp块是否开启?
- ?——当前区域监听的网卡
- ?——来源的IP/网段?
- ?——允许访问的服务
- ?——允许访问的端口
- ?——允许访问的协议
- ?——IP是否伪装?(内网网卡伪装外网网卡上网)
- 实现内网主机间共享上网
- 增强网络的安全性
- 支持网络地址转换??????
- ?——端口映射?
- ?——来源端口?
- ?——icmp块?
- ?——富规则?
重载防火墙——firewalld-cmd --reload
与systemctl restart firewalld
或systemctl reload firewalld
的区别????
为什么不能用systemctl xxxx
???
前者是在防火墙服务运行的时候重载,而后者需要将整个防火墙服务关闭,再打开,这是非常危险的!!!!
区域设置相关命令
默认使用public中内容
获取防火墙的默认区域内容——firewall-cmd --get-default-zone
切换默认区域——firewall-cmd --set-default-zone=区域名
获取防火墙定义的所有区域——firewall-cmd --get-zones
新增防火墙的区域——firewall-cmd --new-zone=新增的区域名 --permanent
+firewall-cmd --reload
必须要运行时重载(热重载),才能生效
--permanent
的作用?
如果不想在防火墙重启(使用firewall-cmd --reload
重载)后保留规则,可以省略--permanent
选项,如果使用了--permanent
需要结合firewall-cmd --reload
而不是systemctl restart firewalld
吗??
服务入站出站相关命令
什么是防火墙的服务入站出站?
查看防火墙支持的服务——firewall-cmd --get-services
“支持的“什么意思?????
firewall-cmd --add-service=服务名 --permanent
+firewall-cmd --reload
`firewall-cmd --remove-service=服务名
端口入站出站相关命令
什么是防火墙的端口的入站出站?
添加新端口——firewall-cmd --add-port=端口号/协议名 --permanent
删除端口——firewall-cmd --remove-port=端口号/协议名 --permanent
网卡入站出站相关命令
什么是防火墙的网卡的入站出站?
添加网卡到指定区域——firewall-cmd --add-interface=网卡名 --zone=区域名
删除网卡从指定区域(如果事先已在那个区域的话)——firewall-cmd --remove-interface=网卡名 --zone=区域名
测试例子:
1、使用firewalld各个区域规则结合配置,调整默认public区域拒绝所有流量,但如果来源IP时10.0.0.0/24网段则允许
# 切换到public区域
firewall-cmd --zone=pulic
# 拒绝所有流量
删除所有服务和端口
--remove-service=xxx1 --remove-service=xxx2
--remove-port=xxx xxx
# 仅允许10.0.0.0/24网段来源
--add-source=10.0.0.0/24
2、查询public区域是否允许请求SSH的流量
firewall-cmd --zone=public --query-service=ssh
自定义配置防火墙支持服务内容
编写自定义服务xxx.xml,添加xxxx.xml到**/usr/lib/firewalld/services**目录中
如:添加sersync服务:
?????
配置端口转发策略
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
# 开启IP伪装
firewall-cmd --add-masquerade
配置富规则
什么是防火墙富规则?
??????????????????
如何配置
# 配置允许10.0.0.0/24主机访问HTTP服务
firewall-cmd --add-rich-rule='rule family="ipv4" source address=10.0.0.0/24 service name="http" accept'
# 配置允许172.16.1.0/24主机访问22端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address=????????????????????'