Автоматически проверять наличие обновлений безопасности в CentOS или Scientific Linux?

У нас есть машины с дистрибутивами на базе RedHat, такими как CentOS или Scientific Linux. Мы хотим, чтобы системы автоматически уведомляли нас о любых известных уязвимостях в установленных пакетах. FreeBSD делает это с портом ports-mgmt/portaudit.

RedHat обеспечивает yum-plugin-security, который может проверять уязвимости по их идентификатору Bugzilla, CVE или консультативному идентификатору. Кроме того, недавно Fedora начала поддерживать yum-plugin-security. Я считаю, что это было добавлено в Fedora 16.

Scientific Linux 6 не поддерживал безопасность yum-plugin-безопасности с конца 2011 года. Это поставляется с /etc/cron.daily/yum-autoupdate, который обновляет обороты ежедневно. Я не думаю, что это обрабатывает только обновления безопасности, однако.

CentOS не поддерживаетyum-plugin-security,

Я отслеживаю обновления списков рассылки CentOS и Scientific Linux, но это утомительно, и я хочу что-то, что можно автоматизировать.

Для тех из нас, кто поддерживает системы CentOS и SL, есть ли инструменты, которые могут:

  1. Автоматически (программно, через cron) сообщать нам, если есть известные уязвимости в моих текущих RPM.
  2. При желании можно автоматически установить минимальное обновление, необходимое для устранения уязвимости в системе безопасности, которая, вероятно, yum update-minimal --security в командной строке?

Я рассмотрел использование yum-plugin-changelog распечатать журнал изменений для каждого пакета, а затем проанализировать выходные данные для определенных строк. Есть ли инструменты, которые делают это уже?

8 ответов

Решение

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 ~]#

Если вы абсолютно хотите использовать yum security plugin Есть способ сделать это, хотя немного сложнее. Но как только вы это настроите, все будет автоматизировано.

Единственное требование - вам необходимо иметь хотя бы одну подписку на RHN. Что является хорошим инвестиционным ИМО, но давайте придерживаться сути.

  1. Получив подписку, вы можете использовать mrepo или reposync для настройки внутреннего репозитория Yum, отражающего репозитории CentOS. (или вы можете просто использовать rsync).
  2. Затем используйте скрипт, прикрепленный к этому сообщению в списке рассылки, чтобы периодически подключаться к вашей подписке RHN, чтобы загружать информацию о пакетах безопасности. Теперь у вас есть два варианта.
    1. Извлеките только имена пакетов из сгенерированного файла "updateinfo.xml". И используйте эту информацию для "поиска" на ваших серверах Rpms, нуждающихся в безопасности или других обновлениях, используя puppet или cfengine или ssh-in-a-for-loop. Это проще, дает вам все, что вы хотите, но вы не можете использовать yum security,
    2. Другой вариант заключается в использовании modifyrepo команда, как показано здесь, чтобы ввести updateinfo.xml в repomd.xml, Перед этим вам нужно будет изменить скрипт perl, чтобы изменить суммы Rpm MD5 внутри xml, от значений RHN до Centos. И вы должны будете убедиться, что репозитории CentOS действительно имеют все Rpms, упомянутые в updateinfo.xml, поскольку они иногда отстают от RHN. Но это нормально, вы можете игнорировать обновления, с которыми CentOS не догнал, так как мало что можно с этим поделать, за исключением построения их из SRPM.

С вариантом 2, вы можете установить yum security Плагин на всех клиентах, и он будет работать.

Изменить: Это также работает для Redhat RHEL 5 и 6 машин. И это проще, чем использование тяжелого решения, такого как Spacewalk или Pulp.

У меня такая же проблема. Я попытался создать некоторый код на Python, чтобы собрать обновления Yum и рекомендации с упомянутого выше сайта Steve-Meier Errata (я фильтрую его на основе установленных пакетов).

В случае, если это помогает, вот источник: https://github.com/wied03/centos-package-cron

На CentOS вы можете использовать

yum list updates

вместо yum-plugin-security или, может быть, вы хотите попробовать это сканирование сценариев на основе новостных лент безопасности CentOS: LVPS.

Scientific 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"

Поскольку у вас есть CFEngine, вы можете применять изменения к группам систем одновременно на основе обновлений безопасности, размещенных по адресу: http://twitter.com/

Я не самый большой инженер по серверной безопасности... но я склонен считать, что мне небезразлично лишь несколько пакетов, когда речь заходит о безопасности. Все, что является общедоступным (ssl, ssh, apache) или имеет существенный эксплойт, получает приоритет. Все остальное оценивается ежеквартально. Я не хочу, чтобы эти вещи обновлялись автоматически, потому что обновленные пакеты могут потенциально сломать другие элементы в производственной системе.

Вы также можете попробовать создать generate_updateinfo проект. Это скрипт Python, который обрабатывает errata.latest.xml файл, скомпилированный проектом CEFS и генерирующий updateinfo.xml файл с метаданными обновлений безопасности. Затем вы можете добавить его в свой локальный репозиторий обновлений CentOS 6 (7). Довольно просто интегрировать его с пользовательскими / локальными репозиториями, созданными createrepo команда:

  • зеркальный репозиторий с reposync команда
  • создать локальный репозиторий с createrepo команда
  • скачать и сгенерировать updateinfo.xml файл с generate_updateinfo.py скрипт
  • внедрить сгенерированные метаданные обновлений безопасности в локальный репозиторий с помощью modifyrepo команда

Для Centos 6, Centos 7 и Centos 8 самый простой способ - использовать Updateinfo Стива Мейера : репозиторий yum с информацией об ошибках CentOS.

Это готовое репо yum, которое обслуживает и обновляет автор проекта CEFS.

Это платная услуга, но на данный момент она стоит всего 3 доллара в месяц за неограниченное количество серверов (но рекомендуется использовать зеркало для большого парка).


Обратите внимание, что это то же самое, что вы можете сделать самостоятельно в соответствии с ответом dsmsk80. Но разве вы не предпочитаете поддерживать энтузиаста, который сделал это решение возможным?:)

На CentOS6 вы можете использовать плагин yum-security:

yum install yum-security

Проверить с:

yum --security check-update

Эта команда возвращает код 0, если нет доступных обновлений безопасности.

В сочетании с yum-cron вы можете получать электронную почту только при наличии доступных обновлений безопасности, изменив файл / etc / sysconfig / yum-cron:

YUM_PARAMETER="--security"
Другие вопросы по тегам