Linux之CentOS 7操作系统的默认防火墙管理工具——firewalld

firewalld是CentOS 7和RHEL 7(Red Hat Enterprise Linux 7)的默认防火墙配置管理工具。

目录

区域(zone)

firewalld中常见的区域名称

firewall-cmd 命令行管理工具

一些防火墙配置实例


区域(zone)

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表。

firewalld中常见的区域名称

  • block
  • dmz
  • drop
  • external
  • home
  • internal
  • public
  • trusted
  • work

其中默认区域是 public

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

firewall-cmd 命令行管理工具

firewall-cmd是 firewalld 防火墙的命令行管理工具,其相关参数一般都是以“长格式”来提供的。

# 相关参数
--get-default-zone				  查看默认的区域名称
--set-default-zone=<区域名称>	  设置默认的区域
--get-zones						  显示可用的区域
--get-services					  显示预先定义的服务
--get-active-zones				  显示当前正在使用的区域和网卡名称
--add-source=					  将源自此IP或子网的流量导向指定的区域
--remove-source=				  不再将源自此IP或子网的流量导向指定的区域
--add-interface=<网卡名称>		  将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称>	  将某个网卡与区域进行关联
--list-all						  显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones				  显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名>			  设置默认区域允许该服务的流量
--add-port=<端口号/协议>          设置默认区域允许该端口的流量
--remove-service=<服务名>		  设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>		  设置默认区域不再允许该端口的流量
--reload						  让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

使用firewalld配置的防火墙策略默认为运行时模式(Runtime),又称为当前生效模式,系统重启会失效。

如果想让配置策略一直存在,就需要使用永久模式(Permanent),就是在 firewall-cmd 命令设置防火墙策略时添加 --permanent 参数。但是设置的策略只有在系统重启后才能自动生效,如果想让配置策略立即生效,需要手动执行 firewall-cmd --reload 命令。

一些防火墙配置实例

(1)查询ens33网卡在firewalld服务中的区域

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

(2)把firewalld服务的当前默认区域设置为public

[root@localhost ~]# firewall-cmd --set-default-zone=public
success
[root@localhost ~]# firewall-cmd --get-default-zone
public

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

[root@localhost ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@localhost ~]# firewall-cmd --zone=public --query-service=https
no

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

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

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

[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-service=http
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --query-service=http
no

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

[root@localhost ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@localhost ~]# firewall-cmd --list-ports
8080-8081/tcp

(7)把原本访问本机(192.168.58.165)的888端口的流量转发到22端口,要求当前和长期均有效

# 流量转发命令格式为:firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目的端口号>:toaddr=<目的IP地址>

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.58.165
success
[root@localhost ~]# firewall-cmd --reload
success

在另一台主机上使用ssh命令访问192.168.58.165主机的888端口
[root@huyuxuan ~]# ssh -p 888 192.168.58.165
[email protected]'s password: 
Last login: Fri Jan 21 15:29:09 2022 from 192.168.58.1		# 远程登录成功

firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目的地址等信息进行更有针对性的策略配置,富规则的优先级也是所有防火墙策略中最高的。

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

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.58.0/24" service name="ssh" reject"

你可能感兴趣的:(Linux,centos,linux,运维)