我最近开始在一家中型公司从事应用程序安全工作,此前我从事了 5 年以上的安全咨询(渗透测试等)。我从一开始就看到的最大挑战之一是安全扫描器和其他工具使用 root/管理员访问权限,因为这是供应商告诉他们使用的,很可能是因为配置方便。我真的不喜欢这个想法。例如,Nexpose 和 Nessus 都配置为使用 root 和管理员。
我的问题 - 在管理对这些特权帐户的访问方面,最佳做法是什么?我最初的想法是拥有一种密码保险库系统,该系统只知道系统的密码。然后,用户可以根据需要“签出”root/管理员密码“对于 Nessus 来说,只有少数命令以 root 身份运行,因此我认为创建一个标准用户并将其添加到 sudoers 文件中,同时仅允许那些特定命令是有意义的。
谢谢!
答案1
如果您正在寻找一个集中的群组或用户管理器,那么有很多商业应用程序可以实现这一点。
在您的 Linux 机器上禁用以 root 身份登录,并让用户以自己的身份登录。如果机器通过 LDAP 或 AD 进行身份验证,您将拥有此类交易的记录。您仍需要授予该用户对机器的特定权限。登录机器后使用 sudo 还可以使审计和跟踪更加容易。
不知道贵公司的组织结构和划分方式,这个问题就更难回答了。在我所在的公司,安全、服务器管理员和应用程序管理员是分开的部门。应用程序管理员没有运行此类工具的管理员权限,只有服务器管理员才有。服务器管理员虽然可以添加/移除/删除机器上的本地帐户,但不能更改 AD/LDAP。安全部门会审核所有服务器,以获取特定机器上的本地帐户,并需要人们证明其使用是合理的。
使用通用用户登录可能会让您的系统完全处于开放状态,无法确定是谁导致了问题。最好是锁定所有权限并根据需要授予访问权限,而不是假设人们会诚实并搞砸事情。这会增加您的工作量,但可以让您晚上睡得更好。更重要的是,如果您发现您的一台服务器被入侵并且 CIO 想知道原因,那么您将一事无成。
答案2
在我目前工作的地方,许多安全措施之一就是破解玻璃账户,只有使用记录所有活动的特权会话监视器才能访问这些账户。
对于特定系统,所有特权帐户的密码管理都交给外部密码库应用程序,甚至管理员也不知道 root/Administrator/DB-owner 等密码。
如果明确定义的 RBAC 不足且需要 root/Administrator/等访问权限,则管理员在获得安全运营团队批准后(四眼原则、带有变更/事件编号的审计跟踪)通过密码保险库请求访问权限,使用保险库中的正确凭据启动 SSH 或 RDP。管理员不会收到保险库中存储的密码的明文副本。可以监视 SSH 或 RDP 会话并将其记录下来以用于所需的审计跟踪。会话关闭后,保险库应用程序将再次更改密码。
当然,此类程序的实际安全性在很大程度上取决于配置管理、事件监控的质量和安全意识以及运营团队的总体成熟度。
您所面临的风险(实际上是现实)是,解决事件甚至安排好的工作将花费更长的时间,但至少您将拥有一条出色的审计跟踪来了解原因!
答案3
保护特权帐户对于维护安全的计算环境至关重要。在 Linux 和 Windows 中保护特权帐户的最佳做法包括:
- 对特权账户使用强密码或密码短语并定期更改。
- 限制只有需要的人才能访问特权帐户。
- 对特权账户实施多因素身份验证。
- 使用密码库或其他安全密码管理系统来存储和管理特权帐户凭据。
- 审计和监控特权帐户活动以检测任何未经授权的访问或使用。
- 实施基于角色的访问控制,以确保用户只能访问履行其工作职能所需的权限。
在您的特定场景中,使用密码库来管理 root/管理员密码并实施 sudoers 来限制标准用户的命令是一种好方法。这可确保只有授权用户才能访问特权帐户,并限制任何未经授权的访问的潜在影响。