在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