这适用于 Ubuntu 14.04 和 Centos 7。
我需要限制以 root 身份运行的用户数量。即在 CLI 上以 root 身份登录。
基本上,我一次只希望一个用户能够以 root 身份运行命令。这里的目的是审计。
我查看了 /etc/security/limits.conf 中的设置限制,但 pam_limits.so 模块似乎只影响登录。或登录shell。没有把握。但无论具体如何,它确实会阻止用户多次通过 SSH 连接到一个盒子,但不会阻止多个用户通过“sudo su”成为 root。因此,设置limits.conf 仍然可以允许多个用户一次以root 身份登录。
这是我尝试的限制这一点的limits.conf行:
root hard maxlogins 1
接下来我尝试限制@admins 组中的用户。我认为这些用户是唯一允许 sudo su 到 root 的用户(基于我们现有的自定义 sudo 规则)。
@admins hard maxlogins 1
这似乎做了我想要的,但似乎笨重/错误。称之为直觉——我不太了解我认为这个错误的地方。
最后,“为什么?”。为什么我有这个要求?
我们正在尝试实施控制以满足 PCI-DSS 3.1 要求 8.5“不要使用组、共享或通用 ID、密码或其他身份验证方法”——强调“共享”。在 Windows 环境中,您只需授予用户执行任何操作的权限,并且没有人共享主管理员帐户。Linux 环境的设计使得在某些情况下,您确实希望以 root 身份登录。在 Linux 环境中必须有一种符合 PCI 的方法来解决这个问题。
这解决了我的问题:记录管理员在生产服务器上运行的所有命令
概括
1)安装审核
2)
execve
在 audit.rules 中使用这些规则审计系统调用3) 添加
audit=1
到 grub.confCentos 和 Ubuntu 的示例:
4) 将此行放在这些文件 /etc/pam.d/{login,kdm,sshd}
(我包含此摘要,因为链接到解决方案违反了 Serverfault 方式)