如果您正在寻找最高级别的一流安全性 -气隙是完成这项工作的唯一方法。不幸的是,在任何情况下都与外部世界完全没有联系是令人望而却步的,尤其是当开发人员喜欢从文档中复制和粘贴代码片段等时。
最终,这可能也意味着将笔记本电脑带离现场也变得不可行。
假设你不能这样做(因为让我们面对现实,这是一个相当大的问题)——首先,移动工作站。绝对选择 VPN 选项。确保通过这些笔记本电脑的所有互联网流量都通过 VPN。这样,您的架构和安全要求(防火墙策略等)肯定会得到执行,更重要的是,除了 VPN 端点之外,您不会向公共互联网公开任何东西。
至少加密笔记本电脑的硬盘。如果笔记本电脑在断电时被盗,源代码应该在合理的时间内是安全的。如果笔记本电脑没有断电,或者攻击者可以观察到密码输入,那么你什么也没做,只是让他们的工作变得更加困难。据我所知,Ubuntu 和 CentOS 都支持 LUKS - 它使用 cryptsetup 并为您提供体面的算法和多槽密码的选择。
基于硬件的磁盘加密会更好,因为这意味着您的/boot
分区不可修改。
用于安全的虚拟 LAN收到了不同的意见。从开发的角度来看,我希望您的团队使用 sudo 或 root 访问权限,因此如果他们愿意,他们可以轻松地重新配置 VM 软件以允许他们的主机访问。正如博文中提到的,VM 用于廉价的网络隔离——当您可以强制执行配置时,它就可以工作。在这里,它看起来很难卖。
当然,这并不是说你不能使用虚拟机。我会仔细研究你的开发人员绕过的难度。
如果您拥有足够快的网络和耐心的开发人员,我已经看到这项工作成功的一种方法是使用远程桌面连接到网络上可用的虚拟机 - 但开发人员自己无法物理访问。您甚至可以使用完整的瘦客户端,而不是使用 RDP 的桌面。瘦客户端模型也很好地处理了我的下一个主题……物理安全。
当我说物理安全时,我的意思是您的开发人员插入 USB 记忆棒svn co
并带着很多东西离开有多难?“将代码带回家”可以通过这种方式发生,但如果 U 盘丢失,您将失去很多。通常,您可以使用两种解决方案 -环氧树脂和从内核中删除各种hci.ko
模块 - 从而使其根本无法识别 USB。不幸的是,这也有禁用 USB 键盘和鼠标的缺点。