服务器所有者的 OPSEC 基础:如何保持 VPS 隐私
Anonymity · 9 分钟阅读
服务器的「运营安全」到底意味着什么
运营安全(operational security,简称 opsec)一词借自军事规划领域,描述的是一种控制对手能从日常行为中获取多少信息的纪律,而不仅仅是防范某一次戏剧性的入侵。落到 VPS 上,服务器 opsec 意味着把每一个触点——你如何登录、开放了哪些端口、是什么支付方式为这台服务器付款,甚至你的作息习惯所暴露的时区——都当作潜在的关联线索来对待。
大多数服务器所有者常犯的错误,是只加固了某一层,通常是一个强 SSH 密钥,却任由另外五个渠道以不同方式泄露同样的信息。opsec 从定义上就是一个整体性的工作:攻击者或调查者只需要找到最薄弱的那一个暴露渠道,而不需要同时攻破所有渠道。
- 访问控制:谁能登录,以及如何登录
- 网络暴露面:服务器向互联网公开了什么
- 元数据:日志、时间戳和请求头会泄露什么
- 资金痕迹:哪种支付方式把账户和真实身份联系起来
- 行为习惯:重复使用的用户名、固定的登录时间、相互关联的服务
锁定访问权限:SSH、密钥与控制面板
基于密码的 SSH 登录,是新上线 VPS 上最常见的单一 opsec 失误。它容易被暴力破解,往往是服务器上线后几分钟内自动化扫描器最先尝试的目标,而每一次失败的尝试都会留下一条日志记录,把探测行为与这台服务器联系起来。禁用密码认证、改用 SSH 密钥对,几乎能彻底堵住这个漏洞,而且应该在安装任何其他东西之前就完成。
除了密钥本身,还应更改默认 SSH 端口,禁用直接 root 登录、改用受 sudo 限制的普通用户,对于敏感场景可以考虑仅通过 VPN 才能访问的堡垒机,或使用端口敲门。在主机服务商这一侧,控制面板登录应享有和服务器本身同等的严谨对待:使用唯一、足够长的凭据,或在服务商支持的情况下使用账户密钥,存放在密码管理器中,并在所有可用的地方启用双因素认证。
- 禁用 SSH 密码认证,仅使用基于密钥的认证
- 禁用直接 root SSH 登录,改用受 sudo 限制的用户
- 更改默认 SSH 端口,减少自动化扫描带来的噪音
- 在主机控制面板和 API 上启用双因素认证
- 如果存有密钥的设备曾经丢失、出售或被入侵,及时轮换 SSH 密钥
网络层面的 opsec:防火墙、端口与 DDoS 暴露面
每一个开放端口,都是任何人运行一次扫描就能看到的关于该服务器的事实,而如今扫描整个 IPv4 地址空间,用常见工具只需几分钟。一台只开放确实需要的端口(通常是非默认端口上的 SSH,加上应用所需的端口)的服务器,留给观察者的信息,远比一台使用默认配置、开着十几个服务在监听的服务器要少得多。
主机层面的防火墙——iptables、nftables 或 ufw——应默认拒绝所有入站流量,只显式放行确实需要的部分。如果这项工作面向公众且存在遭受 DDoS 攻击的可能,就要寻找提供有效防护能力的服务商;VPS GOAT 的各套餐都包含最高 10 Gbps 的抗 DDoS 过滤,因为遭受下线攻击这件事本身就是一种压力,会促使运营者做出仓促、粗心的应对,而仓促的应对正是 opsec 失误最容易发生的地方。
- 默认拒绝的防火墙策略,只放行必需的端口
- 关闭或用防火墙屏蔽主机服务商未使用的默认管理端口
- 使用 fail2ban 或类似工具削弱自动化暴力破解尝试
- 单独检查 IPv6 的暴露情况;许多管理员只顾着加固 IPv4,却忘了 IPv6 也开着
元数据与日志:你的主机商和你自己能看到什么
服务器默认记录的内容,远比大多数所有者以为的要多:访问时间戳、来源 IP、shell 历史记录、可能包含文件路径或用户名的应用错误跟踪,以及记录每一次请求的 Web 服务器日志。审查并精简默认日志记录,和锁好前门一样,是 opsec 中不可或缺的一部分,因为日志正是针对服务器上运行的服务发起法律或调查程序时,最先被索要的东西。
这一点是双向的:主机商自身的日志政策,和服务器本身的配置同样重要。一家无限期保留连接元数据的服务商,无论所有者在服务器层面多么谨慎,都会削弱这些安排的意义。以最小化日志为设计理念、且身处没有强制数据留存法律的司法管辖区的服务商,能够从结构上降低这种暴露,而不是把一切都寄托在配置本身。
- 审查 Web 服务器、SSH 与应用程序的默认日志详细程度
- 有意识地设定日志轮换与留存周期,而不是沿用默认值
- 避免在配置文件中嵌入真实标识信息,例如个人用户名
- 确认主机商的日志政策和所在司法管辖区是否符合你的威胁模型
支付与注册的 opsec:比服务器本身活得更久的痕迹
如果账户背后是用个人信用卡付款、或用工作邮箱注册的,那么服务器层面的加固就毫无意义。支付和注册环节通常是整条链路中关联性最强的两个点,因为它们在服务器创建之前就已存在,并在服务器被销毁之后依然留存。使用加密货币支付,最好是像 Monero 这样注重隐私的币种,而不是像 Bitcoin 这样账本透明的币种,能堵住最常见的资金痕迹。而像 Mullvad 的账户号码系统那样的免邮箱注册方式(部分 VPS 服务商包括 VPS GOAT 也采用了这种做法),则堵住了账户一侧的身份痕迹。
但这些措施单独存在都没什么用。一台匿名付款的服务器,如果是从一个具有个人独特指纹的浏览器进行管理,或者仅从没有任何 VPN 或 Tor 保护的家庭 IP 访问,依然会泄露出本应由支付方式来保护的那部分信息。
- 在符合你的威胁模型的前提下,使用不会经由你的法律身份的支付方式为主机付款
- 避免在匿名账户和个人账户之间重复使用邮箱、用户名或 SSH 密钥
- 把用于管理隐私服务器的浏览器或会话,与日常浏览分开
- 把访问路径——家庭 IP、VPN 或 Tor——视为与支付方式同属一条 opsec 链条
会抵消其余一切努力的常见 opsec 失误
大多数 opsec 失败并不戏剧化,而是一些细小、反复出现的习惯:在匿名的服务器账户和别处的个人资料之间重复使用一个特征明显的用户名;数月来始终在同一时间、从同一个 IP 登录,在任何技术层面的入侵发生之前就已经形成了一种模式;在公开论坛排查问题时,把服务器的 IP 地址或配置贴了出来。每一项单独看都无关紧要,合在一起却往往是决定性的。
解决方法与其说是采购新工具,不如说是定期审视习惯:这台服务器的使用方式,有没有什么地方能指向使用者是谁?诚实、定期地问自己这一个问题,比任何加固清单本身都能发现更多的 opsec 失误。
- 在匿名账户和个人账户之间重复使用用户名或昵称
- 可预测的登录模式:相同的 IP、相同的时段、相同的客户端指纹
- 在公开的故障排查帖子中分享服务器细节,如 IP、主机名、截图
- 任由「先图个方便」——保存密码、暂时关闭双因素认证——逐渐侵蚀原本的安全配置
| 薄弱点 | 典型风险 | 实际修复方法 |
|---|---|---|
| SSH 密码登录 | 暴力破解与撞库攻击 | 仅使用基于密钥的认证,禁用密码登录 |
| Root SSH 访问 | 单点即可完全沦陷 | 改用 sudo 用户,禁用直接 root 登录 |
| 开放或默认端口 | 自动化扫描与指纹识别 | 默认拒绝的防火墙策略,关闭未使用端口 |
| 冗余的默认日志 | 日志成为最有力的证据链 | 精简日志详细程度,明确设定留存期限 |
| 信用卡或银行支付 | 与法律身份直接关联 | 加密货币支付(Monero、Bitcoin 及其他) |
| 基于邮箱的注册 | 可跨数据泄露和服务进行关联 | 在服务商支持的情况下,使用免邮箱账户密钥注册 |
| 重复使用用户名或昵称 | 跨账户关联 | 每个账户使用唯一凭据,不重复使用 |