Глава 3. Обновления системы безопасности

По мере обнаружения уязвимостей в системе безопасности, правильное программное обеспечение должно обновляться с целью ликвидации потенциальной угрозы. Если программа является частью пакета, включённого в состав поддерживаемой версии Red Hat Enterprise Linux, компания Red Hat, Inc. обязуется как можно скорее выпустить обновлённый пакет, ликвидирующий эту уязвимость. Часто сообщения о какой-либо уязвимости сразу сопровождаются заплаткой (или исходным кодом, решающим проблему). Затем эта заплатка применяется к пакету Red Hat Enterprise Linux, проверяется отделом контроля качества Red Hat, и выпускается в виде исправления ошибки. Однако если сообщение об ошибке не содержит заплатки, это означает, что разработчики Red Hat вместе с производителями программного продукта решают эту проблему. Когда проблема решена, пакет проверяется и выпускается исправление ошибки.

Если для программного продукта, используемого в вашей системе, выпущено исправление, настоятельно рекомендуется максимально быстро обновить связанные пакеты, чтобы сократить время уязвимости системы.

3.1. Обновление пакетов

Обновляя в системе программные продукты, важно загружать эти обновления из доверенного источника. Злоумышленник может легко создать пакет с тем же номером версии, что и настоящий, исправляющий проблему, и, внедрив в него вредоносный код, опубликовать его в Интернете. Если это произойдёт, стандартными средствами, например, сравнивая файлы с оригинальными пакетами RPM, этот код найти не удастся. То есть, очень важно загружать пакеты только из доверенных источников, например, с сайта Red Hat, Inc. и проверять подпись пакета, чтобы убедиться в его целостности.

Red Hat предлагает получать исправления ошибок безопасности двумя способами:

  1. Загружать их из сети Red Hat Network.

  2. Загружать их с веб-сайта Red Hat Errata.

3.1.1. Использование Red Hat Network

Red Hat Network позволяет почти полностью автоматизировать процесс обновления. Этот механизм определяет, какие пакеты RPM нужны для вашей системы, загружает их из защищённого хранилища, проверяет подпись пакетов, чтобы убедиться, что они не были повреждены, и обновляет их. Установка пакета может выполняться немедленно или может быть назначена на определённое время.

В Red Hat Network каждому обновляемому компьютеру нужен профиль системы. Профиль системы содержит сведения об аппаратном и программном обеспечении компьютера. Эта информация является закрытой и никому не передаётся. Она используется только для определения, какие исправления ошибок применимы к конкретной системе, без неё было бы невозможно определить, требуется ли обновление данной системы. Когда обнаруживается ошибка в системе безопасности (или любая другая), Red Hat Network отправляет почтовое сообщение с описанием ошибки и списком систем, в которых она наблюдается. Чтобы применить обновление, воспользуйтесь Агентом обновления Red Hat (Red Hat Update Agent) или назначьте обновление пакета на сайте http://rhn.redhat.com.

ПодсказкаПодсказка
 

В Red Hat Enterprise Linux включён Red Hat Network Alert Notification Tool, удобный значок на панели, показывающий уведомления о выходе обновления системы Red Hat Enterprise Linux. Узнать об этом апплете больше вы сможете по адресу: http://rhn.redhat.com/help/basic/applet.html

Чтобы больше узнать о преимуществах Red Hat Network, обратитесь к Справочному руководству Red Hat Network, доступному по адресу http://www.redhat.com/docs/manuals/RHNetwork/ или посетите http://rhn.redhat.com.

ВажноВажно
 

Прежде чем устанавливать какие-либо обновления безопасности, обязательно прочитайте и выполните специальные указания, содержащиеся в отчёте об ошибке. За общими указаниями по выполнению изменений, связанных с обновлением, обратитесь к разделу 3.1.3 Применение изменений.

3.1.2. Использование веб-сайта Red Hat Errata

Когда поступают новые сообщения об ошибках безопасности, они публикуются на веб-сайте Red Hat Errata, по адресу http://www.redhat.com/apps/support/errata/. Открыв эту страницу, выберите тип и версию вашей системы, затем щёлкните security в верхней части страницы, чтобы просмотреть только уведомления относительно безопасности Red Hat Enterprise Linux. Если в кратком обзоре уведомления описан пакет, используемый в вашей системе, щёлкните эту строку, чтобы получить дополнительные сведения.

На странице с дополнительными сведениями описана уязвимость системы безопасности и приведены специальные инструкции, которые должны быть выполнены для ликвидации бреши в безопасности помимо обновления пакета.

Чтобы загрузить обновлённый пакет, щёлкните его имя и сохраните его на жёсткий диск. Настоятельно рекомендуется создать новый каталог, например, /tmp/updates, и сохранять все загружаемые пакеты в нём.

Все пакеты Red Hat Enterprise Linux подписываются ключом GPG компании Red Hat, Inc.. Утилита RPM, встроенная в Red Hat Enterprise Linux, автоматически пытается проверить подпись GPG RPM-пакета до установки. Если ключ GPG компании Red Hat, Inc. не установлен, импортируйте его с безопасного, статического источника, например, с компакт-диска установки Red Hat Enterprise Linux.

Если CD-ROM смонтирован в точку /mnt/cdrom, следующая команда добавит ключ в хранилище ключей:

rpm --import /mnt/cdrom/RPM-GPG-KEY

Чтобы просмотреть список всех ключей, используемых для проверки RPM, выполните следующую команду:

rpm -qa gpg-pubkey*

Ключ Red Hat, Inc. называется так:

gpg-pubkey-db42a60e-37ea5438

