启用macOS防火墙的Stealth模式可使设备对端口扫描隐身,需依次开启防火墙并勾选该选项、用pfctl验证规则、禁用共享服务、最后用nmap验证所有端口显示filtered且ping超时。

如果您希望 macOS 系统对外隐藏所有未主动响应的网络连接请求,防止端口扫描探测到本机开放状态,则需启用防火墙的 Stealth 模式。以下是配置该模式及确保端口隐身生效的具体步骤:
一、通过系统设置启用防火墙并开启 Stealth 模式
macOS 内置防火墙提供 Stealth 模式选项,启用后系统将不响应任何未经允许的入站连接请求(包括 ICMP ping 和 TCP SYN 探测),使设备在网络中表现为“不可见”。该模式依赖于防火墙服务整体开启,并需手动勾选对应选项。
1、点击屏幕左上角苹果图标,选择“系统设置”。
2、在左侧边栏滚动到底部,点击“隐私与安全性”。
3、在右侧找到并点击“防火墙”,随后点击右下角的“详情…”按钮(若防火墙处于关闭状态,请先点击“开启防火墙”)。
4、点击窗口左下角的锁形图标,输入管理员密码以解锁设置。
5、勾选“启用 Stealth 模式”复选框。
6、关闭窗口,系统将自动保存配置。
二、使用命令行工具 pfctl 验证并强制应用 Stealth 规则
macOS 底层使用 pf(Packet Filter)作为防火墙引擎,Stealth 模式实际通过加载特定 pf 规则实现。直接调用 pfctl 可绕过图形界面限制,验证当前规则是否生效,并在必要时重载规则集以确保端口完全隐身。
1、打开“终端”应用(可通过聚焦搜索或访达前往“应用程序 > 实用工具”)。
2、输入以下命令检查 pf 是否已启用:
sudo pfctl -s info
3、若输出中显示"Status: Enabled"且"Rules loaded: 1"或更高数值,则规则已加载。
4、执行以下命令确认 Stealth 相关规则是否存在:
sudo pfctl -s rules | grep "block in quick on en"
5、如无输出或需强制刷新,运行:
sudo pfctl -f /etc/pf.conf
6、再次运行第4步命令,应可见含"block in log quick on en0 inet proto { tcp, udp } to any port { 1:65535 }"的规则行(具体接口名可能为 en0/en1/utun0)。
三、禁用共享服务避免端口意外暴露
即使 Stealth 模式开启,部分系统共享服务(如文件共享、远程登录、屏幕共享)仍可能在后台监听端口并响应探测。这些服务会覆盖防火墙默认策略,导致端口隐身失效。必须逐一检查并关闭非必要共享功能。
1、返回“系统设置” > “隐私与安全性” > “防火墙”,点击“防火墙选项…”。
2、查看列表中所有已启用的服务,对“文件共享”、“屏幕共享”、“远程登录”、“远程管理”、“DVD 或 CD 共享”等条目,逐个点击右侧的减号(–)移除。
3、返回系统设置主界面,点击左侧“通用”,再点击右侧“共享”。
4、确保“共享”开关处于关闭状态;若已开启,请点击左上角“X”退出共享设置。
5、重启 Mac 以确保所有共享进程彻底终止。
四、使用 nmap 进行本地端口隐身验证
Stealth 模式是否真正生效,需通过外部扫描工具验证。nmap 是标准端口扫描工具,可在同一局域网内另一台设备上运行,检测目标 Mac 是否响应 SYN 请求或 ICMP ping,从而确认端口是否处于“隐身”状态。
1、在另一台 macOS 或 Linux 设备上打开终端,安装 nmap(如未安装):
brew install nmap(macOS)或 sudo apt install nmap(Ubuntu)。
2、获取目标 Mac 的局域网 IP 地址:在目标 Mac 的“系统设置 > 网络”中查看已连接接口的 IPv4 地址。
3、执行隐蔽扫描命令:
nmap -sS -Pn -T4 [目标IP](-sS 表示 SYN 扫描,-Pn 跳过主机发现)。
4、观察输出结果:若所有端口均显示为"filtered"而非 "open" 或 "closed",且无 ICMP 响应,则 Stealth 模式生效。
5、额外验证 ping 响应:
ping -c 4 [目标IP],若全部“Request timeout”,表明 ICMP 隐身成功。










