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


20

我们有运行基于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. 我当前的RPM自动(通过cron进行编程)告知我们是否存在漏洞。
  2. (可选)是否自动安装解决安全漏洞所需的最低升级,该升级可能yum update-minimal --security在命令行上?

我已经考虑过使用yum-plugin-changelog打印每个程序包的变更日志,然后解析某些字符串的输出。是否已有任何工具可以执行此操作?


您是否有任何配置管理系统?木偶?CFEngine?
ewwhite 2012年

是的,我有Cfengine。我在考虑木偶。
Stefan Lasiewski'3

2
yum-updatesd曾经做过类似的事情(通知新更新,并提及是否有安全更新)-但我不认为它在CentOS 6(或EPEL)存储库中。您也许可以相当容易地在CentOS Wiki上修改脚本。
cyberx86 2012年

Answers:


8

如果您绝对想使用yum security plugin,尽管有一些详细说明,但是有一种方法可以做到这一点。但是,一旦设置完成,它就会全部自动化。

唯一的要求是您至少需要订阅RHN。IMO是一项不错的投资,但是请坚持到底。

  1. 获得订阅后,您可以使用mreporeposync来建立内部的Yum存储库,该存储库可镜像CentOS存储库。(或者您可以只使用rsync)。
  2. 然后使用此邮件列表文章中附带的脚本,定期连接到您的RHN订阅,下载安全软件包信息。现在,您有两个选择。
    1. 从生成的“ updateinfo.xml”文件中仅提取软件包名称。然后使用p或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这样的重量级解决方案更简单。


6

现在,科学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 ~]#


2

由于您拥有CFEngine,因此可以根据发布在以下位置的安全更新,将更改一次应用于系统组:http : //twitter.com/#!/ CentOS_Announce

我不是那里最大的服务器安全工程师...但是我倾向于发现我只关心一些涉及安全性的软件包。任何面向公众(ssl,ssh,apache)或具有重大漏洞利用的事物都将被优先考虑。其他所有内容均按季度评估。我不希望这些东西自动升级,因为更新的软件包可能会破坏生产系统上的其他项目。


上述Twitter提要是IMO在2017年以来的不建议。自2012
。– slm

2

科学的Linux(至少是6.2和6.3,我没有任何6.1系统左一),不仅支持yum-plugin-security,但对于配置文件yum-autoupdate/etc/sysconfig/yum-autoupdate允许你只启用安全更新的安装。

# USE_YUMSEC
#   This switches from using yum update to using yum-plugin-security
#     true  - run 'yum --security' update rather than 'yum update'
#     false - defaults to traditional behavior running 'yum update' (default)
#   + anything other than true defaults to false
#USE_YUMSEC="false"
USE_YUMSEC="true"


1

您也可以尝试generate_updateinfo项目。这是一个python脚本,用于处理CEFS项目errata.latest.xml编译的文件并生成带有安全更新元数据的文件。然后,您可以将其注入到本地CentOS 6(7)更新存储库中。将其与命令创建的自定义/本地存储库集成起来非常简单:updateinfo.xmlcreaterepo

  • reposync命令的镜像存储库
  • 使用createrepo命令创建本地存储库
  • updateinfo.xml使用generate_updateinfo.py脚本下载并生成文件
  • 使用modifyrepo命令将生成的安全更新元数据注入本地存储库

-1

在CentOS6上,您可以使用yum-security插件:

yum install yum-security

检查:

yum --security check-update

如果没有安全更新可用,此命令将返回代码0。

与yum-cron结合使用,您可以通过修改文件/ etc / sysconfig / yum-cron来仅获得有关可用安全更新的电子邮件:

YUM_PARAMETER="--security"

1
Yum安全插件在CentOS6上对我不起作用。但是,它确实可以在RHEL和Scientific Linux上运行。
Stefan Lasiewski 2014年

这是什么意思“它不起作用”。它是CentOS6-Base的一部分,并在这里的许多安装中安装。yum-plugin-security.noarch 1.1.30-17.el6_5 @updates
Bertl 2014年

1
我的意思是,当我运行时yum --security check-update,命令以返回No packages needed for security; 137 packages available。我知道某些可用更新包含安全修复程序。这些更新在CentOS的“基本”存储库中可用,但未标记为安全修补程序。与Red Hat,Scientific Linux和EPEL不同,CentOS当前不为安全补丁提供yum存储库。
Stefan Lasiewski 2014年

1
如果它适合您,您可以说明它如何工作吗?
Stefan Lasiewski 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.