在少数几个人之间共享数百个密码的最佳实践是什么?这些密码可保护关键任务数据,只有小型团队才能看到。

评论

请参阅相关的serverfault.com/questions/3696/…serverfault.com/questions/2186/…serverfault.com/questions/10285/…serverfault.com/questions/21374/…

BTW数百是一个非常令人不安的数字。当团队中的一名成员被解雇时会发生什么?更新数百个密码会很痛苦。

关于“数百个非常令人不安的数字”的事情。我认为您可能需要首先备份并重新考虑如何管理整个安全事务,而不是尝试在当前所获得的东西上贴上膏药。

有点相关:serverfault.com/questions/119892特别是这个答案:serverfault.com/questions/119892/company-password-management/…

#1 楼

我可能会写一个托管在公司Intranet上的基于Web的自定义解决方案。 (请访问http://lastpass.com以获得灵感或使用它。共享密码是其功能之一,尽管它可能不适用于您的密码。)

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

重点是我们不太了解您的情况。为什么要共享数百个关键任务密码?它们是用于后台Intranet,VPN,还是出于某些原因以明文形式保留的客户密码?您是否需要在同一安装中与之共享的所有人员?像加密CD或存储在保险箱中的打印表之类的物理转移是否真的有效?还是您的系统管理员遍布全球,使共享它们的电子方式成为唯一的解决方案?

评论


IMO建立自己的安全/加密系统几乎永远不是解决问题的正确方法。

– Zoredache
2010年6月3日,2:47

@Zoredache,这真是垃圾。虽然,我确实认为用于托管密码的基于Web的解决方案很愚蠢-但他确实做了msanford所说的Intranet。仍然有风险。其他所有联网解决方案相同。

–d -_- b
2010年6月3日,10:48

@ Zoredache,OP没有建立自定义的加密系统,听起来他需要的只是一个安全的数据库。 @sims我认为,基于Web的精心设计的解决方案没有错。投票赞成的答案恰恰表明了这一点(基于Web的= http;基于Web的=在线存储)。诚然,当我第二次阅读该问题时,我同意共享密码吨的基本模型似乎是不必要的,并且可以找到更好的解决方案。但是OP没有给我足够的信息来做出判断……

–麦桑福德
2010-6-3 14:34



> @Zoredache,这真是一堆废话。<嗯,Sims,面对大多数加密人员,您马上就要飞起来了。设计加密非常困难,因此值得进行加密仍然更加困难。 schneier.com/essay-037.html有时候,遇到未知的邪恶(即未经测试,未经同行评审的设计)时,越小的邪恶(您知道的那个)是更好的选择。错误,可能有安全漏洞等)

–艾琳·佩恩(Avery Payne)
2010年6月3日19:53

@Avery-设计密码系统很困难,应该交给专家,是的。使用久经考验的工具(例如共享文本文件上的GPG或Keepass(使用AES和SHA-256的.NET实现))不是在设计您自己的系统。

– mfinni
2010年6月3日,21:04

#2 楼

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

当需要具有密码的书面副本时,请将其密封在信封中在印章上签名并注明日期。使用时更改密码。更改密码后,将其密封成一个新的信封。

对于确实需要共享的密码,请使用其中一种可以将其数据库存储在网络中的密码工具,例如Keepass。具有用于多个平台的客户端的工具更好。考虑是否需要多个数据库。请记住,您必须真正信任有权访问此数据的每个人。

评论


对于在* nix服务器上具有可能的特权升级的管理员,非特权用户帐户+1,我将其与仅对sshd使用dsa / rsa认证相结合。如果您正在使用Linux下的图形工具,则还可以使用自定义的policykit配置。

–亚伦·泰特(Aaron Tate)
2010年6月3日,0:25

这个。取消用户使用共享凭据时的访问权限绝对是一场噩梦。尽可能通过用户唯一帐户委派访问权限。总是在某些情况下不可避免地会使用通用密码,但是“数百”个共享密码会尖叫出关键的设计缺陷。

–克里斯·索普(Chris Thorpe)
2010年6月3日,0:36

我同意通常不共享密码,但是在很多情况下,这是必需的,例如具有单个登录名的网络设备,供应商站点,其中所有sysadmin都使用相同的登录名进行订购,以及SQL sa用户或本地admin密码,其中必要。这就是为什么我认为KeePass最适合此用途的原因:它可以在多个平台上工作,具有很高的安全性,并且可以轻松地组织数百个密码。

