防火墙03 — 了解Firewalld

简述

前面文章《防火墙 01 — 基本概念》中我们提到:

GNU/Linux 防火墙由两部分组成,netfilter 和 iptables(Centos 6 及以下的版本使用iptables,Centos 7/8/9 使用 firewalld )。netfilter 是基于内核的部分,管理员无法直接修改里面的内容,所以需要一个工具来修改里面的内容,也就是 iptables 或者 firewalld,两者结合才是完整的防火墙功能。

在微软 Windows 的操作系统中,当主机插入了网线,接着便会弹出对话框问用户网络所处的位置是家庭、工作单位或者公共场所,不同的位置则代表着不同严格程度的防火墙。Firewalld 借鉴了 Windows 的防火墙理念,只不过在 Firewalld 中的位置被称为 「区域」(zone)

zone 可理解为不同的房间,一个 zone 就是一个房间,房间里存放的是数据报文过滤规则。使用 systemctl start firewalld.service 将 firewalld.service 启动,接着键入 firewall-cmd --list-all-zones 查看 9 个预定义的 zone:

相关命令与选项

Firewalld 既可以在命令行的交互中使用与配置,也可在 GUI 环境中进行交互与配置。本文所有的配置均在命令行中进行使用,也就是 firewall-cmd 命令。

该命令的语法为 —— firewall-cmd [OPTIONS...]

状态选项:

--state – Firewalld 的状态
--reload – 重载 Firewalld
--check-config – 检查配置文件

永久生效选项:

--permanent – 让命令行的配置永久生效

区域选项:

--get-default-zone – 输出默认 zone
--set-default-zone=<zone> – 设置默认 zone
--get-active-zones – 输出当前活跃的 zone
--list-all-zones – 列出所有 zone 以及启用的内容
--list-all – 列出当前活跃 zone 所启用的内容
--get-zones – 显示可用的 zone
--new-zone=<zone> – 添加一个 zone
--delete-zone=<zone> – 删除一个 zone
--zone=<zone> – 指定一个 zone 来查询或设置,不键入则使用默认 zone

services 服务相关的选项:

--get-services – 显示预定义的服务
--add-service=<service> – 为 zone 添加服务
--remove-service=<service> – 删除 zone 中的服务
--list-services – 显示 zone 中添加的服务

端口相关选项:

--add-port=<端口号/协议> – 为 zone 添加端口以及对应的协议
--remove-port=<端口号/协议> – 从 zone 中删除端口
--list-ports – 列出为 zone 添加的端口

网卡相关选项:

--get-zone-of-interface=<interface> – 查看对应的网卡属于哪个 zone
--add-interface=<interface> – 绑定某个网卡到对应的zone
--remove-interface=<interface> – 删除区域中某个绑定的网卡
--change-interface=<interface> – 更改某个网卡绑定的区域

源地址相关选项:

--add-source=<源地址> – 将源绑定到对应的zone,这里的源可以是ip地址,可以是网段,也可以是mac地址。
--remove-source=<源地址> – 移除 zone 中的源地址

其他:

-h – 帮助信息
--version – 版本

firewalld.service 服务相关

systemctl start firewalld.service – 启动 firewalld 服务
systemctl status firewalld.service -firewalld 服务状态
systemctl stop firewalld.service – 停止 firewalld 服务
systemctl restart firewalld.service – 重启 firewalld 服务
systemctl enable firewalld.service – firewalld 服务开机自启动

目录相关

主要是这两个目录:

/usr/lib/firewalld/ – 该目录下有几个子目录,子目录下是使用 xml 格式存放各种预定义的配置,不能被修改。

Shell > ls -l /usr/lib/firewalld/
total 40
drwxr-xr-x. 2 root root  4096 Sep 29 18:47 helpers
drwxr-xr-x. 2 root root  4096 Sep 29 18:47 icmptypes
drwxr-xr-x. 2 root root  4096 Sep 29 18:47 ipsets
drwxr-xr-x. 2 root root  4096 Sep 29 18:47 policies
drwxr-xr-x. 2 root root 20480 Sep 29 18:47 services
drwxr-xr-x. 2 root root  4096 Jan 23 20:44 zones

/etc/firewalld/ – 管理员定义的配置。一般是将 /usr/lib/firewalld/ 中的对应文件拷贝到相应目录,根据需求做适当的修改。两者的目录结构其实没有太多的区别

Shell > ls -l /etc/firewalld/ | grep -i ^d
drwxr-x---. 2 root root 4096 Sep 24 17:25 helpers
drwxr-x---. 2 root root 4096 Sep 24 17:25 icmptypes
drwxr-x---. 2 root root 4096 Sep 24 17:25 ipsets
drwxr-x---. 2 root root 4096 Sep 24 17:25 policies
drwxr-x---. 2 root root 4096 Sep 24 17:25 services
drwxr-x---. 2 root root 4096 Sep 24 17:25 zones

配置文件

指的是 /etc/firewalld/firewalld.conf 这个文件,其内容如下:

Shell > grep -v ^# /etc/firewalld/firewalld.conf

DefaultZone=public

CleanupOnExit=yes

CleanupModulesOnExit=yes

Lockdown=no

IPv6_rpfilter=yes

IndividualCalls=no

LogDenied=off

FirewallBackend=nftables

FlushAllOnReload=yes

RFC3964_IPv4=yes

AllowZoneDrifting=yes

未作任何更改的情况下,默认参数以及值如下:

DefaultZone=public – 默认区域,也就是你用 systemctl start firewalld.service 启动 firewalld 后的默认zone
CleanupOnExit=yes – 退出Firewalld 后,是否清除 Firewalld 的防火墙规则
Lockdown=no – 是否通过 lockdown-whitelist.xml 文件来限制程序,默认为no
IPV6_rpfilter=yes – IPv6 是否启用反向路径转发,默认yes。反向路径转发英文叫 URPF(Unicast Reverse Path Forwarding),是一种技术,作用是防止基于源地址欺骗的网络攻击
IndividualCalls=no – 官方的说法是使用默认值no,如果你要调试应用程序,则应该更改为yes
LogDenied=yes – 拒绝的数据报文是否添加到日志记录,可以的值有all、unicast、broadcast、multucast和off
FirewallBackend=nftables – 防火墙后端的实现程序,可以的值有 ntptables 和 iptables
RFC3964_IPv4=yes – 是否启用 4to6 目标地址来过滤 IPv6 数据报文
AllowZoneDrifting=yes – 较旧版本的 firewalld 中有个东西叫 「区域漂移」(zone drifting),允许数据报文进入到多个zone,这违反了基于zone的防火墙。出于安全因素考虑,最好给 no 值

Avatar photo

关于 陸風睿

GNU/Linux 从业者、开源爱好者、技术钻研者,撰写文档既是兴趣也是工作内容之一。Q - "281957576";WeChat - "jiulongxiaotianci"
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