在 CentOS 或 Scientific Linux 上自动检查安全更新?

在 CentOS 或 Scientific Linux 上自动检查安全更新?

我们有运行基于 RedHat 的发行版(如 CentOS 或 Scientific Linux)的机器。我们希望系统自动通知我们已安装的软件包是否存在任何已知漏洞。FreeBSD 使用端口管理/portaudit港口。

RedHat 提供yum 插件安全,可以通过 Bugzilla ID 检查漏洞,漏洞漏洞ID 或咨询 ID。此外,Fedora 最近开始支持yum 插件安全。我相信这是在 Fedora 16 中添加的。

Scientific Linux 6 没有自 2011 年底起支持 yum-plugin-security。它确实附带了/etc/cron.daily/yum-autoupdate,可每天更新 RPM。不过,我认为这不仅仅处理安全更新。

CentOS 确实不支持yum-plugin-security

我监控 CentOS 和 Scientific Linux 邮件列表以获取更新,但这很繁琐,我想要一些可以自动化的东西。

对于我们这些维护 CentOS 和 SL 系统的人来说,有没有什么工具可以:

  1. 自动(以程序方式,通过 cron)通知我们我的当前 RPM 是否存在已知漏洞。
  2. 可选地,自动安装解决安全漏洞所需的最低升级,这可能yum update-minimal --security在命令行上?

我考虑过yum-plugin-changelog打印出每个包的变更日志,然后解析输出中的某些字符串。有没有可以做到这一点的工具?

答案1

如果你确实想使用yum security plugin,有一种方法可以做到这一点,尽管有点复杂。但一旦你设置好了,一切都是自动化的。

唯一的要求是您需要至少订阅一次 RHN。在我看来,这是一项不错的投资,但让我们坚持主题。

  1. 订阅后,您可以使用回购, 或者重新同步,设置一个内部 Yum 仓库,镜像 CentOS 仓库。(或者您也可以使用 rsync)。
  2. 然后使用附带的脚本邮件列表帖子,定期连接到您的 RHN 订阅,下载安全包信息。现在您有两个选择。
    1. 从生成的“updateinfo.xml”文件中提取软件包名称。然后使用该信息使用 puppet 或 cfengine 或 ssh-in-a-for-loop“搜索”您的服务器以查找需要安全或其他更新的 Rpm。这更简单,为您提供一切你想要,但你不能使用yum security
    2. 另一个选项是使用modifyrepo如下所示的命令这里,注入updateinfo.xmlrepomd.xml执行此操作时,您必须修改 perl 脚本以将 xml 中的 Rpm MD5 总和从 RHN 更改为 Centos 总和。并且您必须确保 CentOS 存储库是否确实包含 中提到的所有 Rpm updateinfo.xml,因为它们有时落后于 RHN。但没关系,您可以忽略 CentOS 未赶上的更新,因为您对此无能为力,只能从 SRPM 构建它们。

使用选项 2,您可以yum security在所有客户端上安装插件,并且它将起作用。

编辑:这也适用于 Redhat RHEL 5 和 6 机器。而且比使用 Spacewalk 或 Pulp 等重量级解决方案更简单。

答案2

Scientific Linux 现在可以从命令行列出安全更新。此外,我可以更新系统以仅应用安全更新,这比默认设置更好(“只更新所有内容!包括您不关心的和引入回归的错误修复。”)

我已经在 Scientific Linux 6.1 和 6.4 上测试过这个功能。我不确定这个功能是什么时候正式发布的,但我会在找到答案后发布更多信息。

这里有些例子。

列出安全更新摘要:

[root@node1 ~]# yum updateinfo
Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
Updates Information Summary: available
    4 Security notice(s)
        1 important Security notice(s)
        3 moderate Security notice(s)
    2 Bugfix notice(s)
updateinfo summary done