– Paul Kroon
2010年6月3日在1:03

我们对此有所不同,我们记下了root密码,但是锁定了只有系统团队才能打开密钥的保险箱。我们的root密码本身长16个字符,并且以几乎无法记住的方式生成。是的,那里存在一些不安全感,但是如果有人闯入保险柜,我怀疑我们会有更大的问题。

– Frenchie
2010年6月3日,凌晨3:04

对于我们的团队来说,这是一个真实的用例场景:在不支持单个帐户多次登录的基于Web的应用程序中共享密码。因此,如果团队中需要一个以上的人才能访问该帐户,则需要一种共享该帐户密码的方法。

–乔丹·瑞特(Jordan Reiter)
2012年11月30日18:56

#3 楼

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

评论


KeePass似乎支持多种平台,这对我来说是一个巨大的胜利(我在混合平台环境中工作)。 “自动类型”功能看起来也很有用。

–艾琳·佩恩(Avery Payne)
2010年6月3日,0:59



在网络上保留密码的愚蠢想法。

–d -_- b
2010年6月3日,10:50

@Sims-那么您如何分享它们? KeePass将加密文件用于商店。它只是每个人都可以访问的Unix服务器上GPG加密文本文件的更有用的版本。

– mfinni
2010-6-3 14:58

@Sims-我通常会同意您的意见,但这必然是安全与生产力的关系。我不想将服务器的根密码放在这样的目录中,但是仅具有一次登录的第2层交换机的管理员密码就是一个很好的选择。有一点是,与安全漏洞发生后的清理相比,以更安全的方式进行工作需要花费更多的工作。另外,除了所有加密功能之外,您还具有文件的AD / NTFS安全性,并且通过将文件(可以命名为任意文件)放在随机位置来稍微模糊。

– Paul Kroon
2010年6月3日于17:08

我没想到Windows机器。但是,是的,如果该开关只能有一个用户,那么我想这是有道理的。否则,如Bill所说,对共享密码说不,这也是我关于密钥的观点。

–d -_- b
2010年6月3日在22:01

#4 楼


在少数几个人之间共享数百个密码的最佳实践是什么?


容易,这有两种形式:


你没有,简单明了。如果您选择执行此操作,则将密码身份验证延迟到外部受信任的授权机构并从那里进行控制。
您这样做了,但是这样做的话,您将拥有外部访问控制,这些访问控制的密码或安全性令牌未记录在内部您使用的系统(即密码记录受另一个可用性有限的密码保护)。这样做有很多问题。


这些密码保护着关键任务数据,只有小型团队才能看到。


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

此仅在您的设备/程序将其身份验证请求分流到外部源的环境中时,此功能才有效,因此这可能不是您的解决方案。如果您有很大一部分设备/程序可以接受外部身份验证,那么我将继续执行此操作,只要将数百个密码合并为一个可管理的列表(例如十几个)即可。如果您决定走这条路,那么有几种现成的,知名的和经过测试的解决方案。



活动目录。可能是该组中最著名的,它为您提供了Kerberos作为身份验证选项,并为基本DS提供了LDAP。

Samba / Winbind。将其视为“ Active Directory Light”,您不会获得AD的所有功能,而是获得了基于NT4的较旧模型(认为LANMAN哈希)。这将被Samba 4的AD集成所取代,并且可能会“消失”。

Novell目录服务。我对其了解不足,无法推荐它,但我知道它仍然存在。许多政府实体仍在运行NDS,因此,如果您在该“部门”中进行工作,那么您会很感兴趣。 Novell最近将NDS移植为可以作为Linux服务运行,但是我不知道它是否仍然是活跃产品(大约在2005年)。

LDAP + Kerberos。基本上,这是“本地生成的” Active Directory,减去了所有“不错的功能”。但是,它们也是具有稳定,成熟的代码库的已知组件,因此这些服务的集成通常是使事情正常运行所需的“定制”程度。

SSH密钥+(插入系统管理程序,可能是人偶)。仅在全面使用SSH并且以这种方式访问​​所有设备的情况下才有用。可以根据需要分发和撤消密钥,并且随着SSH密钥授予访问权限,密码变得“无关紧要”。使用类似puppet的系统,您可以通过发出命令en-masse来添加/撤消SSH密钥来更新数百台计算机。
上述几种组合。

