题 系统管理员团队如何安全地共享密码?


在少数人之间共享数百个密码的最佳做法是什么?这些密码可以保护关键任务数据,并且在小团队之外无法看到。


81
2018-06-02 23:50




见相关 serverfault.com/questions/3696/...  serverfault.com/questions/2186/...  serverfault.com/questions/10285/...  serverfault.com/questions/21374/... - Zoredache
数百BTW是一个非常令人不安的数字。当团队中的一名成员被解雇时会发生什么?更新数百个密码将是痛苦的。 - Zoredache
借调“数百是一个非常令人不安的数字”的事情。我想你可能需要备份并重新考虑你是如何管理整个安全事件的,而不是试图在你现在拥有的东西上贴上膏药。 - Maximus Minimus
有点相关: serverfault.com/questions/119892  特别是这个答案: serverfault.com/questions/119892/company-password-management/... - Nathan Hartley


答案:


我可能会在企业内部网上编写一个基于Web的自定义解决方案。 (看一眼 http://lastpass.com 获取灵感,或使用它。共享密码是其功能之一,但它可能对您的卷不起作用。)

编辑:当然,最好的解决方案,不要分享它们。在任何介质中存储明文密码都是危险的,特别是当存储它们的目的是共享它们时。有几乎无限的解决方案,每个都带来了相关的危险。为什么不将它们放在加密的磁盘映像上,将该映像刻录到单张CD上,将CD放入一个只有一个武装警卫可以打开的保险箱中,并让授权人员出示带照片的ID以解锁它?

关键是我们并不真正了解您的情况。为什么要共享数百个任务关键密码?它们是用于您的后台内部网,VPN还是由于某种原因以明文保留的客户密码?您是否需要在同一个安装中与所有人共享?像存储在保险箱中的加密CD或打印表这样的物理转移是否真的有效?或者你的系统管理员遍布全球,以电子方式分享它们 只要 解?


14
2018-06-02 23:58



IMO构建您自己的安全/加密系统几乎不是解决问题的正确方法。 - Zoredache
@Zoredache,这是一堆垃圾。虽然,我认为基于网络的托管密码解决方案是愚蠢的 - 但他确实msanford确实说内联网。虽然仍有风险。所有其他网络解决方案也是如此。 - d-_-b
@Zoredache,OP没有构建自定义加密系统,听起来他所需要的只是一个安全的数据库。 @sims我认为精心设计的基于Web的解决方案没有错。上调答案恰恰表明(基于网络!= http;基于网络=在线存储)。无可否认,一旦我第二次阅读这个问题,我同意分享吨密码的基本模式似乎是不必要的,并且可以达成更好的解决方案。但OP没有给我足够的信息来做出判断...... - msanford
> @Zoredache,这是一堆垃圾。<嗯,模拟人生,你几乎可以在大多数加密人员面前飞行。设计加密很难,值得加密更难。 schneier.com/essay-037.html  有时,较小的邪恶 - 你知道的那个 - 是面对你不知道的邪恶时更好的选择(即一个未经测试的设计,非同行评审,可能有漏洞,可能有安全漏洞等等)。 ) - Avery Payne
@Avery - 设计加密系统很困难,应留给专家,是的。使用经过验证的工具,如共享文本文件上的GPG,或Keepass(使用AES和SHA-256的.NET实现),并不是在设计自己的系统。 - mfinni


最佳做法是不共享密码。使用sudo之类的工具允许用户从他们自己的帐户获得所需的访问权限。如果您有几个用户,则每个用户都应该拥有自己的帐户。 LDAP(Unix / Linux)和Active Directory是从公共数据库授予对多个服务器的访问权限的良好解决方案。

如果需要提供密码的书面副本,请将其密封在密封件上签名并注明日期的信封中。使用密码时更改密码。密码更改后,将其封好一个新信封。

对于真正需要共享的密码,请使用Keepass之类的密码工具,这些工具可以将其数据库放在网络上。具有多个平台的客户端的工具更好。考虑一下,您需要多个数据库。请记住,您需要真正信任有权访问此数据的所有人。


