我一直在尝试升级我们公司 Web 服务器上的 OpenSSH 以符合 PCI 标准。但我无论如何也想不出如何做到这一点。
我尝试通过 SSH 执行以下命令(及其输出):
# ssh -V
OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009
# sudo apt-get install openssh-server openssh-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-server is already the newest version.
openssh-client is already the newest version.
The following packages were automatically installed and are no longer required:
[list removed due to length]*
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.
# apt-get install openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-server is already the newest version.
The following packages were automatically installed and are no longer required:
[list removed due to length]*
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 73 not upgraded.
*我删除了列表以便于阅读。
我不确定这是否相关,但我也运行了 apt-get upgrade,似乎这个系统没有定期更新(但我没有升级任何东西,以免破坏之前的一些东西)。由于我在从事这份工作之前没有任何系统管理经验,我不知道发布这些信息是否会危及任何事情,所以除非必要,否则我不会这样做。
答案1
需要注意的是,Debian、RedHat 等公司会将安全修复程序反向移植到他们的软件包中,但实际上不会将软件完全升级到最新版本。这是为了保持其主要版本的版本稳定性(例如,如果您正在运行 RHEL 6.5,您将运行 OpenSSH 5.3p1,即使 OpenSSH 6.4 目前可用)。
PCI 扫描可能只查看报告的版本号。您应该检查软件包更新日志以验证这些特定漏洞是否已得到解决(即,扫描标记了 CVE-xxxx,并且它影响版本 5.4;软件包更新日志会显示该 CVE 的修复程序已在某日移植到 5.3p1)。如果您已更新到最新版本,则无需执行任何操作。
你能安装最新最好的 OpenSSH(或任何其他软件)以满足 PCI 要求。没有人会阻止你这样做。这种方法的问题在于,你可能必须承担保持自定义安装软件升级的责任,可能是在构建你自己的软件包方面(尽管使用 openssh,可能有一些 repo 会在软件包中包含最新版本),或者依靠比 Red Hat 或 Canonical 小得多的实体来不断推出最新的软件包。在这种情况下,往往会发生新的漏洞出现,除非你注意,否则你将开始落后。最好依靠某个负责保持最新状态的人,并确保有一个 QA 流程来表明不会出现任何问题。让 Red Hat、Canonical 等公司的人做他们的工作,按照他们喜欢的方式应用他们的反向移植,然后在 PCI 扫描上加一个星号。你真的不想维护自己的包。
从管理角度来看,PCI 扫描仪应被视为一种工具,可帮助显示您可能存在漏洞的位置;您对(有点钝的)工具的结果的处理方式更多的是一个管理决策(即,如果这是内部的,那么您只需在您自己的公司内部做一个记录,无论扫描报告显示什么,这个问题都已经解决了;如果它是供外部使用的,您需要向相关方告知问题已经解决,并且您不会偏离 Ubuntu 打包,因为那是一个更糟糕的选择。)您可以比通用扫描仪更好地了解您的系统。