第 4 课,共 5 课 · 9 分钟
服务、共享和开放端口
关闭不使用的共享服务,查看实际侦听连接的内容,然后打开应用程序防火墙。
您留下的每个共享服务都是在 Mac 上运行的小型网络服务器,等待有人连接到它。大多数人为了一项任务只打开一次,就永远不会关闭它。本课程介绍查找并关闭这些防火墙,然后在顶部添加防火墙作为第二层。
共享服务
在当前的 macOS 上,共享服务位于“系统设置”→“常规”→“共享”:文件共享、屏幕共享、远程登录 (SSH)、远程管理、媒体共享、内容缓存、互联网共享、打印机共享以及其他一些功能,具体取决于 Mac。默认情况下,每个功能都是关闭的,并且会一直保持关闭状态,直到您出于特定原因将其打开,例如将文件发送到同一网络上的另一台 Mac 或让助手远程连接。
- 如果您曾经打开文件共享以在两台 Mac 之间移动文件,或打开屏幕共享以获取某人的帮助,请在完成后从同一共享窗格将其重新关闭。
- 远程登录可打开对 Mac 的 SSH 访问。 Apple 自己的文档明确表示“允许远程登录 Mac 会降低其安全性”。除非您特别需要从其他地方连接到此 Mac,否则请将其关闭。
- 如果其中几个显示为打开状态,而您不记得打开过它们,则仅此一点就值得调查。
看到实际听到的内容
在系统设置中关闭共享服务会关闭苹果公开的开关,但其他软件(媒体服务器、开发工具、打印机驱动程序)可以在不询问的情况下打开自己的监听端口。 lsof(列出打开的文件,在 Unix 上包括网络套接字)可以显示当前等待传入 TCP 连接的每个进程:
lsof -iTCP -sTCP:LISTEN -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rapportd 1442 admin 15u IPv4 ... 0t0 TCP *:64654 (LISTEN)
ControlCe 1775 admin 9u IPv4 ... 0t0 TCP *:7000 (LISTEN)每一行是一个正在侦听一个端口的进程:命令名称、进程 ID、绑定到的地址(* 表示每个网络接口,127.0.0.1 表示仅本地连接)以及冒号后的端口号。 -n 和-P 告诉lsof 显示原始地址和端口号,而不是解析它们,这样更快、更清晰。仅绑定到 127.0.0.1 的端口只能从 Mac 本身访问;在网络允许的情况下,可以从其他设备访问绑定到 * 的端口。有些条目将是Apple自己的后台服务(例如AirDrop/Handoff助手rapportd,或控制中心的AirPlay接收器);值得质疑的是您安装的应用程序,您根本没想到会被监听。
应用程序防火墙
应用程序防火墙位于系统设置 → 网络 → 防火墙中,是关闭未使用的服务之上的第二层:它不是通过端口号进行阻止,而是决定每个应用程序是否可以接受传入连接。苹果将其描述为“当您连接到互联网或网络时,保护 Mac 免受其他计算机发起的不必要的接触”,同时仍然允许您允许特定的应用程序或服务通过。
| 防火墙选项 | 它的作用 |
|---|---|
| 阻止所有传入连接 | 阻止与非必要服务和应用程序的传入连接,只留下 Mac 查找网络上其他计算机所需的基本服务。 |
| 自动允许签名软件 | 允许由有效证书签名的内置或下载的应用程序无需询问即可接收传入连接。关闭此功能意味着更多的提示,但更少的静默异常。 |
| 启用隐身模式 | 停止 Mac 响应探测请求,包括 ping (ICMP),否则该请求可用于检测它是否存在于网络上。 |
您可以从终端检查防火墙的当前状态,而无需更改任何内容:
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
Firewall is enabled. (State = 1)
/usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
Firewall stealth mode is off打开防火墙和启用隐身模式都需要管理员密码;上面的只读 --get 命令不会改变任何内容。
要点
- 共享服务(文件共享、屏幕共享、远程登录等)位于“系统设置”→“常规”→“共享”中,默认情况下处于关闭状态,并且应在完成特定任务后重新关闭。
- `lsof -iTCP -sTCP:LISTEN -n -P` 列出当前侦听传入 TCP 连接的每个进程,以便您可以发现您不希望打开的端口。
- 绑定到 `127.0.0.1` 的端口仅是本地的;绑定到`*` 的一个可能可以从网络到达。
- 应用程序防火墙控制每个应用程序的传入连接;隐身模式会阻止 Mac 响应 ping 等探测。
- 应用程序防火墙不会过滤传出连接。
自我检测
1. `lsof -iTCP -sTCP:LISTEN -n -P` 向您展示了什么?
- Mac 上打开过的每个文件
- 当前正在侦听传入 TCP 连接的每个进程及其端口 — 正确。
- 被阻止的 IP 地址列表
- Mac 的 Wi-Fi 密码
这种精确的标志组合可以过滤 `lsof` 到具有打开的、侦听 TCP 套接字的进程,显示原始地址和端口号。
2. 显示为`127.0.0.1:5432`的监听端口是什么意思?
- 可以通过互联网上的任何设备访问它
- 只能从 Mac 本身访问它 — 正确。
- 这是一个蓝牙服务
- 已被防火墙拦截
127.0.0.1 是环回地址:到它的连接只能来自同一台机器。
3. macOS 应用程序防火墙主要控制什么?
- 应用程序与互联网建立的传出连接
- Mac 上的应用程序和服务的传入连接 — 正确。
- 蓝牙配对请求
- 可以访问哪些网站
应用程序防火墙决定每个应用程序是否允许未经请求的传入连接;它不会过滤应用程序发送的内容。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- Apple Support: Block connections to your Mac with a firewall
- Apple Support: Change Firewall settings on Mac
- Apple Support: Allow a remote computer to access your Mac (Remote Login)
- Apple Support: Set up file sharing on Mac
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。