将 OpenVPN 客户端配置提交到 Git 是否安全?

信息安全 虚拟专用网 打开VPN 混帐
2021-08-24 00:14:35

我想将我的 OpenVPN 客户端配置提交给版本控制,在远程托管和公开访问的存储库中。

这将显示服务器的主机名和端口,以及 .crt 和 .key 文件的文件路径。

我应该担心泄露服务器的主机名/端口,还是会因为默默无闻而被视为安全?

更一般地说,这有多安全/不安全?

混淆的示例配置如下所示:

client
dev tun
proto udp4

remote my.example.net 1194
remote-cert-tls server
tls-auth /home/ivan/path/to/ta.key 1
cipher AES-256-CBC

ca /home/ivan/path/to/ca.crt
cert /home/ivan/path/to/myuser.crt
key /home/ivan/path/to/myuser.key

nobind
user nobody
group nogroup
persist-key
persist-tun
comp-lzo yes
auth-nocache

更新:感谢您的反馈。将“通过默默无闻的安全性”与选择不公开超过必要的安全系统进行对比的观点做得很好。

我意识到我正在执行此操作的上下文提供了一种简单的方法,可以在提交其余配置时从版本控制中排除某些配置。Git repo 用于我的 NixOS 系统配置,因此我可以将我的 vpn 配置的敏感部分放在一个单独的文件中,我将 gitignore,并将其内容插入到 nix 组成的最终配置文件中。

所以我的 configuration.nix 会有类似的东西:

services.openvpn = {
  servers.fooServer = {
    config = ''
      # The insensitive stuff inline, committed to Git
      client
      dev tun
      # etc...

      # The sensitive stuff slurped from a gitignore'd file
      ${builtins.readFile ./foo-server.private.conf}
    ''
  }
}
3个回答

避免“通过默默无闻的安全”并不意味着仅仅因为它是一个有决心的人无论如何都能找到的东西而泄露有关您的系统的信息。

另外,我假设您的意思是远程托管的版本控制,而不仅仅是开发机器上的版本控制?

如果远程版本控制服务器可公开访问或可供更多人访问,而不是需要知道此信息的人,将文件置于版本控制中并不会使其变得更安全,所以我猜如果你认为它确实如此,那将成为“通过默默无闻的安全”。

恐怕我们无法得出它有多安全/不安全的结论,因为我们不知道您实施了哪些其他安全控制措施。一般来说,通过隐蔽作为唯一防御机制的安全性是不好的做法,应该始终避免,但是除了其他基本的安全控制之外,实际上最好不要发布不必要的信息。

假设您已经应用了基本的安全实践(即没有默认密码、没有未使用的开放服务、最新的中间件等),我会说发布您的配置是安全的,因为其中没有任何东西实际上会削弱您的安全级别. 请注意,公开此配置可能会更容易将具有恶意意图的用户引导至您的服务器,因此发布配置所招致的风险取决于您当前配置和维护服务器的安全程度。是否接受这种风险取决于你...

如果上面的片段是所有发布的(即不包括任何关键文件),那么您要保护的唯一信息是 OpenVPN 服务的位置以及如何连接到它,这些信息可能是攻击者通过扫描和观察。仅此信息不会授予攻击者任何访问权限(除非某些内容严重错误配置或易受攻击)。

也就是说,它确实揭示了一些关于您的环境的信息,根据您的特定威胁模型,这些信息可能是不可取的。