VPN 客户端弹出的密码提示看上去可以互换,实际并非如此。相似的对话框背后藏着四种截然不同的操作:安装时向受保护位置写入文件、添加或更改网络配置、激活承载流量的系统扩展,以及遵循管理服务器已经设定的策略。四者的责任方不同、影响范围不同,验证是否生效的方法也不同。把你看到的提示与其中一种对上号,就是全部功课。

三种不同的授权看起来一模一样

安装程序授权是最简单的情形:安装包要写入标准用户无法修改的目录,macOS 于是要求管理员凭据来放行。系统在这里判断的不是软件是否安全,而是你是否有权写入该位置。这也解释了为什么安装包可以装得干干净净却毫无用处:安装授权并不说明这段代码之后是否被允许运行。装好之后,应用可能还需要第二次授权,才能对网络产生影响。

网络配置授权管的是系统连接列表的改动。添加 VPN 服务,或者更改网络管理员配置过的设置,都需要提权,因为这些定义会影响机器上的每一个账户。这项授权给的是配置权限,而不是流量权限。

扩展授权才是决定数据包如何传输的那一个。现代客户端会安装系统扩展,由 macOS 载入系统;在激活之前,macOS 要求你在「隐私与安全性」或「登录项与扩展」里明确做出决定。第四种情况是受管理的 Mac:策略已经预先批准了该扩展,用户根本看不到对话框。

每种授权实际改变了什么

安装程序改动磁盘上的文件,除残留物之外,其后果随文件删除而结束。网络配置添加一条服务定义,它会出现在连接列表里,还可能被按需规则重新激活。扩展授权改变的是系统将载入并持续运行的代码,这也是它在某些流程中能挺过卸载可见应用的原因。删除应用包并不总会删除它的扩展,而留下的扩展会保留其网络权限。

这个区别可以预测症状。装上了却始终连不上,通常意味着扩展在哪里都没有被批准;能连上但设置一到下次变更就回退,通常意味着这一定义由管理策略掌管。

签名与发布者决定答案

批准之前,先看清是谁签的,而不是对话框图标暗示了什么。两项本地检查就足以看出签名机构,以及系统的评估能否在这台机器上通过。

codesign -dv --verbose=2 /Applications/ExampleVPN.app
spctl -a -vv /Applications/ExampleVPN.app

未签名或未经公证的安装包并不自动等于恶意,但它值得比来自你预期厂商的已签名版本更谨慎的对待。通过消息而不是厂商自家网站收到的安装包,就属于答案干脆是「不」的那一类。

把团队标识符与厂商公开的身份信息作比对,而不是相信应用的显示名称,因为名称很容易被复用,标识符则不会。如果厂商在安装指南里公布了该标识符,那一页就是比对的参照,也是发现不一致时应当报告的地方。来自转售商、重新打包的版本,或者论坛上的便携副本,比同一厂商的已签名下载更值得怀疑。

当策略掌握决定权

在公司配发的 Mac 上,管理员可能早已做出决定。管理描述文件可以下发 VPN 定义、预先批准扩展,并把连接锁定到无法移除。在这种安排里,要求你输入密码,往往是要你推翻一个本来就不由你做的决定。

为了强行完成安装而降低启动安全性或解除管理,会为了一个临时问题永久改变这台机器的威胁模型。这种交换很少是有意识做出的;它通常发生在照着论坛帖子操作的时候。改为向管理员索要受支持的路径,可能只是重发一次描述文件,或者在服务器端批准该扩展。如果管理员无法批准,那就是结论本身,而不是需要绕开的障碍。

授权之后确认状态

在获得授权的批准之后,要核实系统认为的状态,而不是客户端声称的状态。扩展列表无需任何第三方工具,就会报告激活状态。

systemextensionsctl list

显示为已激活的条目属于你先前核对过的团队标识符;显示为已终止、等待用户批准的条目,则解释了一个能启动却从不承载流量的客户端。如果每次尝试后提示都会再次出现,请记录确切的消息和客户端版本,因为反复出现的授权通常意味着扩展在被替换,而旧的没有先停用,这属于支持案例,而不是密码问题。致电支持前先记下版本,因为修复可能已经存在于更新的构建中,对话也会从那里开始。

相关文章