学习目标:
- 理解firewalld与iptables的区别
- 了解firewalld常见的区域名称及策略规则
- 掌握firewall-cmd命令使用的参数
- 掌握firewalld防火墙的配置方法
学习内容:
- firewalld(Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
- 相比于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念,用户可以根据生产场景的不同选择合适的策略集合。
- firewalld中常用的区域名称及策略规则:
区域 默认规则策略 trusted 允许所有的数据包 home 拒绝流入的流量,除非与流出的流量相关 internal 等同于home区域 work 拒绝流入的流量,除非与流出的流量相关 public 拒绝流入的流量,除非与流出的流量相关 external 拒绝流入的流量,除非与流出的流量相关 dmz 拒绝流入的流量,除非与流出的流量相关 block 拒绝流入的流量,除非与流出的流量相关 drop 拒绝流入的流量,除非与流出的流量相关 - firewalld-cmd是防火墙配置管理工具的CLI(命令行)版本,它的参数一般是“长格式”来提供。其使用的参数及作用如表:
参数 作用 --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-services=<服务名> 设置默认区域允许该服务的流量 --add-port=<端口号/协议> 设置默认区域允许该端口的流量 --remove-services=<服务名> 设置默认区域不再允许该服务的流量 --remove-port=<服务名> 设置默认区域不再允许该端口的流量 --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 --panic-on 开启应急状况模式 --panic-off 关闭应急状况模式
实验输出:
实验一:把网卡默认区域修改为external并在系统重启后生效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=ens160
success
[root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=ens160
external
实验二:把firewalld服务的默认区域设置为public。
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public
实验三:查询SSH和HTTPS协议的流量是否允许放行。
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no
实验四:把HTTPS协议的流量设置为永久允许放行,并立即生效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
success //--permanent参数重启后才生效
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no //可以发现HTTPS流量还未放行
[root@linuxprobe ~]# firewall-cmd --reload //这时候若不想重启虚拟机,就使用--reload参数
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
yes //https流量已放行
实验五:把访问8080和8081端口的流量策略设置为允许,但仅当前生效。
[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
学习小结:
- 学会如何编写firewall-cmd命令,并会灵活使用各种参数
- 理解Runtime及permanent参数的作用,前者是当前立即生效,重启后失效;后者是当前不生效,重启后生效