前言

centos7默许的防火墙是 firewall,代替了以前的 iptables。
firewall 运用更加方便、功用也更加强大一些。
firewalld 服务引入了一个信赖等级的概念来办理与之相相关的衔接与接口。它支撑 ipv4 与 ipv6,并支撑网桥,选用 firewall-cmd (command) 或 firewall-config (gui) 来动态的办理 kernel netfilter 的暂时或永久的接口规矩,并实时收效而无需重启服务。

firewalld防火墙

Firewalld供给了动态托管的防火墙,并支撑界说网络衔接或接口的信赖等级的网络/防火墙区域。它支撑IPv4,IPv6防火墙设置,以太网桥和IP集。运转时和永久装备选项分开。它还为服务或应用程序供给了一个接口,以直接增加防火墙规矩。

linux防火墙(firewalld)

相较于iptables防火墙而言,firewalld支撑动态更新技术并加入了区域(zone)的概念。简单来说,区域便是firewalld预先准备了几套防火墙战略调集(战略模板),用户能够依据出产场景的不同而选择适宜的战略调集,从而实现防火墙战略之间的快速切换。凭借带防火墙的D-Bus接口,服务,应用程序以及用户都能够轻松调整防火墙设置。该接口已完成,用于防火墙装备东西firewall-cmd,firewall-config和firewall-applet。

firewalld指定区域

区域 效果
trusted(信赖区域) 答应一切的传入流量。
public(公共区域) 答应与ssh或dhcpv6-client预界说服务匹配的传入流量,其他均回绝。是新增加网络接口的默许区域。
external(外部区域) 答应与ssh预界说服务匹配的传入流量其他均回绝。
home(家庭区域) 答应与ssh、mdns、samba-client或dhcpv6-client预界说服务匹配的传入流量,其他均回绝。
internal(内部区域) 默许值与home区域相同。
work(作业区域) 答应与ssh、dhcpv6-client预界说服务匹配的传入流量,其他均回绝
dmz(隔离区域也称非军事区域) 答应与ssh预界说服务匹配的传入流量,其他均回绝。
block(约束区域) 回绝一切传入流量。
drop(丢掉区域) 丢掉一切传入流量,而且不产生包括icmp的过错呼应。

在传统的iptables依据规矩的次序的匹配先后次序来多数据包进行处理,处理的动作基本上非黑即白这个逻辑,因而iptables的依据规矩列表的运转机制相对固化,缺少灵活性。而firewalld将传入的流量分类到由源IP和/或网络接口界说的区域中。每个区域都有的装备,能够依据指定的规范接受或回绝数据包。

firewalld数据流向

最终一个区域的安全程度是取决于办理员在此区域中设置的规矩。
区域好像进入主机的安全门,每个区域都具有不同约束程度的规矩,只会答应符合规矩的流量传入。
能够依据网络规模,运用一个或多个区域,可是任何一个活跃区域至少需求相关源地址或接口。
默许情况下,public区域是默许区域,包括一切接口(网卡)。

  • 若源地址相关到特定的区域,则履行该区域所指定的规矩
  • 若源地址未相关到特定的区域,则运用传入网络接口的区域 并履行该区域所指定的规矩
  • 若网络接口未相关到特定的区域,则运用默许区域并履行该 区域所指定的规矩

linux防火墙(firewalld)

iptables和firewalld的区别

firewalld 与 iptables 都是 linux 中防火墙的办理程序,但其实其角色主要为对于防火墙战略的办理,真实的防火墙履行者是位于内核中的netfilter

firewalld iptables
装备文件 /uer/lib/firewalld/和/etc/firewald/ /etc/sysconfig/iptables/
对规矩的修正 不需求悉数改写战略,不丢掉现行衔接 需求从头改写战略,丢掉链接
防火墙类型 动态防火墙 静态防火墙
不同点:
  • iptables 仅能经过指令行进行装备;而 firewalld 供给了图形接口,类似windows防火墙的操作方式
  • iptables 每一个单独更改意味着铲除一切旧的规矩,并从 /etc/sysconfig/iptables 中读取一切新的规矩;而 firewalld 在有规矩变动后,能够仅仅运转规矩中的不同之处,即在 firewalld 运转时间内,改变设置时能够不丢掉现行链接
  • iptables 的装备文件在 /etc/sysconfig/iptables 中;而 firewalld 的装备文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中
  • iptables 没有看护进程,并不能算是真实意义上的服务;而 firewalld 有看护进程
  • iptables 经过操控端口来操控服务,而 firewalld 则是经过操控协议来操控端口

