CentOS7 Firewalld笔记
文章目录
初识firewalld
Firewalld是一种防火墙管理解决方案,充当Linux内核提供的iptables包过滤系统的前端。centos7版本对防火墙进行加强,不再使用原来的iptables命令进行管理,启用firewalld管理防火墙规则。
- firewalld管理防火墙规则的模式(动态)的好处: iptables每一个更改都需要先清除所有旧有的规则,然后重新加载所有的规则;而firewalld任何规则的变更都不需要对整个防火墙规则重新加载,只需要将变更部分保存并更新到运行中的iptables即可。
- firewalld默认出口是全放开的。
- firewall daemon无法解析由iptables(针对IP层)和ebtables(针对数据链路层)命令行工具添加的防火墙规则。
- firewalld有命令行和图形界面配置工具,它仅仅是替代了iptables service部分,其底层还是使用iptables作为防火墙规则管理入口。
- firewalld和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter。
安装
CentOS7默认已自带,如需要自行安装,可直接用yum安装。
yum -y install firewalld
yum -y install firewall-config #图形界面使用
注意: firewalld跟iptables不能同时使用,所以在使用firewalld之前首先需要将iptables停用。
相关文件
- firewalld配置文件**
/etc/firewalld/
**-
/etc/firewalld/firewalld.conf
主配置文件,只有五个配置项- DefaultZone:默认使用的zone;
- MinimalMark:使用标记mark的数量限制;
- CleanuupOnExit:退出后是否清除防火墙规则;
- Lockdown:是否限制别的程序通过D-BUS接口直接操作firewalld;
- IPv6_rpfilter:判断所接受到的包是否是伪造的
-
/etc/firewalld/zones
: 保存zone配置文件,可在文件中直接改动,改完后需要进行重启服务。 -
/etc/firewalld/services
: 保存service配置文件,默认为空。 -
/etc/firewalld/icmptypes
: 保存和icmp类型相关的配置文件,默认为空。
-
- 模板配置文件在
/usr/lib/firewalld/service/和/usr/lib/firewalld/zones/
,注意这只是模块,与更改后的配置不一定相同。 - firewall-config是图形化工具
- firewall-cmd是命令行工具
基础概念
zone的概念
zone区域: 区域基本上是一组规则,规定应允许哪些流量,具体取决于您在计算机所连接的网络中的信任级别。为网络接口分配一个区域,以指示防火墙应允许的行为。在某一个Zone里,具体定义了service、prots、protocols、masquerading、port/packet forwarding、icmp filters和rich rules等细节。
简单来说,Zone是防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。这对于可能经常在网络之间移动的计算机(如笔记本电脑),这种灵活性提供了一种根据您的环境更改规则的好方法,例如在公共WiFi网络上运行时,您可能有严格的规则禁止大多数流量,而连接到家庭网络时允许更宽松的限制。对于服务器,这些区域不是那么重要,因为网络环境很少发生变化。
默认有9个Zone包括,其中默认的Zone是public:
-
drop(丢弃):最低级别的信任。删除所有传入连接而不进行回复,只能进行传出连接。
-
block(限制):与上面类似,但不是简单地删除连接,而是使用icmp-host-prohibited或icmp6-adm-prohibited消息拒绝传入的请求。
-
public(公共):代表公共的,不受信任的网络。您不信任其他计算机,但可能会根据具体情况允许选定的传入连接。
-
external(外部):如果您使用防火墙作为网关,则为外部网络。它配置为NAT伪装,以便您的内部网络保持私有但可访问。
-
internal(内部):外部区域的另一侧,用于网关的内部部分。计算机相当值得信赖,并提供一些额外的服务。
-
dmz(非军事区):用于位于DMZ中的计算机(无法访问网络其余部分的独立计算机)。仅允许某些传入连接。
-
work(工作):使用在公司环境,信任网络中的大多数计算机,可能会允许更多服务。
-
home(家庭):使用在家庭环境,它通常意味着您信任大多数其他计算机,并且将接受更多服务。
-
trusted(信任):信任网络中的所有计算机。最开放的可用选项,应谨慎使用。
说明: 要使用防火墙,我们可以创建规则并更改区域的属性,然后将网络接口分配给最合适的区域。
查看Zone的模板文件:
[[email protected] ~]# cat /usr/lib/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
</zone>
[[email protected] ~]#
zone的优先级
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
- source,也就是源地址,相同的source节点只可以在一个zone中进行配置
- interface,接收请求的网卡
- firewalld.conf中配置的默认zone
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个。
interface接口
Interfaces (接口)是系统中的硬件和虚拟的网络适配器的名字。所有的活动的接口都将被分配到区域,要么是默认的区域,要么是用户指定的一个区域。但是,一个接口不能被分配给多于一个的区域。
除非您已经配置了网络接口,否则在引导防火墙时,每个接口都将被置于默认区域中。
在缺省配置中,firewalld 设置所有接口为 public 区域,并且不对任何区域设置源。其结果是,public 区域是唯一的活动区域。
source源
Sources (源)是入站 IP 地址的范围,它也可以被分配到区域。一个源(或重叠的源)不能被分配到多个区域。这样做的结果是产生一个未定义的行为,因为不清楚应该将哪些规则应用于该源。
因为指定一个源不是必需的,任何包都可以通过接口匹配而归属于一个区域,而不需要通过源匹配来归属一个区域。Firewalld通过使用优先级方式,优先到达多个指定的源区域,
常用命令
firewalld服务维护
systemctl start firewalld #启动
systemctl status firewalld #查状态
systemctl stop firewalld #停止
systemctl enable firewalld #设置开机时启用服务
systemctl disable firewalld #设置开机时禁用服务
systemctl is-enabled firewalld #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
firewall-cmd --version #查看版本
firewall-cmd --help #查看帮助
firewall-cmd --state #查看防火墙状态
firewalld临时或永久修改配置
下面的的临时修改将在下次重新加载时被覆盖:
firewall-cmd <some modification>
以下的改变在重加载后会永久保存:
firewall-cmd --permanent <some modification> #--permanent 存储到配置文件中,但不会立即生效
firewall-cmd --reload #更新防火墙规则
firewall-cmd --complete-reload #重新加载防火墙,中断用户的连接
注意: 查询的命令中,不加–permanent选项时,只列出已生效的设置项。如果需要列出永久配置的设置项(不管是否生效),需要加上–permanent选项。
查看firewalld的信息
#整体的信息
firewall-cmd --get-zones #查看所有区域
firewall-cmd --get-services #查看当前区域支持的所有服务
firewall-cmd --get-icmptypes #查看支持的所有ICMP类型
#当前区域信息
firewall-cmd --list-all #查看此区域内的所有配置,类似与iptables -L -n
firewall-cmd --list-services #查看当前区域已启动的服务列表
firewall-cmd --list-rich-rules #查看rich规则列表
firewall-cmd --query-masquerade #查询SNAT的状态, yes/no
firewall-cmd --query-interface=ens33 #确定该网卡接口是否存在于此区域, yes/no
管理Zone
绑定Source和interface
##Source绑定
firewall-cmd --add-source=192.168.10.1/24 --zone=drop #作用在指定区域
firewall-cmd --add-source=192.168.1.13 #作用在默认区域
firewall-cmd --remove-source=192.168.1.13 #取消源IP为192.168.1.12的包作用在drop区域
firewall-cmd --get-zone-of-source=192.168.10.1/24 #反向查询source所属的zone(不能网段里的单个ip查)
firewall-cmd --list-sources --zone=drop #用于列出指定zone的所有绑定的source地址
firewall-cmd --get-active-zones #查看active zone信息
##Interface绑定
firewall-cmd --change-interface=ens33 [--zone=zone] #设置zone绑定的网卡,同时会使该zone**
firewall-cmd --zone=drop -add-interface=ens33 #作用在指定区域,和上面类似
firewall-cmd --add-interface=ens33 #作用在默认区域
firewall-cmd --remove-interface=ens33 #禁止ens33网卡作用在drop区域
firewall-cmd --get-zone-of-interface=interface #反向查询interface所属的zone
##综合查询状态
firewall-cmd --get-active-zones #查看当前起作用的zone
firewall-cmd --list-all #查看此区域内的所有配置
注意:
- 除非您已经配置了网络接口,否则在引导防火墙时,每个接口都将被置于默认区域中。
- 对于双网卡,可能通过绑定到不同区域,使内网网卡不受防火墙限制,例如外网卡在public而内网卡在trusted区域。
- 对于永久绑定网卡到Zone,有两个可以配置的位置:zone所对应的xml配置文件,或者网卡配置文件(也就是ifcfg-*文件)
ifcfg-*文件加上如下配置,相当于firewall-cmd --zone=public --change-interface=ens33
ZONE=public
或使用nm-connection-editor工具:
nmcli connection modify conn_name connection.zone zone_name
切换区域
通过firewalld.conf配置文件的DefaultZone配置项来配置的,也可以使用firewall-cmd命令来配置
firewall-cmd --zone=public --change-interface=ens33 #把网卡切换到另一个Zone
firewall-cmd --get-zones #查看所有区域
firewall-cmd --get-active-zones #查看当前正在使用的区域及绑定的interface
firewall-cmd --get-default-zone #查看当前的默认区域
firewall-cmd --set-default-zone=home #设置默认区域
target
zone规则中首先最重要的是target的设置,target主要用于接受,拒绝或丢弃与任何规则不匹配的每个数据包,即该区域对每个数据包匹配不到的规则时的默认行为。
在xml文件中target是zone节点的一个属性,有四个取值: default、ACCEPT、%%REJECT%%、DROP。
firewall-cmd --permanent [--zone=zone] --get-target #获取该Zone的target值
firewall-cmd --permanent [--zone=zone] --set-target=<target> #设置该Zone的target值
firewall-cmd --reload #更新防火墙规则
panic模式
firewall-cmd --list-ports --zone=public #查看public区域所有打开的端口
firewall-cmd --panic-on #紧急模式,强制关闭所有网络连接
firewall-cmd --panic-off #关闭紧急模式
firewall-cmd --query-panic #查看是否在紧急模式
管理规则
端口或服务规则
iptables使用端口号来匹配规则,需要记住端口与服务的对应关系,当某一个服务的端口号改变了,同时要更改对应的iptable的规则,配置比较麻烦也不方便阅读理解。而使用服务则大大简化了配置。
服务的定义在/usr/lib/firewalld/services/***意修改模板文件并加载后就改变该服务的规则。模板如下例:
[[email protected] ~]# cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
[[email protected] ~]#
service相应的配置命令:
firewall-cmd --get-services #列出所有services
firewall-cmd [--zone=zone] --list-services #列出该Zone当前加载的service
firewall-cmd [--permanent] [--zone=zone] --add-service=service [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-service=service
firewall-cmd [--permanent] [--zone=zone] --query-service=service
注意: --add-service中的–timeout的含义是这样的:添加一个服务,但是不是一直生效而是生效一段时间,过期之后自动删除。
另外,使用port可以不通过service而直接对端口进行设置
firewall-cmd [--permanent] [--zone=zone] --list-ports
firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol
firewall-cmd [--permanent] [--zone=zone] --query-port=portid[-portid]/protocol
添加端口或服务规则
##服务
firewall-cmd --zone=public --add-service=https #在区域开放https服务
firewall-cmd --zone=public --remove-service=https #取消开放https服务,即禁止https服务
firewall-cmd --zone=public --query-service=https #查询区域是否允许https服务的流量
##端口(本次)
firewall-cmd --zone=public --add-port=22/tcp #开放22端口
firewall-cmd --zone=public --remove-port=22/tcp #取消开放22端口
firewall-cmd --zone=public --add-port=8080-8081/tcp #开放8080和8081端口
firewall-cmd --zone=public --list-ports #查询区域开放了哪些端口
##端口(永久)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload # 重新加载后才能生效
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp
##协议
firewall-cmd --zone=public --add-protocol=icmp #允许icmp协议流量,即允许ping
firewall-cmd --zone=public --remove-protocol=icmp #取消允许icmp协议的流量,即禁ping
firewall-cmd --zone=public --list-protocols #查询区域开放了哪些协议
##查询状态
firewall-cmd --get-active-zones #查看当前起作用的zone
firewall-cmd --list-all #查看此区域内的所有配置,类似与iptables -L -n
端口转发forward-port
进行端口转发的,比如我们要将在80~82端口接收到tcp请求转发到本机8080端口可以使用下面的命令
firewall-cmd --add-forward-port=port=80-82:proto=tcp:toport=8080
相应的配置命令:
firewall-cmd [--permanent] [--zone=zone] --list-forward-ports
firewall-cmd [--permanent] [--zone=zone] --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]][--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
firewall-cmd [--permanent] [--zone=zone] --query-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
例子:
#将原本访问本机888端口的流量转发到本机22端口
firewall-cmd --zone=public --add-forward-port=port=888:proto=tcp:toport=22
#将原本访问本机888端口的流量转发到ip为192.168.2.208的主机的22端口,需要开启masquerade
firewall-cmd --zone=public --add-masquerade
firewall-cmd --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.2.208
伪装masquerade(SNAT)
ip地址伪装,也就是NAT转发中的一种,具体处理方式是将接收到的请求的源地址设置为转发请 求网卡的地址
firewall-cmd [--permanent] [--zone=zone] --add-masquerade [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-masquerade
firewall-cmd [--permanent] [--zone=zone] --query-masquerade
例子:
##将来自局域网192.168.2.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址
firewall-cmd --zone=work --add-masquerade
firewall-cmd --zone=work --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 masquerade"
firewall-cmd --zone=work --query-masquerade
报文阻塞icmp-block
icmp-block是按照icmp的类型进行设置阻塞,比如我们不想接受ping报文就可以使用下面的命令来设置
firewall-cmd --add-icmp-block=echo-request
相应的配置命令:
firewall-cmd [--permanent] [--zone=zone] --list-icmp-blocks
firewall-cmd [--permanent] [--zone=zone] --add-icmp-block=icmptype [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-icmp-block=icmptype
firewall-cmd [--permanent] [--zone=zone] --query-icmp-block=icmptype
专家模式direct rules
对于熟悉iptables的专家,firewalld 提供了一个直接direct接口,通过 firewall-cmd 工具,可以使用 --direct 选项在运行时间里传递原始 iptables 命令。
如果不熟悉 iptables ,使用直接接口非常危险,因为您可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。
注意: direct接口规则不是持久的,除非使用 --permanent。
##添加规则
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT
##删除规则
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 10 -p tcp --dport 80 -j ACCEPT
##列出规则:
firewall-cmd --direct --get-all-rules
##列出所有chains
firewall-cmd --direct --get-all-chains
修改iptables中的链
##设置ip伪装
firewall-cmd --zone=internal --add-masquerade --permanent
firewall-cmd --reload
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth1 -j MASQUERADE
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o eth1 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
##将某个IP范围列入黑名单
firewall-cmd --direct --add-chain ipv4 raw blacklist
firewall-cmd --direct --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
firewall-cmd --direct --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG 00log-prefix "blacklisted"
firewall-cmd --direct --add-rule ipv4 raw blacklist 1 DROP
富规则rich rule
rich rule相当于iptables的一条规则,其中操作命令如下:
firewall-cmd [--permanent] [--zone=zone] --list-rich-rules
firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-rich-rule='rule'
firewall-cmd [--permanent] [--zone=zone] --query-rich-rule='rule'
说明: 结合–timeout参数,可以用于自动化脚本
其模板定义如下:
<zone>
<rule [family="ipv4|ipv6"]>
[ <source address="address[/mask]" [invert="bool"]/> ]
[ <destination address="address[/mask]" [invert="bool"]/> ]
[
<service name="string"/> |
<port port="portid[-portid]" protocol="tcp|udp"/> |
<protocol value="protocol"/> |
<icmp-block name="icmptype"/> |
<masquerade/> |
<forward-port port="portid[-portid]" protocol="tcp|udp" [to-port="portid[-portid]"] [to-addr="address"]/>
]
[ <log [prefix="prefixtext"] [level="emerg|alert|crit|err|warn|notice|info|debug"]/> [<limit value="rate/duration"/>] </log> ]
[ <audit> [<limit value="rate/duration"/>] </audit> ]
[ <accept/> | <reject [type="rejecttype"]/> | <drop/> ]
</rule>
</zone>
例子:
##把1.1.1.1的souce全部drop掉
firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.1.1.1" drop'
##将源192.168.2.2地址加入白名单,以允许来自这个源地址的所有连接
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" accept'
##拒绝来自public区域中IP地址为192.168.0.11的所有流量
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
##在192.168.1.0/24子网的dmz区域中,接收端口7900--1905的所有TCP包
firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-1905 protocol=tcp accept'
##在接下来的5min内,拒绝从默认区域中的子网192.168.2.0/24到DNS的新连接,并且拒绝的连接将记录到audit系统,且每小时最多一条消息
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value="1/h" reject' --timeout=300
#查看规则
firewall-cmd --list-rich-rules #列出当前生效的(reload后)
firewall-cmd --permanent --list-rich-rules #列出生效与不生效的
IP封禁
使用rich rule进行封禁
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.222' drop" #封禁单个IP
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.0/24' drop" #封禁IP段
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2 port port=80 protocol=tcp drop" #封禁单个IP的某个端口
firewall-cmd --reload
firewall-cmd --list-rich-rules #列出当前生效的(reload后)
利用ipset进行封禁
注: ipset相当于iptable的扩展,它和iptable 处理方式,iptable通过链表线性存储然后遍历来实现匹配。而ipset通过通过索引的数据结构设计达到快速匹配。这种设计使得当set配置比较庞大的时候,也可以高效地进行匹配。
firewall-cmd --get-ipset-types
#单IP
firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.222
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'
#网段
firewall-cmd --permanent --zone=public --new-ipset=blacklistnet --type=hash:net
firewall-cmd --permanent --zone=public --ipset=blacklistnet --add-entry=222.222.222.0/24
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklistnet drop'
#删除条目
firewall-cmd --permanent --ipset=blacklist --remove-entry=222.222.222.222
#查询
firewall-cmd --reload #生效
firewall-cmd --get-ipsets
firewall-cmd --info-ipset=blacklist
ls -l /etc/firewalld/ipsets
#删除ipset
firewall-cmd --permanent --delete-ipset=blacklist
其他
创建一个新的Zone
firewall-cmd --get-zones #查看所有区域
firewall-cmd --get-services #查看当前区域支持的服务
#增加新的Zone
firewall-cmd --permanent --new-zone=test #增加新Zone
firewall-cmd --reload #生效
#添加持久性的 HTTP 和 HTTPS 规则:
firewall-cmd --zone=test --add-service=ssh --permanent
firewall-cmd --list-all --zone=test
#开启端口25(SMTP)和端口465 (SMTPS) :
firewall-cmd --zone=test --add-service=smtp --permanent
firewall-cmd --zone=test --add-service=smtps --permanent
#开启 IMAP、IMAPS、POP3和POP3S端口:
firewall-cmd --zone=test --add-service=imap --permanent
firewall-cmd --zone=test --add-service=imaps --permanent
firewall-cmd --zone=test --add-service=pop3 --permanent
firewall-cmd --zone=test --add-service=pop3s --permanent
#绑定source
firewall-cmd --zone=test --permanent --add-source=192.168.1.12 #作用在指定区域
#配置生效
firewall-cmd --reload #生效
firewall-cmd --get-default-zone #默认区域为public
#网卡切换
firewall-cmd --change-interface=ens33 --zone=test #把网卡切换到另一个区域
firewall-cmd --get-active-zones #test区域已为活动状态
firewall-cmd --get-default-zone #查看当前的默认区域, 仍为public
定义一个新的服务
最简单的方法是将现有脚本(找到/usr/lib/firewalld/services
)复制到/etc/firewalld/services
防火墙查找非标准定义的目录。
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml
然后,编辑该元数据文件,需要更改<short>
标记内服务的短名称,这是一个可读的服务名称。您还应该添加说明,以便在需要审核服务时获得更多信息。实际影响服务功能所需的唯一配置可能是端口定义,您可以在其中标识要打开的端口号和协议。
cat /etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Example Service</short>
<description>This is just an example service. It probably shouldn't be used on a real system.</description>
<port protocol="tcp" port="7777"/>
<port protocol="udp" port="8888"/>
</service>
最后,重载生效:
firewall-cmd --reload
firewall-cmd --get-services
下一篇: svn安装