在我的组织中,我们想在一片混乱之后实施用户管理标准。我们(组织)和客户能够访问 root 用户,他们所做的更改导致服务器瘫痪。然而,我们却因篡改配置文件而受到指责。
为了解决未来的任何问题,我们设计了一个模型,无论它是否是最佳实践,获得输入都会有所帮助。
步骤 1 - 具有 sudo 访问权限的 root 用户和非 root 用户
我们希望以以下方式吸引用户 -
- 根用户 -> 出于安全目的,禁止通过 SSH 登录,或仅通过 SSH 密钥和释义进行访问。只有我的团队中的一名成员可以访问根帐户。
- 两个非root用户->一个用于我的团队,另一个用于客户。
第 2 步 - 对服务具有有限访问权限的非 root 用户
这些将是只能访问一项服务的个人用户。
- 完全访问服务器 - Apache 或 Nginx
- 完全访问 MySQL
我们可以让更多用户使用不同的服务。除分配的服务外,其他用户无法访问其他服务。
步骤 3 - 在日志文件中审核每个用户的命令
- 我们想要运行一个 cronjob,记录任何用户在服务器上执行的每个命令。
- 我们需要它来识别谁在何时做出了更改。
对于审计,我寻找了一些解决方案,其中大多数涉及启动命令,例如脚本,在开始工作之前。我希望某些东西始终运行,无需任何手动干预。即使服务器重新启动。
请让我知道我们是否可以这样做或者是否有更好的方法来管理它们。
答案1
虽然这个想法听起来不错,但你提出它的方式表明,你需要的知识太少,无法在生产层面实现你的想法。你要求的是一门关于基本用户/组事实和附加机制(如 SELinux)的 Linux 速成课程。在我看来,你应该找个人来做这项工作。
更新:
1.)组织责任
这种情况的发生是因为职责不明确。谁真的需要 root 帐户?管理员和仅有的管理员。其余的是服务。因此,永远不要经常与其他人共享 root/sudo 帐户(支持人员除外)。
2.) 如果管理员允许,非 root/sudo 用户可以启动和停止某些服务:
2a.) 你可以使用以下命令使某些文件对非 root/sudo 用户可执行setUID
,setGUID
2b.) 您可以在用户空间中运行用户服务。手动安装 Nginx 和 Mysql 即可/home/client
完成!
3.) 说到审计,我猜这history
在开始时就足够了。用户没有特权,并且处于您的信任链中。
答案2
正如评论所说,selinux 和 auditd,还有 psacct 来查看用户运行的进程,甚至可能还有 puppet 或其他东西来强制配置。如果进行了未经授权的更改,那么 puppet 会将配置更改回官方的良好状态。