在符合 PCI-DSS 的 Linux 集群中审计

ric*_*ard 5 linux cluster ssh root pci-dss

我熟悉配置 Linux 服务器以符合PCI-DSS 3.2 的一些更常见的方法,至少符合SAQ A的要求。一个常见的问题是要求 8.5,它要求:

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

这包括 root 用户,显然不能被禁用,因此需要“补偿控制”(在 PCI-DSS 的术语中)。一个常见的配方是以下的一些变体:

  • 禁用以 root 身份登录;
  • 需要登录ssh才能使用 SSH 密钥;
  • 用于sudo获取root;
  • pam_loginuid一旦用户有root,安装记录登录用户ID;和
  • 安装和配置auditd以记录 root 操作和登录用户 ID。

但是,如果我今天要处理,它不是我要保护的单一机器:它是一个小型集群(目前有 10 台机器),并且能够在机器之间ssh(和scp文件)进行(和文件)真的非常有用。作为非 root 用户必须这样做将是一个真正的痛苦:几乎总是你需要的文件只能被 root 读取,并且需要放在一些只有 root 可以写入的地方。

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

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

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