我有一组内部使用的域名,我不希望它们泄露给外界(因为这会让攻击者提前了解内部网络的布局)。鉴于证书透明度看起来势头越来越猛,大家普遍认为最好的私有域名方式是什么?自签名证书?通配符证书?还是其他方式?
答案1
我有一组内部使用的域名
对于仅供内部使用,您可以设置私有 CA,在内部系统上安装其证书,并自行颁发内部证书。
如果你的内部使用服务器以某种方式在外部使用,除非外部客户端为您的证书添加例外,否则它们将无法工作。这不会阻止外部攻击者发现内部域并对其进行攻击。在这种情况下,请使用通配符证书。使用自签名或内部 CA 证书会惹恼外部用户,并且无法保护您免受攻击者的侵害(就像大多数 DRM 模式一样)。
答案2
如果泄露主机名是您的威胁模型的一部分,那么 CT 可能不是此类泄露的唯一来源。想想电子邮件标题、日志、监控、编译器……许多工具最终可能会将系统名称(无论是主机名还是证书的一部分)泄露到可公开访问的空间中。相反,要研究希望它们保持机密的根本原因。
如果它们没有什么秘密,你就不必隐藏它们。如果它们确实透露了一些信息,那通常是因为你使用名字来
- 帮助管理员浏览你自己的网络或
- 帮助同事记住要输入的 URL。
- 在商业运营之前对系统进行内部测试
对于所有 3 个问题,都有更好的解决方案。问题 1 的主要问题是,经过多次更改后,系统名称通常最终与系统角色不匹配。问题 2 的主要问题是,您的同事无论如何都不应该手动输入 URL - 想想拼写错误的域名类型骗局。代号解决了 3。
建议:使用一致但随机的方案命名您的内部服务器。通过完全不同的方式传达系统<>角色关系。您通常会用名字来称呼您的同事,而不是用他们的角色 - 对您的内部服务器也应这样做。
我们的内部 wiki 托管在lake.example.org
。Lake 并不意味着什么,它只是与cube.example.org
(日志集合)有足够大的不同。但恶意攻击者只知道有 8 个内部域,这对于组织的规模来说并不奇怪。如果他想了解更多信息,他将不得不来访问我们并阅读姓名标签。
答案3
除非我忽略了什么,否则这似乎是一个非常简单的决定。
如果您认为通过证书透明度公开的数据的隐私性比由公众信任的 CA 签名的证书的便利性更有价值,您可以:
- 不要使用证书(对于现代软件来说不明智且不可行)
或者
- 运行您自己的 CA 并处理设置客户端以信任它的不便。