CentOS 7 FirewallD 例子
firewall-cmd 一些例子
Zones
[root@orc2 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: dhcpv6-client ssh
ports: 12345/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
默认接口ens3属于public,这意味着所有外部连入IP都适用于public这个zone的规则。
生效时间
新建规则,
- 不加
--permanent
参数,立即生效,重载firewall-cmd --reload
后失效。 - 加上
--permanent
参数,不生效,重载firewall-cmd --reload
后才生效。
如果你写了很多条没有加--permanent
参数的命令,要全部保存他们,可使用命令firewall-cmd --runtime-to-permanent
。
规则写法
开启端口
firewall-cmd --zone=public --add-port=5000/tcp
firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
关闭端口
firewall-cmd --zone=public --add-remove=5000/tcp
firewall-cmd --zone=public --permanent --remove=4990-4999/udp
查看打开的端口
此处只能查看单条规则打开的E端口,看不到服务,也就是规则集合打开的端口。firewall-cmd --zone=public --permanent --list-ports
查看允许的服务(规则集)
firewall-cmd --zone=public --list-services
允许一个服务(规则集)
firewall-cmd --zone=public --permanent --add-service=http
禁用一个服务(规则集)
firewall-cmd --zone=public --permanent --remove-service=http
服务(规则集)编写
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>此处填服务名称</short>
<description>该服务是干嘛干嘛的,需要打开以下端口</description>
<port protocol="udp" port="12345"/>
<port protocol="tcp" port="12345"/>
<port protocol="udp" port="12346"/>
<port protocol="udp" port="12346"/>
<module name="nf_conntrack_netbios_ns"/>
</service>
针对一个IP段打开所有端口
iptables里面,在input链添加一个src就表示这个ip可以连接本机所有端口。但firewalld不是,如果你在public zone添加了一个source ip,表示这个IP属于public zone,将应用public zone 里面的规则。但是,firewalld默认所有未定义的流量都会应用public zone的规则,所以,无论是否把一个ip加入到public zone,没有任何区别。
要实现针对1个ip定制规则,需要将这个ip添加到另一个zone,在另一个zone里面定制规则。
将这个IP段,以及打开所有端口的命令,都放在trusted zone里面。
firewall-cmd --zone=trusted --add-port=0-65535/tcp --permanent
firewall-cmd --zone=trusted --add-source=103.12.0.0/16 --permanent
firewall-cmd --reload
效果如下。
[root@orc2 ~]# firewall-cmd --zone=trusted --list-all
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 103.12.0.0/16
services:
ports: 0-65535/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。