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的模板文件:

[root@localhost ~]# 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>
[root@localhost ~]# 

zone的优先级

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:

  1. source,也就是源地址,相同的source节点只可以在一个zone中进行配置
  2. interface,接收请求的网卡
  3. 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/下,注意修改模板文件并加载后就改变该服务的规则。模板如下例:

[root@localhost ~]# 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>
[root@localhost ~]# 

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值