限制切换到 root 帐户的并发用户数量?

限制切换到 root 帐户的并发用户数量?

这适用于 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 身份登录。必须有一种符合 PCI 要求的方法来解决 Linux 环境中的这个问题。

答案1

这解决了我的问题:记录管理员在生产服务器上运行的所有命令

概括

1)安装auditd

2)execve使用 audit.rules 中的规则审计系统调用

-a exit,always -F arch=b64 -F euid=0 -S execve
-a exit,always -F arch=b32 -F euid=0 -S execve

3)添加audit=1到 grub.conf

Centos 和 Ubuntu 的示例:

#Centos
grep audit=1  /etc/default/grub || \
( sed -i.bak -e '/^GRUB_CMDLINE_LINUX=/ s/" *$/ audit=1"/' /etc/default/grub && \
/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg )

#ubuntu
grep audit=1  /etc/default/grub || \
( sed -i.bak -e '/^GRUB_CMDLINE_LINUX=/ s/" *$/ audit=1"/' /etc/default/grub && \
/usr/sbin/update-grub )

4)将此行放入这些文件 /etc/pam.d/{login,kdm,sshd}

session  required                pam_loginuid.so

(我添加了这个摘要,因为链接到解决方案违背了 Serverfault 方式)

相关内容