Чтобы больше узнать о конкретном ключе, выполните команду rpm -qi, добавив в конце результат предыдущей команды, например:

rpm -qi gpg-pubkey-db42a60e-37ea5438

Крайне важно перед установкой файлов RPM проверять их подпись, чтобы убедиться в том, что это подлинные пакеты, выпущенные компанией Red Hat, Inc.. Чтобы проверить все загруженные пакеты сразу, выполните следующую команду:

rpm -K /tmp/updates/*.rpm

Если проверка ключа GPG проходит успешно, для каждого пакета эта команда сообщает gpg OK.

Проверив ключ GPG и загрузив все пакеты, связанные с сообщением об ошибке, установите эти пакеты под именем root в приглашении оболочки.

Это можно легко сделать для большинства пакетов (за исключением ядра), выполнив следующую команду:

rpm -Uvh /tmp/updates/*.rpm

Для пакетов ядра рекомендуется выполнять следующую команду:

rpm -ivh /tmp/updates/<kernel-package>

Замените в этом примере <kernel-package> названием RPM-пакета ядра.

Как только компьютер успешно загрузится с новым ядром, старое ядро можно удалить следующей командой:

rpm -e <old-kernel-package>

Замените в этом примере <old-kernel-package> названием RPM-пакета старого ядра.

ЗамечаниеЗамечание
 

Удалять старое ядро не обязательно.

ВажноВажно
 

Прежде чем устанавливать какие-либо обновления безопасности, обязательно прочитайте и выполните специальные указания, содержащиеся в отчёте об ошибке. За общими указаниями по выполнению изменений, связанных с обновлением, обратитесь к разделу 3.1.3 Применение изменений.

3.1.3. Применение изменений

Загрузив и установив исправления системы безопасности через Red Hat Network или с сайта Red Hat Errata, важно прекратить использование старых программных продуктов и использовать только новые. Порядок такого перехода определяется типом обновляемого программного обеспечения. В следующем списке перечислены общие категории программного обеспечения и приведены инструкции по использованию новых версий после обновления пакета.

ЗамечаниеЗамечание
 

Вообще говоря, самый безопасный способ убедиться в том, что используется последняя версия программного пакета — перезагрузить компьютер; однако системный администратор не всегда имеет такую возможность.

Приложения

Приложения, работающие в среде пользователя — это любые программы, которые может запустить пользователь системы. Обычно такие приложения работают непродолжительное время, когда пользователь, сценарий или утилита автоматизации их запускают.

Обновив такое приложение, прекратите работу всех его экземпляров и запустите программу снова, чтобы использовать обновлённую версию.

Ядро

Ядро — ключевой программный компонент операционной системы Red Hat Enterprise Linux. Оно управляет доступом к памяти, процессору и другому оборудованию, а также планирует выполнение задач.

Учитывая его ключевую роль, ядро нельзя перезапустить, не остановив вместе с ним всю систему. Таким образом, обновлённая версия ядра не может быть использована до перезагрузки.

Общие библиотеки

Общие библиотеки — это блоки кода, например, glibc, используемые самыми разными приложениями и службами. Приложения, работающие с общими библиотеками, обычно загружают разделяемый код при запуске, поэтому все приложения, использующие обновлённую библиотеку, должны быть перезапущены.

Чтобы определить, какие приложения связаны с конкретной библиотекой, воспользуйтесь командой lsof, как показано ниже:

lsof /usr/lib/libwrap.so*

Эта команда возвращает список всех запущенных программ, использующих оболочки TCP для управления доступом к узлу. Таким образом, если обновляется пакет tcp_wrappers, все показанные программы должны быть остановлены и запущены вновь.

Службы SysV

Службы SysV — это резидентные программы сервера, запускаемые при загрузке. В число служб SysV входят sshd, vsftpd и xinetd.

Так как эти программы обычно находятся в памяти всё время работы компьютера, после обновления пакета каждая обновлённая служба SysV должна быть перезапущена. Это можно сделать в утилите Настройка служб или зарегистрировавшись в приглашении оболочки от имени root и выполнив команду /sbin/service, как показано ниже:

/sbin/service <service-name> restart

Замените в этом примере <service-name> именем службы, например sshd.

В главе Управление доступом к службам Руководства по системному администрированию Red Hat Enterprise Linux вы найдёте дополнительную информацию об утилите Настройка служб.

Службы xinetd

Эти службы управляются главной службой xinetd в момент установления активного соединения. В число служб, подчинённых xinetd, входят Telnet, IMAP и POP3.

Так как новые экземпляры этих служб загружаются демоном xinetd при поступлении каждого нового запроса, соединения, установленные после обновления, будут работать с новыми службами. Однако, если в момент обновления служб, управляемых xinetd, оставались активные соединения, они будут работать со старой версией служб.

Чтобы уничтожить старые экземпляры конкретной службы, управляемой xinetd, обновите пакет этой службы, затем определите все запущенные процессы, выполнив ps, и остановите их с помощью команды kill или killall.

Например, если выпущено обновление для пакетов imap, обновите эти пакеты, а затем выполните от имени root в приглашении оболочки:

ps -aux | grep imap

Эта команда покажет все активные сеансы IMAP. Сеансы можно уничтожать по одному, с помощью следующей команды:

kill -9 <PID>

Замените <PID> в этом примере идентификационным номером процесса сеанса IMAP.

Чтобы уничтожить все сеансы IMAP, выполните следующую команду:

killall imapd

В главе Оболочки TCP и демон xinetd Справочного руководства по Red Hat Enterprise Linux вы найдёте общую информацию о xinetd.