ClickCease 如何應用Linux內核安全補丁:3種不同的方法

目錄

加入我們的熱門時事通訊

加入 4,500+ Linux 和開源專業人士!

每月2次。沒有垃圾郵件。

如何應用 Linux 內核安全補丁:3 種不同的方式 (2023)

斯蒂芬·文特爾

實施期間: 2023年1月23 日 - 技術佈道者

Linux 內核更新是生活中的事實。它們和稅收一樣沉悶,就像去看牙醫一樣有趣。但是系統管理員必須不斷修補:Linux內核中新發現的安全漏洞似乎以單調的規律出現。在大多數情況下(但不是全部),修復它們所需的補丁會迅速跟進。 

安裝最新的 Linux 內核安全補丁涉及大量工作,實際現實可能意味著補丁會延遲。但是,放置時間過長,您將為威脅參與者提供利用未修補漏洞的機會。

這就是為什麼找到盡可能快地修補的最佳方法如此重要的原因。

Linux 作為 Web 託管服務、獨立 Web 伺服器和 Web 應用程式的平臺的普及使其成為主要目標。駭客使用的技術包括遠端代碼執行 (RCE)、跨網站腳稿 (XSS) 和拒絕服務 (DoS) 攻擊。 

使 Linux 實例與最新的作業系統和應用程式軟體補丁保持同步是增強系統安全性和防範此類網路威脅的最有效方法之一。 

但是,這是一項破壞性且耗時的任務,因為對於Linux,大多數內核升級和安全補丁都需要重新啟動系統。本文介紹如何在不重新啟動的情況下更新Linux內核。我介紹了一些最流行的Linux內核的三種不同方法。這些方法是:

  1. 使用命令行;
  2. 凱克塞克;
  3. 使用無需重新啟動的即時內核修補 工具:Oracle Ksplice Uptrack,Canonical Livepatch,Red Hat's Kpatch,SUSE Kgraft(SLE Live Patching)和KernelCare Enterprise。
  1. 命令行

 這是使用 Linux 分發供應商的存儲庫進行內核更新的標準方法。這是您最有可能在供應商文檔中找到的方法。 

  • 在 Ubuntu 上,您可以在終端中使用這些命令:
sudo apt-get upgrade linux-image-generic sudo

reboot
  • 在 Debian 上,您可以使用:
sudo apt-get upgrade kernel sudo

reboot
  • 對於任何基於 RPM 的發行版,包括 CentOS 和 Red Hat Enterprise Linux (RHEL),請使用以下命令:
須藤百勝更新內核須藤重啟

到目前為止,如此簡單。但有一個問題:內核補丁在您重新啟動之前不會生效。

 重新啟動?是的。你必須踢掉你的使用者,保存你的檔,並關閉進程——冒著讓很多人非常不高興的風險。例如,就像您網站上購買的任何人一樣。然後,您需要等待 Linux 伺服器再次啟動並恢復其以前的狀態。

您的伺服器需要多長時間才能反彈?客戶和其他利益相關者會注意到嗎?即使他們注意到的風險很低,您仍然需要在安裝該內核補丁之前通知他們。

這就是為什麼許多系統管理員推遲補丁安裝的原因之一,避免停機但損害系統安全性。

 優點: 無需安裝。

缺點: 不是自動化的。需要重新啟動。 

  1. kexec:更快的重啟

 您可以使用 kexec 加快重新啟動步驟。此 Linux 內核系統調用允許您直接引導到新內核,跳過引導載入程式和硬體初始化階段,並顯著縮短重新啟動時間。

 要使用它,您首先需要安裝 kexec-tools

  • 在 Ubuntu/Debian 上:
sudo apt-get install kexec-tools

您將看到一個設定視窗,如下所示: 

  • 在 CentOS/RHEL 上:
sudo yum install kexec-tools

接下來,安裝新內核。列出內核,然後選擇要使用的內核:

須藤百勝更新內核

sudo rpm -qa kernel

輸出應該是這樣的。

內核-3.10.0-514.26.1.el7.x86_64 

