macos stealth 模式仅在防火墙启用、stealth 开关勾选且无服务监听端口时生效,需验证 pf 规则加载并关闭所有共享及后台监听服务,再通过局域网外部设备实测端口是否全为 filtered。

MacOS 的 Stealth 模式本身不单独“开启端口隐身”,它只是让系统对未授权入站请求完全静默——不回 ping、不发 RST、不暴露端口状态。但这个效果只有在防火墙全局启用 + Stealth 开关勾选 + 无服务主动监听端口时才真正生效。很多人开了 Stealth 却仍被扫到端口,问题几乎都出在共享服务或后台应用监听上。
确认防火墙已启用且 Stealth 模式实际加载
图形界面勾选“启用 Stealth 模式”只是写入配置,不保证规则已生效。macOS 底层用 pf 实现,必须验证规则是否载入:
- 终端执行
sudo pfctl -s info,确认输出含Status: Enabled - 再运行
sudo pfctl -s rules | grep "block in quick",应看到类似block in quick on en0 inet proto { tcp, udp } to any port { 1:65535 }的规则(接口名可能是en0、en1或utun0) - 若无输出,说明 Stealth 规则未加载,需手动重载:
sudo pfctl -f /etc/pf.conf - 注意:
socketfilterfw --setstealthmode on命令只影响 GUI 状态显示,不操作pf规则,不能替代上面步骤
关闭所有可能暴露端口的共享服务
Stealth 模式无法掩盖正在监听的端口。只要某个服务(如文件共享、远程登录)在运行,它就会绑定端口并响应探测,Stealth 形同虚设:
- 进入“系统设置” > “隐私与安全性” > “防火墙” > “防火墙选项…”
- 逐个移除列表中的服务:点击“文件共享”、“屏幕共享”、“远程登录”、“远程管理”、“DVD 或 CD 共享”右侧的
–号 - 额外检查“通用” > “共享”面板,确保所有开关全关(AirDrop 设为“不允许任何人发现我”,AirPlay 关闭)
- 某些开发工具(如 Docker Desktop、VS Code 的 Remote-SSH 插件)也会监听端口,需在各自设置中禁用相关服务
验证端口是否真正隐身
别信界面显示,要用外部设备实测。本地 ping 或 nmap 扫自己没意义,因为回环和本机路由会绕过 pf:
- 从另一台局域网设备(比如手机连同一 Wi-Fi 的 Linux 虚拟机)执行:
ping—— 应超时无响应 - 再执行:
nmap -sS -Pn—— 应显示全部端口filtered(不是closed),且无服务指纹 - 如果某端口显示
open或closed,说明对应服务仍在监听,需回溯上一步排查 - 注意:
awdl0和llw0接口(AirDrop/AirPlay 底层)也广播设备存在,可临时禁用:sudo ifconfig awdl0 down
Stealth 模式最常被忽略的一点:它只管“入站探测”,不管“出站行为”。你主动访问网站、推送代码、同步 iCloud,这些流量照常发出;但只要后台没服务在监听,别人就扫不到你——这要求你持续清理共享服务和第三方监听行为,而不是开一次开关就一劳永逸。











