第 2 课,共 4 课 · 9 分钟
防火墙:状态过滤和 macOS 的选项
状态防火墙如何决定允许哪些内容通过、入站过滤和出站过滤之间的区别,以及 macOS 为每种过滤提供的工具。
防火墙的工作听起来很简单:让良好的流量通过,阻止不良的流量通过。有趣的部分是它如何决定以及在什么级别上决定。本课程介绍了状态过滤的概念,然后介绍了 macOS 提供的特定的、单独的工具,每个工具都在不同的层上工作。
状态过滤:记住对话
早期的“无状态”防火墙根据一组固定的规则单独检查每个数据包。相反,状态防火墙会跟踪开放连接,正如 Cloudflare 的网络术语表所描述的那样,“保存有关开放连接的信息并使用这些信息来分析传入和传出流量,而不是从头开始检查每个数据包”。实际上,这意味着状态防火墙可以有效地保持端口关闭,直到您发起的连接请求响应,然后让特定的回复返回,而不向其他任何东西打开端口。目前使用的几乎所有消费者和操作系统防火墙(包括 macOS 的防火墙)都是有状态的。
入站与出站过滤
入站过滤控制从外部未经邀请到达计算机的连接:某人或某物试图访问其上运行的服务。出口(出站)过滤控制机器本身或机器上的应用程序尝试向外建立的连接。两者的重要性不同。入站过滤首先阻止机器被访问和探测。出现问题后,出口过滤很重要:进入计算机的有害软件仍然需要打电话回家、接收指令或发送数据,而其中每一个都需要出站连接。一台具有强大入站防火墙且根本没有出口过滤的计算机仍然可能泄漏其上的所有内容,一次一个出站连接。
macOS 实际为您提供了什么
| 工具 | 层 | 方向 | 笔记 |
|---|---|---|---|
| 应用防火墙 | 每个应用程序,在系统设置 → 网络 → 防火墙中 | 入境 | 决定每个应用程序是否可以接受传入连接;不过滤应用程序向外发送的内容。在这个网站的 macOS 强化课程中包含了检查它的命令。 |
| pf(数据包过滤器) | 内核级包过滤,继承自BSD | 两者皆有,基于规则 | Apple 在内部使用的功能强大的通用防火墙(例如用于 Internet 共享),为管理员记录在 pfctl 和 pf.conf 手册页中,而不是在图形设置窗格中。手写的 pf 规则是传统的 BSD 防火墙,而不是具有支持页面的 Apple 产品,并且 macOS 没有正式记录编辑它们以供最终用户强化。 |
| 网络扩展内容过滤器 | 应用程序级别,通过 Apple 的 NetworkExtension 框架 | 出站(以及给定过滤器的流的入站) | 第三方应用程序在用户许可的情况下用于检查或阻止每个应用程序或每个域的网络流量的框架;这使得 macOS 上的出站、每个应用程序防火墙成为可能,而不仅仅是入站。 |
对该表的实际解读是,macOS 内置的受支持的防火墙(应用程序防火墙)很好地覆盖了入站连接,但没有说明什么离开了机器。 pf 从技术上讲可以做到这两点,但它是一个基于脚本的低级工具,旨在帮助管理员轻松编辑配置文件并推理规则顺序,而不是本课程将介绍的配置,因为手写规则集中的错误可能会默默地导致无法打开或完全锁定网络访问,并且 Apple 不会像应用程序防火墙那样将其视为一流的受支持的最终用户设置。发布现成的 pf 规则集或引入第三方 IP 阻止列表的脚本的社区强化指南比本课程建议的更进一步:这些列表需要由某人信任并不断更新,并且损坏的更新可能会中断连接,并且没有明确的错误消息。
这一差距是一个仅限入站的内置防火墙,没有简单、受支持的方式来查看或控制每个应用程序的出站连接,而这正是苹果网络扩展框架的存在,旨在让第三方开发人员在安装时获得用户的明确许可来填补这一空白。
要点
- 有状态防火墙跟踪开放连接并允许您发起的连接返回流量,而无需根据固定规则列表检查每个数据包。
- 入站过滤可阻止从外部访问机器;一旦机器上已有某些内容并尝试向外通信,出口(出站)过滤就很重要。
- macOS 应用程序防火墙会过滤每个应用程序的入站连接;它不过滤出站流量。
- `pf` 是 macOS 内部使用的强大的内核级 BSD 防火墙,但它不像应用程序防火墙那样是受支持、记录在案的最终用户强化设置。
- Apple 的网络扩展框架允许第三方应用程序提供每个应用程序的出站过滤,这是内置防火墙留下的空白。
自我检测
1. 有状态防火墙与简单的无状态数据包过滤器有何不同?
- 它默认阻止所有流量,无一例外
- 它跟踪开放连接并使用该上下文来允许预期的返回流量 — 正确。
- 它仅适用于 Wi-Fi 网络
- 它加密所有网络流量
状态防火墙会记住打开连接的状态,而不是单独判断每个数据包,这使它们可以安全地允许回复您启动的连接。
2. 考虑到强大的入站防火墙,为什么出口(出站)过滤很重要?
- 入站过滤是否强大并不重要
- 因为机器上已有的软件仍然需要出站连接来发送数据或接收指令 — 正确。
- 出站连接始终安全
- 只对网络服务器重要
入站过滤会阻止未经请求的连接到达计算机,但一旦计算机上已运行某些内容并尝试向外通信,则不会执行任何操作。
3. macOS 应用程序防火墙不做什么?
- 决定应用程序是否可以接受传入连接
- 过滤应用程序建立的出站连接 — 正确。
- 基于每个应用程序工作
- 无需任何附加软件即可运行
应用程序防火墙仅限入站;控制应用程序向外发送的内容需要一种不同的机制,例如基于苹果网络扩展框架构建的机制。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- Cloudflare Learning: What is a firewall?
- Apple Support: Block connections to your Mac with a firewall
- Apple Developer: Network Extension framework
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。