38
2018-06-03 00:04



对于具有可能的权限提升的管理员的非特权用户帐户+1,在* nix服务器上我将其与仅使用sshd的dsa / rsa认证相结合。如果你在linux下使用图形工具,你也可以使用自定义的策略包配置。 - Aaron Tate
这个。在用户使用共享凭据时撤消对用户的访问是绝对的噩梦。尽可能通过用户唯一帐户委派访问权限。总有一些情况下,常见的密码是不可避免的,但“数百个”共享密码会尖叫关键的设计缺陷。 - Chris Thorpe
我同意通常不共享密码,但有很多情况需要,例如网络设备只有一个登录,供应商网站,所有系统管理员使用相同的登录进行订购,SQL sa用户或本地管理员密码,必要。这就是为什么我认为KeePass最适合这个:它可以在多个平台上运行,可以提供很高的安全性,并且可以轻松地组织数百个密码。 - Paul Kroon
我们对此有一个变体,我们将根密码写下来但锁定在一个只有系统团队才能打开密钥的保险箱中。我们的root密码本身长度为16个字符,并且以下一个不可能记住的方式生成。是的,那里有一些不安全因素,但是如果有人闯入保险箱,我怀疑我们有更大的问题。 - Frenchie
这是我们团队的一个真实用例场景:为基于Web的应用程序共享密码,它们不支持单个帐户的多个登录。因此,如果团队中的多个人需要能够访问该帐户,则需要有一种方法来共享该帐户的密码。 - Jordan Reiter


我们一起去了 KeePass的 为了这个目的。这是一个很棒的小程序,可以将所有密码存储在加密的数据库文件中。还有其他安全功能,例如需要密钥文件和主密码才能访问密码。这允许多层安全性(将密钥文件和数据库分开),同时使每个人都可以方便地使用所有不同的密码。例如,您可以从USB驱动器运行应用程序和密钥文件,但将数据库存储在网络上的某个位置。这将需要网络共享,主密码和带有密钥文件的物理USB驱动器的凭据。


10
2018-06-02 23:59



KeePass似乎支持多个平台,这是我眼中的一大胜利(我在混合平台环境中工作)。 “自动类型”功能看起来也很有用。 - Avery Payne
将密码保留在网络上的愚蠢想法。 - d-_-b
@Sims - 那么你们如何分享它们? KeePass为商店使用加密文件。它只是Unix服务器上GPG加密文本文件的一个更有用的版本,每个人都可以访问。 - mfinni
@Sims - 我通常会同意你的意见,但这可能是安全与生产力的关系。我不想把服务器的root密码放在这样的东西上,但是只有一次登录的第2层交换机的管理员密码是一个很好的候选者。有一点需要更多的工作,比安全漏洞后清理更安全。此外,除了所有加密之外,您还可以在文件上拥有AD / NTFS安全性,并且可以将文件(可以命名为任何内容)放在随机位置。 - Paul Kroon
我没想到Windows机器。但是,如果你只能有一个用户用于那个开关,那么我想这是有意义的。另外,比尔说,对共享密码说不,这也是我对密钥的看法。 - d-_-b


在少数人之间共享数百个密码的最佳做法是什么?

容易,这有两种口味:

  1. 你没有,简单明了。如果选择执行此操作,则将密码身份验证推迟到外部受信任的颁发机构,并从那里控制身份验证。

  2. 您这样做,但是在这样做时,您有外部访问控制,其中包含未在您使用的系统内记录的密码或安全令牌(即密码记录受另一个具有有限可用性的密码保护)。这有很多问题。

这些密码可以保护关键任务数据,并且在小团队之外无法看到。

