Пробная версия АнглийскийGermanJapaneseРусскийИспанский
Блог KernelCare

Избегайте смерти, налогов и перезагрузок сервера Linux - обновления ядра Linux, различные способы 3

Обновления ядра Linux являются фактом жизни - скучным, как налоги, и лишь чуть менее неудобным, чем смерть. Недавно обнаруженные уязвимости в ядре Linux появляются с монотонной регулярностью. В большинстве, но не во всех случаях патчи, необходимые для их исправления, выполняются быстро после. Работа по установке последних исправлений безопасности ядра Linux связана с опасностью, если вы откладываете - оставьте это слишком долго, и субъекты угроз могут воспользоваться периодом уязвимости.

Популярность Linux как платформы для веб-хостинга, автономных веб-серверов и веб-приложений сделала его основной целью для хакеров, использующих такие методы, как удаленное выполнение кода (RCE), межсайтовый скриптинг (XSS) и отказ в обслуживании (DoS). ) атаки. Поддержание системы в актуальном состоянии с последними обновлениями операционной системы и прикладного программного обеспечения является одним из наиболее эффективных способов повышения безопасности системы и защиты от подобных киберугроз. Для Linux ОС трудно поддерживать в безопасности, потому что большинство обновлений ядра и исправлений безопасности требуют перезагрузки системы.

В этой статье объясняется, как обновить ядра Linux без перезагрузки. Я рассматриваю три разных метода для некоторых из самых популярных ядер Linux. Они есть:

  1. в командной строке;
  2. с Kexec;
  3. с беззагрузочными инструментами исправления ядра в реальном времени: Oracle Ksplice Uptrack, Canonical Livepatch, Kpatch от Red Hat, SUSE Kgraft (SLE Live Patching) и KernelCare CloudLinux.

1. Командная строка

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

В Ubuntu вы можете использовать эти команды в терминале.

sudo apt-get upgrade linux-image-generic перезагрузка sudo

На Debian это было бы так.

sudo apt-get update ядро ​​перезагрузка sudo

Если вы хотите сделать обновление ядра CentOS, для Red Hat Enterprise Linux (RHEL) или для любого другого дистрибутива RPM используйте это.

sudo yum обновить ядро ​​sudo перезагрузить

Пока все просто. Но исправление ядра не вступит в силу, пока вы не перезагрузите компьютер.

Перезагружать? Да. Вы должны выгнать своих пользователей, сохранить свои файлы, закрыть свои процессы и, возможно, сделать многих людей очень несчастными (например, кто-то посреди покупки). И тогда вам придется ждать, пока ваш Linux-сервер снова включится и восстановит свое состояние. Сколько времени у тебя уходит на отскок? Клиенты заметят? Даже если они этого не сделают, вы должны сначала уведомить их.

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

+ Плюсы: Нет установки.
- Минусы: Не автоматизировано. Требуется перезагрузка.

2. kexec: быстрее перезагружается

Вы можете сделать шаг перезагрузки быстрее, используя Kexec, Этот системный вызов ядра Linux позволяет загрузиться в новое ядро, пропустить фазы загрузки и фазы инициализации оборудования и значительно сократить время перезагрузки.

Чтобы использовать его, сначала необходимо установить Kexec-инструменты.

На Ubuntu / Debian:

sudo apt-get установить kexec-tools

Вы увидите окно конфигурации, что-то вроде этого:

На CentOS / RHEL:

sudo yum установить kexec-tools

Затем вы устанавливаете новое ядро. Перечислите их, затем выберите тот, который вы хотите.

обновить ядро ​​sudo yum

or

sudo rpm -qa kernel

Результат должен быть примерно таким.

kernel-3.10.0-514.26.1.el7.x86_64 
kernel-3.10.0-862.3.2.el7.x86_64

Теперь загрузитесь в свою выбранную версию.

sudo kexec -l /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64 \ -initrd = / boot / initramfs-3.10.0-862.3.2.el7.x86_64.img \ -reuse-cmdline sudoc; sudo umount -a; sudo kexec -e

Вы можете использовать следующую команду, если у вас нет терпения (но см. Предупреждение ниже, прежде чем вы это сделаете).

sudo kexec -e

ПРЕДУПРЕЖДЕНИЕ! Это принудительная перезагрузка сервера, без возможности корректно остановить процессы, синхронизировать кеши и размонтировать файловую систему. Это может привести к потере или повреждению данных.

+ Плюсы: Быстрая загрузка.
- Минусы: Одноразовая установка. Больше пальцев (и больше потенциальных ошибок, если вы не хорошо его скриптируете).

3. Обновление ядра ​​без перезагрузки

Да, вы прочитали это правильно. Там is способ сделать это.

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

Обновление ядра без перезагрузки позволяет вам «съесть свой торт и съесть его (тоже)». Он не является заменой для полного обновления ядра, поскольку он применяет исправления только для уязвимостей системы безопасности или исправления критических ошибок. Но во многих случаях это все, что вам нужно, и с помощью этих методов можно обеспечить безопасность и работу сервера в течение многих лет между перезагрузками.

Ряд ведущих поставщиков Linux предлагают обновления ядра без перезагрузки. Выбор зависит от используемого дистрибутива. В оставшейся части этой статьи мы поговорим о следующих продуктах:

  • Ksplice от Oracle (для обновлений Oracle Linux, Ksplice Uptrack для предприятий)
  • Kpatch от Red Hat (для обновлений ядра RHEL и обновлений CentOS)
  • Livepatch от Canonical (для обновлений ядра Ubuntu)
  • Кграфт от SUSE (только для обновлений SUSE)
  • CloudLinux KernelCare (для нескольких ОС)

