我一直面临着在一个场景中审计系统安全性并给出我们必须审计的各个领域的挑战。其中大部分很容易理解,并提供漏洞以及缓解漏洞。但是其中一个是用户名,我对此一无所知。我被指导并被告知使用sudo su和less /etc/passwd来查看用户名列表,这很容易。
唯一的潜在漏洞是,如果您没有用户名,您将无法破解/使用密码来访问帐户,那么任何人都可以做些什么来缓解这种情况呢?这让我难倒了好几个星期。
我一直面临着在一个场景中审计系统安全性并给出我们必须审计的各个领域的挑战。其中大部分很容易理解,并提供漏洞以及缓解漏洞。但是其中一个是用户名,我对此一无所知。我被指导并被告知使用sudo su和less /etc/passwd来查看用户名列表,这很容易。
唯一的潜在漏洞是,如果您没有用户名,您将无法破解/使用密码来访问帐户,那么任何人都可以做些什么来缓解这种情况呢?这让我难倒了好几个星期。
您可以通过使用外部服务器(可能是 LDAP、Samba、NIS、..)来进行用户身份验证,或者使用网络文件系统(NFS、Samba、..)作为主目录,和/或基于 UID 进行创建来缓解这种情况而不是用户名。
如果您决定实现这一点,请仔细检查网络身份验证不会将条目填充到密码文件中 - IIRC,某些系统会这样做。
尽管用户名通常不被视为一种风险,但它是用户+密码/密钥身份验证机制所需信息的 50% - 这就是为什么表现良好的登录机制会说“用户名或密码错误”而不是“密码错误”的原因.
另一个考虑因素是,在某些情况下,用户名很容易映射到电子邮件地址,因此攻击者可以使用它来收集有用的数据。
一个更偏执的考虑是,在多用户解决方案中,想要破解的授权用户可能希望在其他人的登录下工作。
一般来说,我同意用户名不被视为敏感信息,但我听说过您不想到处宣传您的用户列表的情况。
考虑一个接受 SSH 连接的 *nix 服务器。一个好的 SSH 实现不会告诉您登录失败是因为用户名还是密码。如果没有用户名列表,攻击者必须猜测两个用户名和密码。当然,这些不是圣杯root用户,但你永远不知道,其中一个可能在sudoers. 同样,聪明的攻击者可能有其他嗅探用户名的方法,但这是一个想法......
您自己回答了这个问题,看到用户名不是漏洞。即使,通常攻击者或内部人员只会对一个帐户感兴趣,那就是 root。您可以限制在系统上显示其他用户的可能性,但它是您无法隐藏的 root 用户,这是唯一相关的。