防火墙firewalld
firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter网络过滤子系统(属于内核态)来实现包过滤防火墙功能。firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具。它支持IPv4、IPv6防火墙设置以及以太网桥(在某些高级服务可能会用到,比如云计算),并且拥有两种配置模式:运行时配置与永久配置。
firewalld和iptables的区别
1.iptables主要是基于接口,来设置规则,从而判断网络的安全性。
firewalld是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置相类似。
2.iptables 在 /etc/sysconfig/iptables 中储存配置,
firewalld将配置储存在/etc/firewalld/(优先加载)和/usr/1ib/firewalld/(默认的配文件)中的各种XML文件里。
3.使用iptables 每一个单独更改意味着清除所有旧有的规则和从/etc/svsconfia/iptables 里读取所有新的规则。
使用firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld可以在运行时间内,改变设置而不丢失现行连接。
4.iptables 防火墙类型为静态防火墙 firewalld 防火墙类型为动态防火墙
firewalld区域的概念
firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表。
firewalld预定义的9个区域
区域 | 说明 |
---|---|
trusted | 允许所有流量 |
home | 拒绝除和传出流量相关的,以及ssh,mdsn,ipp-client,samba-client,dhcpv6-client预定义服务之外其它所有传入流量 |
internal | 和home相同 |
work | 拒绝除和传出流量相关的,以及ssh,ipp-client,dhcpv6-client预定义服务之外的其它所有传入流量 |
public | 拒绝除和传出流量相关的,以及ssh,dhcpv6-client预定义服务之外的其它所有传入流量,新加的网卡默认属于public zone |
external | 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量,属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。 |
dmz | 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量 |
block | 拒绝除和传出流量相关的所有传入流量 |
drop | 拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应) |
一个区域的安全程度取决于管理员在此区域中设置的规则。区域如同进入主机的安全门,每个区域都具有不同限制程度的规则,只会允许符合规则的流量传入。可以根据网络规模,使用一个或多个区域,但是任何一个活跃区域至少要管理源地址或接口,默认情况下public是默认区域,包含所有接口(网卡)
firewalld常用命令
- firewall-cmd 格式
选项 | 说明 |
---|---|
–get-zones | 列出所有可用区域 |
–get-default-zone | 查询默认区域 |
–set-default-zone= | 设置默认区域 |
–get-active-zones | 列出当前正使用的区域 |
–add-source=[–zone=] | 添加源地址的流量到指定区域,如果无–zone= 选项,使用默认区域 |
–remove-source= [–zone=] | 从指定区域删除源地址的流量,如无–zone= 选项,使用默认区域 |
–add-interface=[–zone=] | 添加来自于指定接口的流量到特定区域,如果无–zone= 选项,使用默认区域 |
–change-interface=[–zone=] | 改变指定接口至新的区域,如果无–zone= 选项,使用默认区域 |
–add-service= [–zone=] | 允许服务的流量通过,如果无–zone= 选项,使用默认区域 |
–add-port=<PORT/PROTOCOL>[–zone=] | 允许指定端口和协议的流量,如果无–zone= 选项,使用默认区域 |
–remove-service= [–zone=] | 从区域中删除指定服务,禁止该服务流量,如果无–zone= 选项,使用默认区域 |
–remove-port=<PORT/PROTOCOL>[–zone=] | 从区域中删除指定端口和协议,禁止该端口的流量,如果无–zone= 选项,使用默认区域 |
–reload | 删除当前运行时配置,应用加载永久配置 |
–list-services | 查看开放的服务 |
–list-ports | 查看开放的端口 |
–list-all [–zone=] | 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无–zone= 选项,使用默认区域 |
示例:
#查看默认zone
firewall-cmd --get-default-zone
#默认zone设为dmz
firewall-cmd --set-default-zone=dmz
#在internal zone中增加源地址192.168.0.0/24的永久规则
firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24
#在internal zone中增加协议mysql的永久规则
firewall-cmd --permanent --zone=internal --add-service=mysql
#加载新规则以生效
firewall-cmd --reload