內核-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 sudo sync; sudo umount -a; sudo kexec -e

 如果您沒有任何耐心,可以使用下一個命令(但在這樣做之前,請參閱下面的警告):

sudo kexec -e

 警告:使用上述命令就像重啟伺服器,而不給重新啟動命令時間來正確終止進程、同步檔緩存和卸載文件系統。使用此命令可能會導致數據丟失或損壞。

 啟動速度更快。一次性安裝。

更多的手指工作(除非你寫得很好,否則出錯的可能性更高)。 

  1. 在不重新啟動的情況下更新內核

是的,你沒看錯。有 一種方法可以在不重新啟動的情況下更新Linux內核。

有時安全補丁非常關鍵,您必須完成它。同時,重新啟動時需要停止的進程同樣重要。如果您運行的是「始終在線」或「高可用性」系統,您將熟悉這種困境。

 無需重新啟動的內核更新意味著您可以「吃蛋糕並(太)吃它」。。無需重新啟動更新( 也稱為即時內核修補)不能替代完整內核升級,因為它們僅針對安全漏洞或關鍵錯誤修復應用補丁。

但是,無需重新啟動的更新就像修復漏洞的靈丹妙藥。當您考慮真正緊急的事情時,您確實需要安全漏洞和錯誤修復的更新。通過使用即時修補方法,可以使伺服器免受威脅多年,而無需重新啟動伺服器。

許多領先的 Linux 供應商都提供了實現無重啟內核更新的工具。您選擇的工具部分取決於您運行的發行版以及您是否已經與供應商簽訂了支援合同。在本文的其餘部分,我們將討論以下產品: 

  • Ksplice by Oracle (適用於 Oracle Linux 更新,Ksplice Uptrack 適用於企業使用者)
  • Red Hat 的 k補丁(用於 RHEL 內核更新和 CentOS 更新)
  • Canonical 的 Livepatch (用於 Ubuntu 內核更新)
  • SUSE 的 kG(僅適用於 SUSE 更新)
  • KernelCare Enterprise(適用於所有主要的 Linux 發行版)

甲骨文 Ksplice

 Ksplice 是第一個商業上可用的無引導內核更新實現。Ksplice Inc.最終被Oracle收購,現在(不出所料)它僅適用於Oracle Linux和RedHat Enterprise Linux發行版。部署 Ksplice 需要 Oracle 的許可證,這可能會變得昂貴。

要部署它,請運行:

須藤wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc

sudo sh install-uptrack-oc -autoinstall

 您會注意到,沒有重新啟動命令,並且您只需在伺服器的生命週期內運行一次安裝腳本。之後,Uptrack 服務將自動檢測新的內核更新並部署更新。沒有更多的事情可做:沒有日程安排,也沒有停機時間。

 無需重新啟動。自動更新。

僅適用於 Oracle 發行版。需要支持許可證。

 規範即時補丁服務

