目录
一、Firewalld 概述
1.1 Firewalld的简述
firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在
网络层,属于包过滤防火墙。
firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结
构都指向netfilter网络过滤子系统(属于内核态)来实现包过滤防火墙功能。
1.2 Firewalld 和 iptables的区别
①iptables 主要从接口来设置规则去维护网络的安全。使用iptables每一个单独更改意味着清除所
有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则。
iptables在/etc/ sysconfig/iptables中储存配置,
(静态防火墙)
②firewalld 是根据区域来设置不同的规则去保障网络的安全。
firewalld将配置储存在/etc/firewalld/ ( 优先加载)和/usr/lib/ firewalld/ ( 默认的配置文件)中的各种XML文件里。
(动态防火墙)
1.3 firewalld的区域
firewalld为了简化管理,把所有的网络流量分成多个区域。根据数据包的源IP地址或者网络接口等条件将流量传入相应的区域。
1.3.1 firewalld的9个区域
区域 | 说明 |
public(公共区域) | 在公共区域内使用,不能相信网络内的其他计算机不会对您的计篝机造成危害,只能接收经过选取的连接 |
trusted(信任区域) | 允许所有的传入流量。 |
drop(丢弃区域) | 任何接收的网络数据包都被丟弃,没有任何回复.仅能有发送出去的网络连接 |
block (限制区域) | 任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm- prohibited 信息所拒绝 |
external (外部区域 | 特别是为路由器启用了伪装功能的外部网.您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接 |
work (工作区域) | 用于工作区.您可以基本相信网络内的其他电脑不会危害您的电脑.仅仅接收经过选择的连接 |
dmz(隔离区域也称为非军事区域) | 允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。 |
internal (内部区域) | 用于内部网络.您可以基本上信任网络内的其他计算机不会威胁您的计算机仅仅接受经过选择的连接 |
home(家庭区域) | 用于家庭网络.您可以基本信任网络内的其他计算机不会危害您的计算机仅仅接收经过选择 的连接 |
一个区域的安全程度取决于管理员在此区域中设置的规则
每个区域又不同的规则,只会允许符合规则的流量传入
可以根据网络规模,使用一个或多个区域,但是任何一个 活跃区域 至少需要关联 源地址或接口。
默认情况下,public区域是默认区域,包含所有接口(网卡)
1.3.2 firewalld的数据处理流向
firewalld对于进入系统的数据包,会根据数据包的源IP地址或传入的网络接口等条件,将数据流量
转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。
1.3.3 数据包的规则
1、若源地址关联到特定的区域(即源地址或接口绑定的区域有冲突),则执行该区域所制定的规
则。
2、若源地址未关联到特定的区域(即源地址或接口绑定的区域没有冲突),则使用传入网络接口
的区域并执行该区域所制定的规则。
3、若网络接口也未关联到特定的区域(即源地址或接口都没有绑定特定的某个区域),则使用默
认区域并执行该区域所制定的规则。
二、firewalld的配置
2.1 配置方法
2.1.1Firewall-config图形工具
2.1.2Firewall-cmd命令行工具
常用的命令:
systemctl start firewalld //启动 firewalld
systemctl enable firewalld //设置 firewalld 为开机自启动
systemctl status firewalld //查看 firewalld 状态信息
firewall-cmd --state //查看 firewalld 状态信息
systemctl stop firewalld //停止 firewalld
systemctl disable firewalld //设置 firewalld 开机不自启动
firewalld命令工具
①firewall-cmd --get-default-zone 显示当前默认区域
②firewall-cmd --set-default-zone=home 设置默认区域为home
③ firewall-cmd --set-active-zones 显示当前正在使用的区域及对应网卡接口
④ firewall-cmd --get-zones 显示所有可用区域
⑤ firewall-cmd --get-zone-of-interface=ens33 显示ens33接口的绑定区域
⑥firewall-cmd --add-interface=ens33 --zone=home 为ens33接口绑定home区域
⑦ firewall-cmd --change-interface=ens33 --zone=public 更改ens33接口区域
⑧firewall-cmd --remove-interface=ens33 --zone=public 删除指定接口的区域
⑨firewall-cmd --list-ports 显示指定区域允许访问的所有端口号
firewall-cmd --add-ports=80/tcp 添加一个tcp80端口
firewall-cmd --remove-ports=80/tcp 删除一个tcp80端口
2.1.3/etc/firewalld/中的配置文件
2.2 区域管理
①显示当前系统中的默认区域
firewall-cmd --get-default-zone
②显示默认区域 中的所有规则
firewall-cmd --list-all
③显示当前正在使用的区域及其对应的网卡接口
firewall-cmd --get-active-zones
④设置默认区域
firewall-cmd --set-default-zone=home
2.3 服务管理
①查看默认区域内允许访问的所有服务
firewall-cmd --list- service
②添加httpd服务到public 区域
firewall-cmd --add-service-http --zone-public
③ 查看public区域E配置规则
firewall-cmd --list-all --zone=public
④删除public 区域的httpd服务
firewall-cmd --remove -service=http --zone-public
⑤同时添加httpd、https 服务到默认区域,设置成永久生效
firewall-cmd --add-service=http --add-service=https --permanent
firewall-cmd
--add-service={http, https, ftp}
--zone=internal
firewall-cmd --reload .
firewall-cmd --list-all
#添加使用--permanent选项表示设置成永久生效,需要重新启动firewalld服务或
执行firewall-cmd --reload命令
重新加载防火墙规则时才会生效。若不带有此选项,表示用于设置运行时规则,但是
firewall-cmd --runtime-to-permanent:
将当前的运行时配置写入规则配置文件中,使之成为永久性配置。
2.4 端口管理
①允许TCP的443端口到internal 区域
firewall-cmd --zone-internal --add-port=443/tcp
firewall-cmd --list-all --zone=internal
②从internal 区域将TCP的443端口移除
firewall-cmd --zone=internal -- remove-port-443/tcp
③允许UDP的2048~2050端口到默认区域
firewall- cmd --add-port=2048-2050/udp
firewall-cmd --list-all
总结
firewalld的配置主要是九大区域:block 、dmz 、drop、 external 、home、 internal、 public 、trusted 、work
firewalld 的防火墙配置方法有:
①firewall-config(图形化)
②firewall-cmd(命令方式)