还有一个问题是如何您需要的安全性很高。您没有指定“关键任务”是指核弹头可能落在城市上,还是“关键任务”是指最新一批的Furbies不会进入城镇。如果有描述风险/威胁评估的信息,那将真的有帮助。

#5 楼

一些事情:


正如其他人所说,这是一个坏主意。使用LDAP等
如果出于任何原因要这样做,请至少合并密码。 100个非托管密码表示您不更新密码。
将它们保留在纸上。要求工作人员用不同颜色的墨水在纸上签名,以便更轻松地确定是否复印了纸页。
如果您使用的是Unix,请使用S / KEY生成一次性密码。将其存储在安全的地方。

您还需要超越将纸质密码放在保险箱中或加密密码的机械安全措施。继续阅读有关具有成熟安全模型的组织如何保护密钥和安全组合的信息。我不建议您做您想做的事情,但是如果您这样做:


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

这样的过程令人不经意间,但却会激励人们采取更为理智的做法。如果您不做我所描述的事情,请不要费心进行锁定密码的操作,因为总有一天您会被破坏。

#6 楼

我知道这是一个老问题,但是最近我才遇到一个名为Corporate Vault的基于开源Web的解决方案,这可能对某些人很有趣。我还没有机会尝试一下。

#7 楼

我们使用一个名为“密码安全”的程序。它很好而且非常安全,您可以将数据库设置在网络驱动器上,并将需要访问的每个用户和密码提供给保险箱本身,然后安全地存储所有加密的用户名和密码。

#8 楼

https://pypi.python.org/pypi/django-pstore/对共享密码(以及您可能希望共享的任何其他数据)使用每用户GPG加密。服务器永远不知道任何密码,只保存加密的数据。每个人都使用自己的私钥来解密共享的机密。

该系统包括权限管理:并非每个人都具有完全访问权限。

#9 楼

我们使用https://passwork.me作为自托管解决方案。但是您也可以将密码存储在他们的云中。

评论


这是您的产品Iliya,但看起来确实不错。

– Foolivision
16年4月12日在14:32

#10 楼

SPB钱包是一个很好的应用程序,我们曾经使用过幽灵的PW安全设备,但是SPB钱包可以让您同步到网络共享,也可以在获取应用程序后同步到iPhone。
它还具有内置的密码生成器,您可以可以将它们从简单的密码生成为极其复杂的密码。您还可以在仍带有星号的密码时复制密码,因此,如果有人正在寻找,您可以复制并粘贴密码而没有人看到密码。
在定义的时间内没有活动时,PC应用程序会自动锁定时间。

#11 楼

另一个选项是Azure Key Vault,它可以安全地存储您的机密,并允许您以编程方式允许对其进行访问,轻松旋转密码等。没有好的UI,但是如果您可以使用命令行访问,那就很好了。

#12 楼

最佳做法是共享尽可能少的密码。

因此,我们举个例子:
-在根主目录中使用my.cnf来输入数据库的密码
-使用ssh密钥登录服务器,并拥有一个仅通过控制台允许的root密码(因此您必须具有对服务器的物理/ bmc访问权限)
-尽可能使用ldap(ssh,bmc,switchs,redmine 、。 ...)

但是,在少数情况下,我们无法使用此方法(例如root密码)。然后,我们在共享存储上使用keepass,但在那里只需要保存10个密码。

#13 楼

很好的问题。我会对其他答案感兴趣。

这是我的工作,但首先我建议尽可能使用预共享密钥。我不知道这在Windows系统上是否可行。

由于密码的数量应该很小(您在可能的情况下使用密钥),因此我在服务器上使用了用gpg加密的纯文本文件没有NIC的系统。因此(1)您需要物理访问权限,而(2)则需要密码。

为清楚起见进行了编辑

评论


钥匙?如USB密钥?打开锁的物理钥匙?智能卡钥匙? GPG密钥?密码短语仅存在于您脑海中的湿件中?上面的组合?

–艾琳·佩恩(Avery Payne)
2010年6月3日在20:05

车钥匙! JK。为了澄清,我的意思是ssh键。这就是为什么我说可能无法在Windows中使用预共享密钥。

–d -_- b
2010年6月3日在22:03