Livepatch是Canonical的即時補丁內核技術(你猜怎麼著?)。(Canonical是流行的Ubuntu Linux發行版背後的公司。該工具還允許您創建自己的補丁,但這是一項困難且耗時的工作。(一些供應商會為你創建一個Ubuntu升級內核,但需要付費。

 Livepatch 服務適用於 Ubuntu 16.04 及更高版本,以及 RHEL 7.x(測試版)。Livepatch的部署方式如下:

sudo snap install canonical-livepatch

sudo canonical-livepatch enable [TOKEN]

注意:如果您是 Ubuntu One會員,Canonical Livepatch 服務最多可以在3台電腦上免費供個人使用。商業用途需要訂閱Ubuntu Pro。

無需重新啟動。自動內核更新。

非平凡的自定義內核補丁。對可更新主機數量的限制。額外的房東和商業用途包括收費。 

 紅帽補丁

kpatch是Red Hat自己的內核補丁工具。它於2014年宣佈,並已被移植到同一家族的其他發行版(Fedora,CentOS)以及一些基於Debian的系統(Ubuntu,Gentoo)上。

下面是在 RHEL 7 上部署它的範例:

須藤百勝安裝kpatch

sudo yum install kpatch-patch-X.X.X.el7.x86_64.rpm

 與Ubuntu的Livepatch服務或Oracle的Ksplice不同,它不是自動的實時補丁服務。您必須手動檢查新補丁,並在每個內核補丁可用時安裝它。

無需重新啟動。

不是自動化的。適用於有限範圍的發行版。

 SUSE kGraft

kGraft幾乎與Red Hat的解決方案同時開發和發佈,是SUSE的實時補丁產品(稱為SUSE Linux Enterprise Live Patching)。它僅適用於SUSE自己的Linux Enterprise Server 12,並且預裝了,因此除了付費之外,實際上無事可做。它的工作原理與大多數其他方法不同,但具有與 kpatch 相當的功能集。

無需安裝。無需重新啟動。

單一平台支援。商業(但有 60 天免費試用)。

 內核護理

TuxCare 的 Linux 內核實時修補服務 KernelCare 也在 2020 年推出,從我們迄今為止介紹的內核修補解決方案中脫穎而出,原因有兩個。首先,KernelCare 涵蓋了廣泛的 Linux 發行版,包括 CentOS、RHEL(早在 RHEL 6)、Oracle Linux、Debian、Ubuntu 等等。其次,與訂閱上面列出的特定於供應商的支援合同相比,KernelCare 更實惠。

以下是安裝 KernelCare 的方法:

wget -qq -O -- https://kernelcare.com/installer | bash

sudo /usr/bin/kcarectl --register <your key>

 KernelCare 是一個「安裝後忘記」的解決方案。安裝后,KernelCare 會自動下載並應用新的內核安全補丁,而無需重新啟動伺服器。

但是,與其最接近的競爭對手相比,KernelCare可以處理漏洞所需的許多更複雜的補丁,包括著名的Meltdown(CVE-2017-5754)和SpectreCVE-2017-5753 CVE-2017-5715漏洞。

KernelCare 還為您提供了更新的複雜漏洞,包括 髒管道 漏洞 (CVE-2022-0847)。

您還可以從豐富的功能集中受益,因為 KernelCare 支援自定義補丁配置、固定日期補丁、延遲補丁和無需重新啟動的回滾,允許您在不重新啟動的情況下刪除補丁。

與這裡考慮的其他供應商一樣,KernelCare也源於強大的Linux血統:KernelCare由 CloudLinux創建,CloudLinux是專用於Web託管的Linux操作系統的領先供應商。

 易於安裝。無需重新啟動。廣泛的操作系統覆蓋範圍(包括最流行的Linux版本之一,Ubuntu)。支援自定義和固定日期修補。TuxCare的良好支持和行業知識。

商業(但有免費試用)。還有一個免費的KernelCare許可證,適用於非營利組織。

獲取內核護理企業的免費試用版 

 結論

使用標準命令行工具更新內核相對輕鬆,但前提是您的伺服器是非關鍵伺服器,並且前提是您的使用者可以忍受它離線一段時間。

如果您運行的是始終在線的系統,或者您不能或不想重新啟動,則需要考慮即時內核修補解決方案。其中,有三種:

  1. 已管理:您自己觸發無需重新啟動的修補。 例如 k 補丁kGraft
  2. 全自動:自動進行無需重新啟動的修補。 例如 LivepatchKsplice
  3. 全自動、先進的多平臺:它為您完成任務,還可以處理高級威脅,並適用於所有流行的Linux發行版。 例如內核護理企業版

在許多情況下,特別是當您依賴不同的Linux發行版並且沒有供應商支援合同時,KernelCare Enterprise 值得一看

如果您想瞭解有關即時修補技術及其如何實現基礎架構安全性的更多資訊,可以閱讀我們一些最受歡迎的博客文章:

 

總結

準備好通過 KernelCare Enterprise 的自動化、無中斷即時修補實現漏洞修補方法的現代化了嗎?安排與我們的Linux安全專家聊天!

與專家交談

成為TuxCare客座作家

開始使用

郵件

加入

4,500

Linux和開源
專業人士!

訂閱
我們的時事通訊