您应该认真考虑与目录服务集成的安全身份验证服务来解决问题。 DS / AS组合创建了一个受信任的“权限”,可以充当所有用户和设备的仲裁者。用户帐户的访问权限可以从身份验证中使用的实际密码中抽象出来,从而可以轻松地从访问策略中“断开”密码。控制密码是通过停用用户的帐户;因此,如果管理员离开,您只需关闭他们的帐户,他们的访问权就会消失(因为该人的密码仅根据确认帐户有效的DS / AS的有效性授予访问权限)。

这只适用于您所在的环境允许您的设备/程序将其身份验证请求分流到外部源,因此它可能不适合您。如果你有相当比例的设备/程序可以容纳外部身份验证,那么我会继续这样做,如果只是将几百个密码合并到一个可管理的列表,比如十几个。如果您决定采用这种方式,那么有几种现成的,众所周知且经过良好测试的解决方案。

  • 活动目录。  可能是该组中最知名的组,它为您提供Kerberos作为身份验证选项,并为基本DS提供LDAP。
  • 桑巴/ Winbind的。  将其视为“Active Directory Light”,您不会获得AD的所有功能,而是基于NT4的旧型号(想想LANMAN哈希)。这将取代Samba 4的AD集成,并可能“消失”。
  • Novell目录服务。  我不太了解推荐它,但我知道它仍然存在。很多政府机构仍然使用NDS,所以如果你在那个“部门”工作,你会感兴趣。 Novell最近移植NDS作为Linux服务运行,但我不知道它是否仍然是一个活跃的产品(大约2005年)。
  • LDAP + Kerberos。  这基本上是“本土”Active Directory,减去所有“不错的功能”。但是,它们也是具有稳定,成熟的代码库的已知组件,因此这些服务的集成通常是使事情工作所需的“定制”程度。
  • SSH密钥+(在这里插入系统管理程序,可能是木偶)。仅适用于全面使用SSH并且以这种方式访问​​所有设备的情况。密钥可以根据需要分发和撤销,密码变得“无关紧要”,因为SSH密钥授予访问权限。使用像puppet这样的系统,您可以通过发出命令来添加/撤消SSH密钥来更新数百台计算机。
  • 以上的一些组合。

还有一个问题是你需要多少安全性。您没有具体说明“关键任务”是否意味着核弹头可能会降落在城市上,或者“关键任务”是否意味着最新的Furbies货物无法进入城镇。如果存在描述风险/威胁评估的内容,那将非常有用。


5
2018-06-03 20:37





我知道这是一个老问题,但我最近遇到了一个基于开源网络的解决方案 企业保险柜 对某些人来说可能很有意思。我还没有机会尝试一下。


2
2017-12-16 00:31





我们使用一个叫做的程序 密码安全。它非常好且非常安全,您可以在网络驱动器上设置数据库,并将需要它的所有人访问,并将密码保存到安全本身,然后安全地加密所有用户名和密码。


1
2018-06-03 02:57





一些东西:

  • 正如其他人所说,这是一个坏主意。使用LDAP等
  • 如果您因任何原因致力于这样做,至少要整合密码。 100个非托管密码意味着您没有更新密码。
  • 把它们放在纸上。要求工作人员使用不同颜色的墨水对纸张进行签名,以便更容易确定是否复印了纸张。
  • 如果您使用的是Unix,请使用S / KEY生成一次性密码。存放在安全的地方。

您还需要超越将纸质密码放入保险箱或加密密码的机械安全措施。了解具有成熟安全模型的组织如何保护密钥和安全组合。我不建议你做你想做的事,但如果你这样做:

  • 将使用密码的人无法控制对密码的访问。不同管理链下的不同人群需要控制对保险箱,抽屉等的访问。如果您有财务组,他们可能是候选人。也许营销副总裁等
  • 当保险箱打开并且有人拥有密码时,需要有书面记录。
  • 密码必须在签出后24小时内更改。

像这样的程序是一个痛苦的问题,但它将激励人们采取更加理智的做法。如果你不做我所描述的事情,不要费心去锁定密码的动作,因为无论如何你有一天会被破坏。


1
2018-06-03 15:06