区别

  • firewalld能够动态修正单条规矩,动态办理规矩集,答应更新规矩而不损坏现有会话和衔接。而iptables,在修正了规矩后必须得悉数改写才能够收效;
  • firewalld运用区域和服务而不是链式规矩;
  • firewalld默许是回绝的,需求设置今后才能放行。而iptables默许是答应的,需求回绝的才去约束;
  • firewalld本身并不具有防火墙的功用,而是和iptables相同需求经过内核的netfilter来实现。也便是说,firewalld和iptables相同,它们的效果都用于维护规矩,而真实运用规矩干活的是内核的netfilter。只不过firewalld和iptables的结果以及运用办法不相同!

firewalld是iptables的一个封装,能够让你更容易地办理iptables规矩。它并不是iptables的代替品,尽管iptables指令仍可用于firewalld,但主张firewalld时仅运用firewalld指令。

firewalld装备办法

指令办理与图形界面办理

firewall-config 图形化东西(出产环境一般只要字符界面,不运用这种办法)
firewall-cmd 指令行东西(出产环境中没有图形化界面,所以只能在指令行进行装备)

linux防火墙(firewalld)

firewalld会优先运用/etc/firewalld/(用户自界说的装备)文件中的装备,如若不存在其装备文件,则运用/usr/lib/firewalld/(默许装备文件,修正后如若恢复默许装备,可直接删去/etc/firewalld/中的装备)中的装备

指令办理
常用指令大全

默许区域
–get-default-zone 显现当时默许区域
–set-default-zone= 设置默许区域
–get-active-zones 显现当时正在运用的区域及其网卡接口
–get-zones 显现一切可用的区域
网络接口
–get-zone-of-interface=ens33 查看指定接口ens33绑定的区域
–zone= –add-interface= 为指定接口绑定区域
–zone= –change-interface= 为指定区域更改绑定的网络接口
–zone= –remove-interface= 为指定区域删去绑定的网络接口
源地址
–zone= –add-source=[/] 为指定源地址绑定区域
–zone= –change-source=[/] 为指定的区域更改绑定的源地址
–zone= –remove-source=[/] 为指定的区域删去绑定的源地址
icmp协议
–zone= –list-icmp-blocks 显现指定区域内拒接拜访的一切icmp类型
–zone= –add-icmp-block= 为指定区域设置答应拜访的某项icmp类型
–zone= –remove-icmp-block= 删去指定区域已设置答应拜访的某项icmp类型
firealld-cmd –get-icmptypes 显现一切icmp类型
服务端口办理
–zone= –list-service 显现指定区域内答应拜访的一切服务
–zone= –add-service= 为指定的区域设置答应拜访的某项服务
–zone= –remove-service= 删去指定区域已设置的答应拜访的某项服务
–zone= –list-ports:x 显现指定区域内答应拜访的一切端口号
–zone= –add-port=[-portid]/ 为指定的区域设置答应拜访的某个端口号/某段端口号(包括协议)
–zone= –remove-port=[-portid]/ 删去指定区域已设置答应拜访的端口号(包括协议)

firewalld装备模式

运转时和永久装备的分离使得能够在运转时进行评价和测试。运转时装备仅在下一次从头加载和从头启动服务或从头引导体系之前才有用。然后,将再次加载永久装备。运用运转时环境,能够将运转时用于仅在有限时间内激活的设置。如果运转时装备已用于评价,而且已完成且能够正常运转,则能够将此装备保存到永久环境中。

iptables在/etc/sysconfig/iptables-config文件中存储装备。firewalld在/etc/firewalld/下存储XML装备文件。

暂时装备

显现更改默许区域

linux防火墙(firewalld)

linux防火墙(firewalld)

增加(add)修正(change)删去(remove)指定网卡源地址

linux防火墙(firewalld)

linux防火墙(firewalld)

linux防火墙(firewalld)

显现、增加、删去指定区域的某个服务;增加、删去某个协议端口

linux防火墙(firewalld)

设置SNAT规矩和DNAT规矩

linux防火墙(firewalld)

永久装备

永久装备不当即收效,需求重启服务或从头加载后才收效。重启服务或从头加载时会中止现有衔接。下次重启后不会丢掉,永久存在。

firewall-cmd --add-service={service} --permanent
firewall-cmd --reload
增加运用 --permanent选项表示设置成永久收效,需求从头启动 firewalld 服务或履行firewall-cmd --reload 指令从头加载后才收效
把运转时装备转换为永久装备
firewall-cmd --runtime-to-premanent

linux防火墙(firewalld)

运用iptables时每一个规矩的更改意味着要铲除一切旧的规矩,然后从/etc/sysconfig/iptables-config装备文件中读取一切新的规矩并载入。但是运用firewalld能够暂时的将新增加的规矩载入运用,不会像iptables相同丢掉衔接。