更换泄露的 VPN 密钥:服务器必须做什么
删除文件并不会改变服务器上的任何东西。更换意味着一套可用的新身份,以及网关真正拒绝的旧身份,顺序就是如此。
一台带有客户端密钥的笔记本电脑丢失了,第一步通常是删除本地副本。这并没有改变服务器上的任何东西,服务器仍然持有一项授权,会接受那把密钥,直到有人把它移除。更换是两项操作,只有第二项才涉及旧凭据。
本地副本不是权威
VPN 凭据之所以被接受,是因为服务器端的配置这样规定。对证书而言,这意味着证书能链到受信任的签发者,且不在网关查阅的吊销列表中。对 WireGuard 而言,这意味着对端的公钥出现在接口配置中。删除客户端上的文件只是去掉了一份秘密的副本,而接受规则原封未动。
这正是被盗密钥在显而易见的清理之后仍然可用的原因,也是即使装好新配置、事件仍显得没有解决的原因。
从服务器的规则出发,再向外推进到客户端。
证书:决定权在服务器
通过签发者自己的流程签发替换证书,让新身份被记录在案,然后用签名吊销撤回旧证书。网关必须配置为查询该吊销来源,并且必须重新加载它,否则文件留在磁盘上,而隧道仍在接受旧序列号。活动会话也可能一直存活到重新协商,所以要安排一次重连。
确认替换对目标应用可用,再通过经批准的程序确认被退役的证书不再建立访问。
这是两项不同的测试,两者都必需。RFC 5280 定义了网关所依赖的证书与吊销语义。
WireGuard:对端公钥就是身份
WireGuard 没有证书层:对端公钥就是身份,服务器的 allowed-ips 条目就是授权。从接口配置中移除旧对端就是吊销,它会立即对新握手生效。
现有会话会在下一次握手失败时结束,通常是在几分钟之内,而不是立刻结束。
通过你会托付密码的渠道分发新配置,因为私钥就是凭据。每台设备各留一把密钥,这样单台设备丢失不会迫使所有设备都更换。
那个包里还有什么
客户端包往往不止携带私钥:静态 TLS 密钥、用户名和密码、预共享密钥或配置令牌。把事件范围限定在实际暴露的内容,并把这些项目一并轮换。轮换了证书却保留共享的静态密钥,等于关上一扇门,又留下另一扇门开着。
如果这个包在多台设备间共享,携带它的每台设备都继承了这份暴露。
把轮换过的内容写下来,因为下一次审计会问。
证明拒绝,然后记录更换
当两个事实同时成立时,更换才算完成:新身份对目标服务可用,旧身份被拒绝。用已退役的凭据从测试环境验证第二点,或用组织批准的受控尝试验证,并阅读网关日志确认拒绝来自策略而非拼写错误。然后记录旧标识符、新标识符和变更时间,因为审计人员重建此事所需的正是这三个值。工单里的其他任何内容都解释不了这个缺口。
把私钥挡在工单和聊天之外,并按策略从存储和备份中移除过期的导出。
没有拒绝测试的更换只是假设,而非修复。