这适用于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组中的用户.我认为那些用户是唯一被允许su su su到root的用户(基于我们现有的自定义sudo规则).
@admins hard maxlogins 1
这似乎做我想要的但看起来很笨/错.称之为直觉 – 我不太了解我认为这个错误.
最后,“为什么?”.为什么我有此要求?
我们正在尝试实施控制以满足PCI-DSS 3.1要求8.5“不要使用组,共享或通用ID,密码或其他身份验证方法” – 强调“共享”.在Windows环境中,您只授予用户执行任何操作的权限,并且没有人共享主管理员帐户. Linux环境的设计使得某些事情,您真的希望以root用户身份登录.在Linux环境中必须有符合PCI的方法来解决此问题.
解决方法
这解决了我的问题:
Log all commands run by admins on production servers
1)安装auditd
2)在audit.rules中使用这些规则审核execve系统调用
-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