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

Ste*_*ski 22 security redhat centos yum scientific-linux

我们的机器运行基于 RedHat 的发行版,例如 CentOS 或 Scientific Linux。如果安装的软件包存在任何已知漏洞,我们希望系统自动通知我们。FreeBSD 使用ports-mgmt/portaudit端口来做到这一点。

RedHat 提供yum-plugin-security,它可以通过 Bugzilla ID、CVE ID 或建议 ID检查漏洞。此外,Fedora 最近开始支持yum-plugin-security。我相信这是在 Fedora 16 中添加的。

截至 2011 年底, Scientific Linux 6 不支持 yum-plugin-security。它确实附带/etc/cron.daily/yum-autoupdate,它每天更新 RPM。但是,我认为这不仅仅处理安全更新。

CentOS 不支持yum-plugin-security.

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

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

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

我已经考虑使用yum-plugin-changelog打印出每个包的变更日志,然后解析某些字符串的输出。是否有任何工具可以做到这一点?

Not*_*Now 8

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

唯一的要求是您至少需要订阅一个 RHN。这是一个很好的投资 IMO,但让我们坚持这一点。

  1. 订阅后,您可以使用mreporeposync来设置内部 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 这样的重量级解决方案更简单。


Ste*_*ski 6

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
Run Code Online (Sandbox Code Playgroud)

按 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
Run Code Online (Sandbox Code Playgroud)

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

[root@node1 ~]# yum update-minimal --security
Run Code Online (Sandbox Code Playgroud)

或者,只需修补所有内容:

[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 ~]#
Run Code Online (Sandbox Code Playgroud)

如果我在 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 ~]#
Run Code Online (Sandbox Code Playgroud)


小智 5

我有同样的问题。我尝试创建了一些 Python 代码,以便将上面提到的 steve-meier Errata 站点中的 Yum 更新和建议汇总在一起(我根据已安装的软件包对其进行过滤)。

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