符合 PCI-DSS 标准的 Linux 集群中的 Auditd

符合 PCI-DSS 标准的 Linux 集群中的 Auditd

我熟悉一些配置 Linux 服务器以符合以下要求的常见方法PCI-DSS 3.2,至少满足问卷调查. 人们普遍关心的是要求 8.5,其要求:

通用用户 ID 和帐户已被禁用或删除

这包括根用户,显然无法禁用,因此需要“补偿控制”(PCI-DSS 术语)。常见菜谱是下列内容的一些变体:

  • 禁止以 root 身份登录;
  • 需要ssh使用 SSH 密钥登录;
  • 使用sudo来获取root权限;
  • 安装pam_loginuid以记录用户获得 root 权限后的登录用户 ID;以及
  • 安装并配置auditd以记录根操作和登录用户 ID。

然而,就我今天要处理的情况而言,我要保护的并不是一台机器:它是一个小型集群(目前有 10 台机器),能够在机器之间进行通信ssh(和scp文件)真的非常有用。作为非 root 用户这样做会非常麻烦:几乎总是你需要的文件只有 root 才能读取,并且需要放在只有 root 才能写入的地方。

我想要做的是允许ssh在机器之间以 root 身份进行操作,使用服务器上的 SSH 密钥。这是很容易使用块中的命令/etc/ssh/sshd_config。我不太担心允许已攻陷一台机器的人控制整个集群的安全隐患:这些机器非常相似,如果他们设法攻陷一台机器,他们可能可以使用相同的过程来访问其余机器。PermitRootLoginMatch Address

但是,如果我这样做,我将失去跟踪谁在运行什么命令的能力,因为当我ssh转到另一台机器时,无登录 UID 不再附加到该进程。PCI-DSS 中的补偿控制需要“满足原始 PCI DSS 要求的意图和严格性”,并且要求 8.5 的意图是使“跟踪个人的系统访问和活动”成为可能。如果不保留登录 UID,我们将不再提供允许 root 用户存在的补偿控制。

我希望找到一种在以 root 身份登录时将 loginuid 从一台服务器传递到另一台服务器的方法,可能是将其放入环境中。我不介意这需要隐式信任原始服务器:它已经是了。有人能建议一种这样做的方法吗?或者如果做不到这一点,另一种以 root 身份跟踪特定用户的系统管理员活动的方法,同时允许在机器之间轻松ssh进行?scp

相关内容