强化 sudo 的最佳实践?

信息安全 硬化 须藤
2021-08-09 12:47:47

我阅读的每个强化指南都建议禁止登录 root 帐户,而是使用sudo. 如果您设置了一个严格的sudoers文件,它只为每个组和用户启用必要的命令,我可以理解这一点。但是在我踏上的每台服务器上,我只目睹了非限制性sudo配置。我想了解这是否是一种好的做法以及为什么(我仍然了解可追溯性的原因)?

所以这是我的问题:

  • 为了保持管理员行为的可追溯性,是否足以禁止su和允许?sudo(我可以想象一个用户在删除他的 bash_history 之前做了很多 sudo 操作的场景)
  • 除了 .bash_history 之外还有其他来源可用于保持可追溯性吗?管理员可以更新这样的文件(使用 sudo)吗?
  • 是否可以限制sudo -isudo -s在配置中?
  • sudo command没有强大的sudoers配置可以有实用程序吗?如果是,是哪些?

此外,对于单个用户,我只看到禁止sudo和启用的优点su实际上,使用相同密码的 root 和普通用户登录似乎是一种不好的做法。

3个回答

您的问题相当广泛,涉及几个不同的主题。最好将一些细节放在一个单独的问题中。

为了保持管理员行为的可追溯性,是否足以禁止su和允许?sudo

... sudo 命令可以在没有强大的 sudoer 配置的情况下具有实用程序吗?哪个 ?

Unrestrictedsudo有几个好处su

  • 每个人都sudoer可以使用他的个人密码。这样,如果更改了 root 密码,您就不必重新分发它。

  • sudo可以配置为记录活动。如果您的syslog配置写入远程位置,那么有人很难掩盖他们的踪迹。

但是,不受限制的root访问仍然是“不受限制的”。

  • 如果您不使用远程syslog服务器,则可以轻松覆盖轨道。

  • 为方便起见,人们通常会使用sudo -s来获取交互式 shell。这使您可以bash在受限目录上自动完成。不幸的是,syslog如果一个人被允许跑步,这些好处是无效的sudo -s还有许多替代方法sudo -s可以允许在没有特定日志记录的情况下运行命令。

(我可以想象一个用户在删除他的 bash_history 之前做了很多 sudo 操作的场景)

bash_history不得用作历史跟踪工具。这只是为了方便用户。

除了 .bash_history 之外还有其他来源可用于保持可追溯性吗?管理员可以更新这样的文件(使用 sudo)吗?

服务器上的任何文件都可以由具有无限制root访问权限的人更新。(无论是通过sudo还是su

如何跟踪root用户的活动可能是不同问题的主题。我相信 SELinux 的高级配置可以做到这一点,但它可能不实用。我不知道有任何其他方法可以跟踪root用户的活动

正如我所说,如果您有任何日志必须写入远程日志服务器,以防止这些日志被攻击者擦除。

是否可以在配置中限制 sudo -i 和 sudo -s ?

逐字回答您,这可能是可能的,但超出了本文的范围。考虑创建一个新问题。

但是,这不会解决您的问题。例如,可以使用sudo su而不是sudo -s. 可以使用sudo sudoers或更新crontab等。

解决此问题的唯一方法是sudo使用白名单“限制”这些能力。正如您所说,这并不常见,但肯定是实现任何详细程度的可靠可追溯性目标的唯一方法。

希望这可以帮助。随时要求澄清我的答案,或者如果您有新问题,请根据您目前所学的内容发布更具体的问题。

谈到你的最后一句话,我实际上在我的 SSH 服务器上做了一些事情。我在那里有两个用户:ssh_usersudo_user. Onlyssh_user被允许登录,但他不在 sudoers 中,必须发出su sudo_user命令才能完成任务。这提供了额外的防线:即使攻击者获得了凭据ssh_user(例如,通过窃取我的 putty 配置文件),他也不会立即访问服务器sudo/etc/shadow在服务器上,并且必须暴力破解密码sudo_user或运行利用系统获取root访问权限。

当然,一旦攻击者获得了ssh_user帐户的访问权限,服务器就会受到威胁,但我希望这个技巧能给我一点额外的时间来在实际损坏造成之前做出反应。

至于这个:

使用相同的密码以 root 和普通用户登录似乎是一种不好的做法。

sudo可以配置为询问“目标”用户的密码,或者是 root 密码,而不是运行用户的密码。因此,对于单个用户,您可以拥有不同的非特权密码和管理员密码。对于多个管理员来说,他们都应该有不同的密码来进行非特权和管理员访问,通过创建具有 uid 0 的其他用户更难并且可能最简单。

来自sudoers(5)

[sudo] 验证调用用户的凭据,而不是目标用户(或根用户)的凭据。这可以通过rootpw,targetpwrunaspw标志进行更改,稍后将介绍。