在RedHat7 linux系统以前配置防火墙我们需要从iptables配置;
在RedHat7防火墙的默认配置管理工具firewall-cmd,这里我将讲firewall-cmd的基本概念和配置方法:
区域:定义网络区域的可信等级,可以根据不通场景调用不同的firewalld区域,如下是常见规则
区域 默认规则策略
trusted 允许所有的数据包
home 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,mdns,ipp-client与dhcpv6-client服务则允许;
internal 等同与home区域;
work 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,ipp-client与dhcpv6-client服务则允许;
public 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,dhcpv6-client服务则允许;(默认使用public)
external 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许;
dmz 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许;
block 拒绝流入的数据包,除非与输出流量数据包相关;
drop 拒绝流入的数据包,除非与输出流量数据包相关;
默认区域为public
管理工具firewall-cmd命令,命令参数有:
参数 作用
--get-default-zone 查询默认的区域名称 实例:firewall-cmd --get-default-zone
--set-default-zone=<区域名称> 设置默认的区域 实例:firewall-cmd --set-default-zone=public
--get-zones 显示可用区域 实例:firewall-cmd --get-zones
--get-services 显示预定的服务 实例:firewall-cmd --get-services
--get-active-zones 显示当前正在使用区域与网卡名称:实例firewall-cmd --get-active-zones
--add-source=ip地址 将来源与此ip或子网的流量导向指定的区域:实例 firewall-cmd --add-source=10.1.1.20 -- zone=dmz
--remove-source=ip地址 不在将此ip地址或子网的流量导向指定区域
--add-interface=网卡名称 将来自该网卡的所有流量导向指定区域
--list-all 显示当前区域的网卡配置参数、资源、端口及服务信息
--list-all-zones 显示所有区域的网卡配置参数、资源,端口及服务信息
--add-service=<服务名称> 设置默认区域允许该服务的流量
--add-port=<端口号/协议> 设置默认区域允许该端口的流量
--remove-service=<服务名> 设置默认区域不再允许服务的流量
--remove-port=<端口号/协议> 设置默认区域不再允许该服务器的流量
--reload 让“永久配置的规则立即生效,覆盖当前配置”
firewalld服务有两份规则策略配置记录:
Runtime:当前正在生效(重启失效); 默认firewall-cmd不加permanent参数为当前生效
Permanent:永久生效(重启生效); 永久生效需在firewall-cmd命令中加 permanent参数,必须执行-reload,否则重启生效
配置命令实例:
查看当前的区域 firewall-cmd --get-default-zone
查看eth0网卡的区域 firewall-cmd --get-zone-of-interface=eth0
在public区域中查询ssh与http服务是否被允许
firewall-cmd --zone=public --query-service=ssh
firewall-cmd --zone=public --query-service=http
设置默认规则为dmz firewall-cmd --set-default-zone=dmz
让永久生效的配置文件立即生效:firewall-cmd --reload
启动/关闭应急模式,阻断所有网络连接:应急模式会阻断所有网络连接,一切服务都会被拒绝,慎用;
firewall-cmd --panic-on firewall-cmd --panic-off
设置当前生效与永久有效的规则记录:
firewall-cmd --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=https
允许80端口流量通过public区域,永久且立即生效
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
查看要求加入的端口操作是否成功
firewall-cmd --zone=public --list-port
另外,也可通过修改firewalld的区域文件添加修改规则策略,改为配置文件需要执行firewall-cmd --reload 使改动立即生效:
vim /etc/firewalld/zones/public.xml