基本概念
概述
支持动态更新防火墙规则
不重启即可创建、修改和删除规则
使用区域和服务来简化防火墙配置
区域
一组预定义的规则,防火墙策略集合(或策略模板)
把网络分配到不同的区域中,并为网络及其关联的网络接口或流量源指定信任级别
在区域上定义规则并应用于进入该区域的网络流量
服务
服务是端口和协议的组合
表示为允许外部流量访问某种服务需要配置的所有规则的集合
放行服务即相当于打开与该服务相关的端口和协议、启用数据包转发等功能
将多步操作集成到一条规则中,减少配置工作量
安装与启停
查看是否已经安装下面两个软件,默认都安装了
rpm -qa | grep firewall
安装firewalld
yum install firewalld -y
安装firewall-config,用于以图形化配置防火墙
yum install firewall-config -y
启停
systemctl start | stop | restart | status | enable firewalld
基本配置
三种配置方式
firewall-config 图形化界面
firewall-cmd 命令
firewall-cmd --state // 查看运行状态
firewall-cmd --list-all // 查看默认区域配置
firewall-cmd --list-all --zone=work // 指定区域名
firewall-cmd --list-services // 只查看服务信息
firewall-cmd --list-services --zone=public // 组合使用
firewall-offline-cmd 命令
两种配置模式
运行时配置:firewalld 处于运行状态时生效的配置
永久配置:firewalld 重载或重启时加载的配置
使用 --permanent 选项使更改在下次启动时仍然生效
使用 --reload 选项重载永久配置并覆盖运行时配置
firewall-cmd --add-service=http // 只修改运行时配置
firewall-cmd --permanent --add-service=http // 修改永久配置
firewall-cmd --reload // 重载永久配置
firewall-cmd --add-service=http // 只修改运行时配置
firewall-cmd --runtime-to-permanent // 提交到永久配置中
查看信息
[root@centos7 ~]# firewall-cmd --state // 查看运行状态
running
[root@centos7 ~] # firewall-cmd --list-all // 查看默认区域配置
public (active)
interfaces: ens33
services: ssh dhcpv6-client samba dns http ftp amanda-k5-client
[root@centos7 ~]# firewall-cmd --list-all --zone=work // 指定区域名
work
target: default
services: ssh dhcpv6-client
[root@centos7 ~]# firewall-cmd --list-services // 只查看服务信息
ssh dhcpv6-client
[root@centos7 ~]# firewall-cmd --list-services --zone=public // 组合使用
ssh dhcpv6-client http
基于服务的流量管理
添加或移除预定义服务
添加或移除服务端口
firewall-cmd --list-services // 查看当前允许服务列表
firewall-cmd --permanent --add-service=http // 添加预定义服务
firewall-cmd --reload // 重载防火墙的永久配置
firewall-cmd --list-services // 查看当前允许服务列表
firewall-cmd --add-port=80/tcp
firewall-cmd --list-ports
firewall-cmd --remove-port=80/tcp // 移除 tcp 80 端口
基于区域的流量管理
查看当前可用区域 , 查看指定区域的详细信息
[root@centos7 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@centos7 ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
[root@centos7 ~]# firewall-cmd --list-all --zone=home
home
target: default
icmp-block-inversion: no
修改默认区域 , 关联区域和网络接口
[root@centos7 ~]# firewall-cmd --get-default-zone // 查看当前默认区域
public
[root@centos7 ~]# firewall-cmd --set-default-zone work // 修改默认区域
[root@centos7 ~]# firewall-cmd --get-default-zone // 再次查看当前默认区域
work
[root@centos7 ~]# firewall-cmd --get-active-zones // 查看活动区域的网络接口
public
interfaces: ens33
[root@centos7 ~]# firewall-cmd --zone=work --change-interface=ens33
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
ZONE=work
当数据包与区域的所有规则都不匹配时,可以使用区域的默认规则处理数据包 , 包括接受(ACCEPT)、拒绝(REJECT)和丢弃(DROP)
[root@centos7 zones]# firewall-cmd --permanent --zone=work --set-target=ACCEPT
[root@centos7 zones]# firewall-cmd --reload
[root@centos7 zones]# firewall-cmd --zone=work --list-all
work
target: ACCEPT
icmp-block-inversion: no
添加和删除流量源 , 添加和删除源端口和协议
[root@centos7 ~]# firewall-cmd --zone=work --add-source=192.168.100.0/24
[root@centos7 ~]# firewall-cmd --runtime-to-permanent
[root@centos7 ~]# firewall-cmd --zone=work --remove-source=192.168.100.0/24
[root@centos7 ~]# firewall-cmd --zone=work --add-source-port=3721/tcp
[root@centos7 ~]# firewall-cmd --zone=work --remove-source-port=3721/tcp
[root@centos7 ~]# firewall-cmd --zone=internal --add-protocol=icmp
[root@centos7 ~]# firewall-cmd --zone=internal --remove-protocol=icmp