简介
-
Firewalld提供更加智能化的防火墙管理规则,优化策略配置方案,支持网络“zones(域)”,并为网络及其关联的链接、接口或源分配信任级别,不同信任级别默认开放服务不同。
-
支持IPV4,IPV6,以太网桥以及IPSET防火墙设置。
-
运行时态与永久配置分离,运行时态可手动更改,重置后回到永久配置(文件配置)
-
优化iptables添加规则,还支持图形界面(本文不介绍),除了iptables,还有ip6tables和ebtables规则。
概念及架构
空间架构分为上下两层。
- 上层:firewalld D-Bus:命令主接口,修改防火墙配置主要方式。
firewall-cmd:主要命令行操作方式。
firewall-config:离线命令行操作模式,因为直接作用于firewalld永久配置中,所以在firewall运行时不建议直接操作。
firewall-config:图形配置模式。
firewall-applet:防火墙小程序。
- 下层(核心层):负责处理配置和后端,并含有iptables,ip6tables,ebtables,ipset模块加载器。
核心组成
区域:
ZONE(防火墙区域定义链接、接口或源地址绑定的信任级别),共10(还有一种为default)种,直接为网域种的其他计算机建立信任关系度,不用进行麻烦的配置操作,只需要选择一个zone即可,如若不满足需要,还可手动添加信任服务。
Drop : 任何传入的网络的数据包都被丢弃
Block : 任何传入网络的数据包都被拒绝(包括ICMP),只能启动网络链接
Public : 在公共区域内使用,近接受选定的传入链接(默认:仅ssh或dhcpv6-client服务链接)
External : 用于伪装,出去的ipv4网络链接通过此区域伪装和转发(默认:仅接受ssh服务链接)
Dmz : 对内部网络访问权限限制(默认:仅接受ssh服务链接)
Work : 用于工作区(默认:仅接受ssh,ipp-client或dhcpv6-client服务链接 )
Home : 用于家庭区(默认:仅接受ssh,mdns,ipp-client,samba-client或dhcpv6-client服务链接)
Internal : 内部,对网络上的其他计算机信任的较高,默认大部分服务
Trusted : 最高信任级别,接受所有网络链
区域 | 默认规则策略 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关,如果流量与ssh、mdns、ipp-client、amba-client、与dhcpv6-client服务相关,则允许流量 |
iinternal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关,如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 除非与流出的流量相关;如果流量与ssh服务先关,则允许流量 |
dmz | 拒绝流量,除非与流出的流量先关;如果流量与ssh服务相关,则允许流量 |
–get-default-zone | 查询默认区域名称 |
---|---|
–set-zone =<区域名称> | 设置默认的区域,使其永久生效 |
–get-zones | 显示可用区域 |
–get-services | 显示预先定义的服务 |
–get-active-zones | 显示当前正在使用的区域与网卡名称 |
–add-source=xx | 将源自此ip或子网的流量到指定的区域 |
–remove-source=xx | 不再将源自此ip或子网的流量导向某个指定区域 |
–change-interface=<网卡名称> | 将某个网卡与区域相关联 |
–list-all | 显示当前区域的网卡配置参数、资源、端口机服务等信息 |
–list-all-zones | 显示所有区域的网卡配置参数、资源、端口机服务等信息 |
–add-service=<服务名> | 设置默认区域允许的该服务的流量 |
–add-port=<端口号/协议> | 设置默认区域允许的该端口的流量 |
–remove-port=<端口号/协议> | 设置默认区域不在允改端口的流量 |
–reload | 让“永久生效”配置的规则立即生效,并覆盖当前的配置规则 |
–panic-on | 开启应急状况模式 |
panic-off | 关闭应急状况模式 |
-
当前生效模式(RUNtime)
-
永久生效 (Permanent)
案列
- 查看当前区域
[root@client_13 ~]# firewall-cmd --get-default-zone
public
[root@client_13 ~]#
[root@client_13 ~]#
- 网卡在哪个区域
[root@client_13 ~]#
[root@client_13 ~]# firewall-cmd --get-zone-of-interface=ens33
public
[root@client_13 ~]#
- 网卡改变到external区域 – 重启仍然生效(永久模式)
[root@client_13 ~]# firewall-cmd --permanent --zone=external --change-interface=eht0
- 把firewalld服务的当前默认区域设置为public
[root@client_13 ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@client_13 ~]#
- 把firewalld服务设置为应急模式(慎用)-- 相当于紧急模式(windows安全模式)
完全断网状态
[root@client_13 ~]# firewall-cmd --panic-off
- 查询public区域是够允许ssh和http服务
[root@client_13 ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@client_13 ~]# firewall-cmd --zone=public --query-service=http
http https
[root@client_13 ~]# firewall-cmd --zone=public --query-service=http
no
[root@client_13 ~]#
- 设置http为永久允许
[root@client_13 ~]# firewall-cmd --permanent --zone=public --add-service=http
success
[root@client_13 ~]# firewall-cmd --reload
success
[root@client_13 ~]# firewall-cmd --permanent --zone=public --add-port=8080-8090/tcp
success
[root@client_13 ~]# firewall-cmd --zone=public --list-ports
[root@client_13 ~]# firewall-cmd --reload
success
[root@client_13 ~]# firewall-cmd --zone=public --list-ports
8080-8090/tcp
[root@client_13 ~]#
[root@client_13 ~]#
语法:
firewall-cmd --permanent --zone=public --add-forward-port=prot=888:proto=tcp:toport=22:roaddr=目的IP
[root@client_13 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.170.13
success
图形界面使用
若果你是最小安装,则先安装图形界面,然后再次执行
[root@client_13 ~]# yum -y groupinstall "Server with GUI" --- RHEL7.x
yum -y groupinstall "X Window System" Desktop --- RHEL6.x
启动图形界面:
[root@client_13 ~]#startx
ok!我的这里就可以操作了,如果还时不行,说明你的x11forwarding为no