Oracle Ksplice

Ksplice была первой коммерчески доступной реализацией перезагружаемого ядра. Ksplice Inc. в конечном итоге была приобретена Oracle, поэтому теперь она доступна (как неудивительно) только для дистрибутивов Oracle Linux и RedHat Enterprise Linux, а для развертывания требуется лицензия от Oracle.

Чтобы развернуть его, выполните:

sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc sudo sh install-uptrack-oc -autoinstall

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

+ Плюсы: Не требуется перезагрузка. Автоматические обновления.
- Минусы: Только для дистрибутивов Oracle. Требуется лицензия на поддержку.

Canonical Livepatch

Это технология Canonical для (угадайте, что?) Живых исправлений ядер. (Canonical - компания, стоящая за популярным дистрибутивом Ubuntu Linux.) Вы даже можете создавать свои собственные патчи, хотя это может быть трудной, длительной работой. (Некоторые поставщики за отдельную плату создадут для вас ядро ​​обновления Ubuntu.)

Услуга доступна для Ubuntu 16.04 и более поздних версий и RHEL 7.x (бета).

Это развернуто как это.

sudo snap install canonical-livepatch включить sudo canonical-livepatch [TOKEN]

Примечание: Услуга Canonical Livepatch бесплатна для компьютеров 3 для членов сообщества Ubuntu. Вы можете подписаться на токен здесь.

+ Плюсы: Перезагрузка не требуется. Автоматические обновления ядра.
- Минусы: Нетривиальные пользовательские патчи для ядра. Ограничение на количество обновляемых хостов (дополнительные хосты за отдельную плату).

Red Hat Kpatch

Это собственный инструмент исправления ядра Red Hat. Это было объявлено в 2014 и было портирована работать над другими в одной семье (Fedora, CentOS), а также для некоторых систем на базе Debian (Ubuntu, Gentoo).

Вот пример его развертывания на RHEL 7.

sudo yum установить kpatch sudo yum установить kpatch-patch-XXXel7.x86_64.rpm

В отличие от сервиса Livepatch в Ubuntu или Oracle Ksplice, он не является автоматическим, и вы должны вручную проверять и устанавливать каждое исправление ядра по мере его появления.

+ Плюсы: Не требуется перезагрузка.
- Минусы: Не автоматизировано. Ограниченное распространение.

SUSE Kgraft

Разработанный и анонсированный почти одновременно с решением Red Hat, Kgraft является предложением SUSE для оперативного исправления (известное как SUSE Linux Enterprise Live Patching). Это только для собственного Linux Enterprise Server 12 от SUSE, и поставляется с предустановленной версией, так что на самом деле ничего не нужно делать (кроме как платить за это). Он работает по принципу, отличному от большинства других подходов, но имеет набор функций, сравнимый с Kpatch.

+ Плюсы: Установка не требуется. Не требуется перезагрузка.
- Минусы: Поддержка единой платформы. Коммерческий (но есть щедрая 60-дневная бесплатная пробная версия).

CloudLinux KernelCare

Также запущенная в 2014, служба исправлений ядра Linux KernelCare выделяется среди решений по исправлению ядра в своем покрытии ОС, которое включает в себя CentOS, RHEL, Oracle Linux, Debian, Ubuntu и другие, Как и решение Oracle, KernelCare поддерживает более старые ядра 2.6.32 от RHEL 6.

Вот как установить KernelCare:

wget -qq -O - https://kernelcare.com/installer | bash sudo / usr / bin / kcarectl -register <ваш ключ>

KernelCare - это решение «установи и забудь». После установки KernelCare автоматически загружает и применяет новые исправления безопасности ядра, не перезагружая сервер.

Но в отличие от своих ближайших конкурентов, KernelCare предлагает патчи для более сложных уязвимостей, таких как Meltdown (CVE-2017-5754), Spectre (CVE-2017-5753 ДОСТУПНОСТЬ & CVE-2017-5715), а также для недавней ошибки переполнения буфера ядра Linux известной как Mutagen Astronomy (CVE-2018-14634). KernelCare поддерживает пользовательские конфигурации патчей, применение патчей в указанное время, отложенное применение патчей и возможность отката, т. е. удаления патчей, без перезагрузки.

Как и другие производители, рассмотренные здесь, KernelCare также проистекает из хорошей кровной линии - его создатель CloudLinux, ведущий поставщик хостинга ОС на базе Linux.

+ Плюсы: Простота установки. Не требуется перезагрузка. Широкий охват ОС (включая один из самых популярных Linux-аксессуаров, Ubuntu). Поддержка пользовательских и фиксированных фиктивных исправлений. Хорошая поддержка и отраслевые ноу-хау от CloudLinux.
- Минусы: Коммерческая (но есть бесплатно, 30-дневная пробная версия). Существует также бесплатная лицензия KernelCare для некоммерческих организаций.

[hubspot type=cta portal=5408110 id=77c921a7-e20a-4732-9117-d7e372d5a6da]

Вывод

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

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

  1. Под управлением- ты должен сделать это сам. Например Kpatch, Kgraft.
  2. Полностью автоматическийОн делает это для вас. Например Livepatch, Ksplice.
  3. Полностью автоматический, продвинутый мультиплатформенный- он делает это для вас, обрабатывая сложные угрозы на всех платформах. Например KernelCare от CloudLinux.