Глава 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

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

Начиная с линейки продуктов Red Hat Enterprise Linux, обновлённые пакеты можно загрузить только в сети Red Hat Network. Хотя сайт исправлений 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 включёна Утилита оповещения об обновлениях в RHN (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.5 Применение изменений.

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

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

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

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

3.1.3. Проверка подписанных пакетов

Все пакеты Red Hat Enterprise Linux подписываются ключом GPG компании Red Hat, Inc. GPG расшифровывается как (GNU Privacy Guard, Защита конфиденциальности GNU) или GnuPG, это бесплатный программный пакет, позволяющий гарантировать подлинность распространяемых файлов. Например, закрытый (секретный) ключ, хранимый компанией Red Hat, закрывает пакет, тогда как открытый раскрывает и проверяет его. Если при проверке RPM открытый ключ, распространяемый Red Hat, не соответствует закрытому, это значит, что пакет был изменён и, таким образом, доверять ему нельзя.

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

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

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

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

rpm -qa gpg-pubkey*

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

gpg-pubkey-db42a60e-37ea5438

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

rpm -qi gpg-pubkey-db42a60e-37ea5438

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

rpm -K /tmp/updates/*.rpm

Если проверка ключа GPG проходит успешно, для каждого пакета эта команда сообщает gpg OK. В противном случае убедитесь в том, что вы используете правильный открытый ключ Red Hat, а также проверьте источник содержимого. Не следует устанавливать пакеты, не прошедшие проверку GPG, так как они могли быть изменены третьей стороной.

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

3.1.4. Установка подписанных пакетов

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

rpm -Uvh /tmp/updates/*.rpm

Для пакетов ядра воспользуйте этой командой:

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

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

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

rpm -e <old-kernel-package>

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

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

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

ВажноВажно
 

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

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

Загрузив и установив исправления системы безопасности через 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> идентификационным номером процесса (его можно увидеть во втором столбце команды ps) сеанса IMAP.

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

killall imapd

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