以共享用户身份登录是否有坏习惯?


35

我曾在一些组织工作,在这些组织中,系统管理员无需将每个人的ssh密钥添加到.ssh/authorized_keys,而每个人ssh的ssh密钥都将添加到该计算机,而每个人的ssh密钥都以(例如ubuntu@host或代替ec2-user@host。(顺便说一下,我也已经在实验室环境中在共享的Mac mini上看到了这种做法。)这是公认的做法,还是一种反模式?

有问题的主机主要用于测试,但是也有一些通常需要按用户配置的操作,这些操作是由特定用户完成的,例如创建和推送git commit(目前使用通用git完成)用户。


23
尽管许多人在处理多夫妻关系方面遇到麻烦,但其他人却能很好地处理它们,所以我认为共享一个……不一定是“坏习惯”。哦,没关系,您的意思是用户帐户
HopelessN00b '02

Awww,有人编辑了clickbait标题。.::(
Burgi

Answers:


42

是的,这是个坏习惯。它基于以下基本假设:没有(或将要)有恶意,并且没有人会犯错误。拥有一个共享帐户使事情变得无足轻重,而无需追究责任,也没有任何限制-用户破坏某些东西会破坏所有人的利益。

如果使用这种uid共享方案的原因仅仅是为了减少创建新帐户和共享配置的管理成本,那么管理员可能应该在诸如AnsibleChefPuppetSalt的自动化系统中花费一些时间,使诸如创建用户之类的事情在多台计算机上帐户非常简单。


4
这甚至不是恶意,甚至也不是无能。当我做不到的任何事情时,我都无法假设我会记得在此帐户上所做的任何事情。
djechlin '16

安全数据的原则:完整性机密性可用性问责制。+1使用问责制一词
DeveloperWeeks

7

首先,这并不令我感到震惊,而且我在一个极为安全的环境中工作。每个人都有自己的用户以及计算机和ssh密钥,对于在服务器上工作的我们,可以根用户或其他用户的身份通过日志中继(必要时)登录。ssh密钥的所有者将我们所做的所有操作记录为已完成,因此可以确定责任。

替代方案是什么?作为特定用户,必须做很多事情,更不用说root了。须藤吗 对于某些非常受限的任务,这是可以的,但对于计算机的系统管理则不是。

但是我不确定你的最后一段,你的意思是有人可以向普通用户推送git commit吗?那会破坏问责制,破坏问责制是不好的。我们从登录的计算机上执行git,并使用ssh密钥对git进行身份验证...

认证,授权和计费(AAA)是经典的表达方式:您已通过ssh密钥进行了身份验证,您被授权执行通用用户可以执行的任何操作,因为您的密钥在authorized_keys中,并且您需要进行计费才能进行操作事后可以复习。


3
因此,普通用户具有某种身份验证(ssh密钥?),可以授权修改git repo?那真的不好。不仅因为它破坏了对该提交的责任,而且还因为任何人都可以复制该密钥并从其他地方使用它。遇到此类问题时,我将代码或diff复制到本地计算机,然后从此处提交。
Law29 2016年

2
为什么sudo对于机器的一般管理来说完全不可接受?
Blacklight Shining

4
您以“超级安全的环境”的身份以ssh身份登录吗?
xaa

@BlacklightShining如果您必须能够执行任何操作(chown,chmod任意文件,安装服务器,装入文件系统,则以ssh身份登录并执行sudo bash并不会获得任何好处。相反,ssh可以使用日志中继和SSH方式登录在/或日志一切到远程服务器的SSH密钥的t.he所有者。
Law29

1
@xaa是的,我没有看到有问题。我键入的所有内容都会记录到其他计算机上。当机器是一台服务器,您可能想做的所有事情都需要您成为root用户时,“不以root用户身份工作”是完全没有用的格言。
Law29 2016年

3

显然,这取决于系统的用例。如果它是不时进行测试的系统,对我来说很好。我们也有这样的系统。如果公司没有任何种类的身份管理(LDAP,IPA),那么在随机系统上没有任何远程控制的情况下创建新用户将是很大的负担。

但是,对于每天工作中有人失误导致整个公司无法运营的想法不是一个好主意。


的确,如果您没有目录服务或没有目录服务,则创建和管理数千个帐户是不切实际的。
Jim B

即使您不能使用LDAP,您仍然可能具有SSH访问权限(或Windows上的Powershell)。您仍然需要一种方法来管理所有这些帐户的主机上的authorized_keys文件(除非您还共享密码)以及大量其他设​​置。我想知道为什么您没有使用某种配置管理(例如Puppet,Chef,Ansible),如果您有那么多用户或服务器。减轻了负担,并为您提供了过程控制,问责制和可审核性。
Martijn Heemels,2016年

3

所有这些答案都解决了问责制的问题,问责制本身是一个重要而真实的问题,但是使用共享帐户还可以对其他用户进行不太细微的攻击:

考虑攻击者创建一个恶意ssh脚本,该脚本记录键入的密码并将其放入该PATH共享用户的密码中(这很容易做到)。现在,下一个与共享用户一起登录到该计算机并决定转到ssh其他地方(这次使用他的个人非共享帐户)的人可能会感到讨厌。

基本上,在计算机上使用共享帐户就像从公共游泳池的足浴喝水。


1

通常,由于以下原因,共享一个帐户是个坏主意:

  1. 为该用户进行的每个设置都会影响每个登录的用户。(提示,别名等)
    1. 您无法找出谁做了什么(问责制)
    2. 帐户配置中的一个错误(例如,意外删除了ssh kay)会影响使用该用户帐户的所有人(在该示例中为锁定)。

并且可以肯定,还有更多的弊端...但是我不想进一步探讨它。

关键是,您可能需要共享一个帐户来管理在某个用户帐户下执行的服务,所有管理员都应该可以访问该帐户。

在这样的设置中,您可以共享该帐户进行登录(对于上述情况,我宁愿不这样做),也可以单独登录然后将用户切换到共享帐户(我建议这样做)。

审核工具仍将允许您跟踪谁执行了什么但仍共享同一帐户。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.