Назад | Перейти на главную страницу

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

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

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

Scientific Linux 6 не поддержка yum-plugin-security с конца 2011 г.. Он поставляется с /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 чтобы распечатать журнал изменений для каждого пакета, а затем проанализировать вывод на наличие определенных строк. Есть ли инструменты, которые это уже делают?

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

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

  1. Если у вас есть подписка, вы можете использовать мрепо, или репосинхронизация, чтобы настроить внутреннее репо 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.

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

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

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

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/#!/CentOS_Announce

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

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

yum list updates

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

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

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

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

yum install yum-security

Проверить с:

yum --security check-update

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

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

YUM_PARAMETER="--security"