在这种情况下使用通用客户端密钥与openvpn的敏感性

我已经configuration了一个工作openvpn服务器(Ubuntu 10.04)和客户端,没有问题。

我为客户端机器生成证书和密钥文件等。

我们部署了大量的这些通用客户端机器来进行数据采集,每月10到20个月。 VPN的原因是允许我们远程login以进行偶尔的支持和监控。 他们通过其他方式将数据发送回家(不是VPN)

我正在考虑使客户端configuration文件通用,并在所有部署的机器上使用它们(服务器端的“duplicate-cn”选项)。

我的推理是这样的:

  1. VPN服务器明确地禁止从我们的办公室以外的任何地方sshlogin,所以连接的客户端不能ssh进入服务器
  2. 此外,login到openvpn服务器需要X509 .pem密钥文件(这是一个Amazon EC2实例)
  3. 服务器不允许客户端彼此看到(“客户端到客户端”被注释掉),并且没有任何其他networking的访问权限,这是纯粹的,我们可以ssh到客户端。
  4. 我们懒惰,不想pipe理员生成证书,将它们应用到机器上(因此不再是通用的,不再是热插拔的等),人们会感到困惑,弄错了。

主要缺点似乎是:

  1. 很难说哪个机器是哪里有很多连接(我还没有find解决scheme)

客户端机器安装在“不受信任”的站点上,也就是说,我不能保证他们的财务安全

所以我的问题是…在这种情况下可能发生的最坏的事情是什么? 如果一台机器直接受到攻击,最坏的情况就是打开一个VPN隧道(无论如何都是自动进行的),但是除此之外无法实现。 一旦检测到,我们可以在防火墙级别阻止该IP。

我的思维过程是正确的吗?还是我错过了什么?

编辑:

我也许应该说,客户端机器是无头的(没有video/键盘),不能直接被客户端访问(尽pipe你不能直接保证!)。 这是一个机器2机器(M2M)环境。 这些不是(例如)由销售人员携带的笔记本电脑。

不要, 要这样做。 你完全打败了基于证书的authentication的每一个目的。

  • 你在做什么破坏可识别性
    如果每个人都有相同的密钥对,则不能告诉另一台机器。

  • 你在做什么破坏安全。
    如果每个人都有相同的密钥对,并且私钥遭到破坏,那么您的所有系统连接都会受到影响,并且每个人的密钥对都需要更改。

  • 你在做什么破坏安全(再次)。
    如果每个人都使用相同的密钥对,则不能通过吊销证书来吊销单个实体的访问权限。
    这可能现在看起来并不重要,但有一天你需要删除某人的访问权限。 你能确定他们没有保存私钥的副本吗? (提示:不 – 所以现在你必须再次改变每个人的关键。)


安全不应该是方便的,并不迎合懒惰。 如果您希望获得公钥authentication的附加好处,您需要愿意承担正确pipe理密钥的(轻微的)额外负担。
如果你不需要额外的工作量,那么按照DrGkill的build议做,并简单地configuration预共享密钥(每个参与者一个 – 通用预共享密钥具有上面列出的通用证书的所有相同问题…)。

这是一件坏事,证书是用来识别人的,所以对一群人使用一个证书是没有意义的。 你可以简单地使用预共享密钥来configuration你的openvpn服务器,这更容易维护。

现在,设想通用私钥已被泄露。 这意味着你必须撤销它,并给所有用户安装新的证书/密钥。 你会使很多不快乐的人使你的系统无效。 再加上你可能不知道谁输了钥匙。