Linux系统- firewall-cmd的使用详解

1 引言

firewalld是Red Hat Enterprise Linux 7中用于管理主机级别防火墙的默认方法。firewalld通过firewalld.service systemd服务来启动,可使用低级别的iptables、ip6tables和ebtables 命令来管理 Linux 内核 netfilter 子系统。
firewalld.service 和 iptables.service 以及 ip6tables.service 和 ebtables.service 服务彼此冲突。 为了防止意外启动其中一个*tables.service 服务(并擦除流程中任何正在运行的防火墙配置), 使用 systemctl 将其屏蔽是一种不错的做法
例:vim mask.sh
#!/bin/bash
for SERVICE in iptables ip6tables ebtables do
systemctl mask ${SERVICE}.service
done

2 firewall区域介绍

firewalld 将所有传入流量划分成区域,每个区域都具有自己的一套规则。为检查哪个区 域用于传入连接,firewalld 使用以下逻辑,第一个匹配的规则胜出:
1.如果传入包的源地址与区域的某个源规则设置相匹配,该包将通过该区域进行路由
2.如果包的传入接口与区域的过滤器设置匹配,则使用该区域
3.否则将使用默认区域。默认区域不是单独的区域,而是指向系统上定义的某个其他区域
除非被管理员 NetworkManager 配置所覆盖,否则,任何新网络接口的默认区域都将设 置为 public 区域。

  • firewalld 随附了一些预定义区域,每个区域都有自己指定的用途:

1.trusted
允许所有传入流量
2.home
除非与传出流量相关,或与 ssh、mdns、ipp-client、samba-client 或 dhcpv6-client 预定义服务匹配,否则拒绝传入流量
3.internal
除非与传出流量相关,或与 ssh、mdns、ipp-client、samba-client 或 dhcpv6-client 预定义服务匹配,否则拒绝传入流量(一开始与 home 区域相同) 4.work
除非与传出流量相关,或与 ssh、ipp-client 或 dhcpv6-client 预定义服务匹配,否则拒绝 传入流量。
5.public
除非与传出流量相关,或与 ssh 或 dhcpv6 预定义服务匹配,否则拒绝传入流量。新添加的网络接口的默认区域。
6.external
除非与传出流量相关,或与 ssh 预定义服务匹配,否则拒绝传入流量。通过此区域转发的 IPv4 传出流量将进行伪装,以使其看起来像是来自传出网络接口的 IPv4 地址。
7.dmz
除非与传出流量相关,或与 ssh 预定义服务匹配,否则拒绝传入流量。 8.block
除非与传出流量相关,否则拒绝所有传入流量。
9.drop
除非与传出流量相关,否则丢弃所有传入流量(甚至不产生包含 ICMP 错误的响应)

3 管理firewall

管理 firewalld 可以通过以下三种方式
1.使用命令行工具:firewall-cmd
2.使用图形工具:firewall-config
3.使用/etc/firewalld 中的配置文件 注:大部分情况下,不建议直接编辑配置文件,但在使用配置管理工具时,以这种方法复制 配置会很有用

4 使用 firewall-cmd 管理 firewalld

firewall-cmd 可以执行 firewall-config 能够执行的相同操作。在使用 firewall-cmd 命令时,如果未指定–permanent 选项,则所有命令都作用于运行时配置。–zone=用来指定所 影响的区域,如果未指定–zone=参数,则将使用默认区域。
配置防火墙时,管理员如果使用–permanent 参数更改配置,则需要使用 firewall-cmd --reload 来使更改生效,如果更改可能诱发危险,则可以不指定–permannent 参数,使更改 仅在运行状态下生效。如果需要指定某些更改在一定的时间后自动删除,从而防止意外锁定 某个系统,可以使用–timeout=

  • firewall-cmd 相关命令

1.–get-default-zone
查询当前默认区域
2.–set-default-zone=
设置默认区域,此命令会同时更改运行时配置和永久配置。
3.–get-zones
列出所有可用区域
4.–get-services
列出所有预定义服务
5.–get-active-zones
列出当前正在使用的所有区域(具有关联的接口或源)及其接口和源信息
6.–add-source= [–zone=]
将来自 IP 地址或网络/子网掩码的所有流量路由到指定区域。如果未提供–zone=
选项,则将使用默认区域。
7.–remove-source= [–zone=]
从指定区域中删除来自路由来自 IP 地址或网络/子网掩码的所有流量的规则。如果未提供–zone=选项,则将使用默认区域。
8.–add-interface= [–zone=]
将来自的所有流量路由到指定区域。如果未提供–zone=选项,则将使用默认 区域
9.–change-interface=[–zone=] 将接口与而非当前区域关联。如果未提供–zone 选项,则将使用默认区域
10.–list-all [–zone=] 列出的所有已配置接口、源、服务和端口。如果未提供–zone=选项,则将使用默认区域
11.–list-all-zones
检索所有区域的所有信息(接口、源、端口、服务等等)
12.–add-service= 允许到的流量,如果未提供–zone=选项,则将使用默认区域
13.–add-port=<PORT/PROTOCOL> 允许到<PORT/PROTOCOL>端口的流量。如果未提供–zone=选项,则将使用默认区域
14.–remove-service= 从区域的允许列表中删除。如果未提供–zone=选项,则将使用默认区域。
15.–remove-port=<PORT/PROTOCOL> 从区域的允许列表中删除<PORT/PROTOCOL>端口。如果未提供–zone 选项,则将使用默
认区域。
16.–reload
丢弃运行时配置并使用持久配置 例:将默认区域设置为 dmz
firewall-cmd --set-default-zone=dmz
来自 192.168.0.0/24 网络的所有流量都分配给 internal 区域
firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24 在 internal 区域上打开用于 mysql 的网络端口
firewall-cmd --permanent --zone=internal --add-service=mysql
使永久配置生效
firewall-cmd --reload

5 firewalld 配置文件

firewalld 配置文件在/etc/firewalld 和/usr/lib/firewalld。如果名称相同的配置文件同时存储 在两个位置中,则将使用/etc/firewalld 中的版本。这允许管理员覆盖默认区域和设置,而不 必担心其更改被软件包更新所擦除。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼刺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值