root@node1 ~]# yum list-sec
Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
SLSA-2013:1459-1 moderate/Sec.  gnupg2-2.0.14-6.el6_4.x86_64
SLSA-2013:1436-1 moderate/Sec.  kernel-2.6.32-358.23.2.el6.x86_64
SLSA-2013:1436-1 moderate/Sec.  kernel-devel-2.6.32-358.23.2.el6.x86_64
SLSA-2013:1436-1 moderate/Sec.  kernel-firmware-2.6.32-358.23.2.el6.noarch
SLSA-2013:1436-1 moderate/Sec.  kernel-headers-2.6.32-358.23.2.el6.x86_64
SLSA-2013:1457-1 moderate/Sec.  libgcrypt-1.4.5-11.el6_4.x86_64
SLSA-2013:1270-1 important/Sec. polkit-0.96-5.el6_4.x86_64
SLBA-2013:1486-1 bugfix         selinux-policy-3.7.19-195.el6_4.13.noarch
SLBA-2013:1491-1 bugfix         selinux-policy-3.7.19-195.el6_4.18.noarch
SLBA-2013:1486-1 bugfix         selinux-policy-targeted-3.7.19-195.el6_4.13.noarch
SLBA-2013:1491-1 bugfix         selinux-policy-targeted-3.7.19-195.el6_4.18.noarch
updateinfo list done

按 CVE 列出:

[root@node2 ~]# yum list-sec cves
Loaded plugins: changelog, downloadonly, fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
 * epel: mirrors.kernel.org
 * sl6x: ftp.scientificlinux.org
 * sl6x-security: ftp.scientificlinux.org
7404 packages excluded due to repository priority protections
 CVE-2012-6085 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64
 CVE-2013-4351 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64
 CVE-2013-4402 moderate/Sec. gnupg2-2.0.14-6.el6_4.x86_64
 CVE-2013-4162 moderate/Sec. kernel-2.6.32-358.23.2.el6.x86_64
 CVE-2013-4299 moderate/Sec. kernel-2.6.32-358.23.2.el6.x86_64
 CVE-2013-4162 moderate/Sec. kernel-firmware-2.6.32-358.23.2.el6.noarch
 CVE-2013-4299 moderate/Sec. kernel-firmware-2.6.32-358.23.2.el6.noarch
 CVE-2013-4242 moderate/Sec. libgcrypt-1.4.5-11.el6_4.x86_64
updateinfo list done

然后我可以应用所需的最小更改来

[root@node1 ~]# yum update-minimal --security

或者,直接修补所有内容:

[root@node1 ~]# yum --quiet --security check-update

gnutls.x86_64                                      2.8.5-14.el6_5                                     sl-security
libtasn1.x86_64                                    2.3-6.el6_5                                        sl-security
[root@node1 ~]# yum --quiet --security update

=================================================================================================================
 Package                 Arch                  Version                          Repository                  Size
=================================================================================================================
Updating:
 gnutls                  x86_64                2.8.5-14.el6_5                   sl-security                345 k
 libtasn1                x86_64                2.3-6.el6_5                      sl-security                237 k

Transaction Summary
=================================================================================================================
Upgrade       2 Package(s)

Is this ok [y/N]: Y
[root@node1 ~]#

如果我在 CentOS6 机器上尝试同样的命令,则不会得到任何结果。我确实知道“137 个可用软件包”中的一些包含安全修复程序,因为我昨天通过 CentOS 邮件列表收到了勘误表通知。

[root@node1 ~]# yum --security check-update 
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * epel: mirrors.kernel.org
 * extras: mirror.web-ster.com
 * updates: mirrors.kernel.org
Limiting package lists to security relevant ones
No packages needed for security; 137 packages available
[root@node1 ~]#

答案3

我也遇到了同样的问题。我尝试创建一些 Python 代码来汇总 Yum 更新和来自上述 steve-meier Errata 站点的建议(我根据已安装的软件包进行过滤)。

如果有帮助的话,这里是来源:https://github.com/wied03/centos-package-cron

答案4

由于您拥有 CFEngine,您可以根据以下发布的安全更新随时对系统组应用更改:http://twitter.com/#!/CentOS_Announce

我不是最厉害的服务器安全工程师……但我发现,在安全方面,我只关心少数几个软件包。任何面向公众(ssl、ssh、apache)或存在重大漏洞的软件包都会获得优先考虑。其他所有软件包都会按季度进行评估。我不希望这些东西自动升级,因为更新的软件包可能会破坏生产系统上的其他项目。

相关内容