28.使用命令行配置防火墙

作者:码农 | 发布时间:

1.使用命令行工具firewall-cmd配置防火墙

firewall-cmd命令一般格式为:

firewall-cmd  参数1  [参数2]  [参数3] ……

参数

作用

--state

查询当前防火墙状态

--panic-on

拒绝所有包。

--permanent

永久生效的设置。永久选项不直接影响运行时的状态,仅在重载或者重启服务时可用

--reload

重新加载“永久”生效的配置规则,使其立即生效,否则要重启后才生效

--zone=<区域名称>

指定区域,若未指定区域则为当前默认区域

--get-services

查看当前所有被允许的服务

--get-active-zones

查看当前活动区域(已经有网络接口连接的区域)

--get-service  --permanent

查看当前服务配置是否生启后还是生效

--get-default-zone

查询当前默认的区域

--set-default-zone=<区域名称>

将指定区域设置为默认区域,。此命令会改变运行时配置和永久配置

--list-ports

查看默认区域或指定区域的端口

--list-services

查看所有允许的服务

--list-all  [--zone=<区域名>]

显示指定区域全部启用的特性。若省略区域,将显示默认区域的信息

--list-all-zones

显示所有区域的特性(网卡配置参数,资源,端口以及服务等信息。

--get-zones

显示所有可用的区域。列出当前有几个zone

--get-services

显示预先定义的服务

--get-active-zones

显示当前正在使用 (被网卡或源关联) 的所有区域

--add-source=

将来源于此IP或子网的流量导向指定的区域

--remove-source=

不再将此IP或子网的流量导向某个指定区域

查询命令

查看firewalld服务当前所使用的区域:

[root@linux ~]# firewall-cmd  --get-default-zone

public

查询ens33网卡在firewalld服务中的区域:

[root@linux ~]#  firewall-cmd --get-zone-of-interface=ens33

public

查看当前所有被允许的服务:

[root@linux ~]# firewall-cmd --get-services

RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client

把firewalld服务的当前默认区域设置为public:

[root@linux ~]# firewall-cmd --set-default-zone=public

success

[root@linux ~]# firewall-cmd --get-default-zone

public

启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用):

[root@linux ~]# firewall-cmd --panic-on

success

[root@linux ~]# firewall-cmd --panic-off

success

查询public区域是否允许请求SSH和HTTPS协议的流量:

[root@linux ~]# firewall-cmd --zone=public --query-service=ssh

yes

[root@linux ~]# firewall-cmd --zone=public --query-service=https

no

把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效:

[root@linux ~]# firewall-cmd --zone=public --add-service=https

success

[root@linux ~]# firewall-cmd --permanent --zone=public --add-service=https

success

[root@linux ~]# firewall-cmd --reload

success

把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效:

[root@linux ~]# firewall-cmd --permanent --zone=public --remove-service=http

success

[root@linux ~]# firewall-cmd --reload

success

把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效:

[root@linux ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp

success

[root@linux ~]# firewall-cmd --zone=public --list-ports

8080-8081/tcp

在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务

[root@linux ~]# firewall-cmd --permanent --zone=public --add-rich-rule=“rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"

success

[root@linux ~]# firewall-cmd --reload

success