Linux上內(nèi)核實(shí)時(shí)修補(bǔ)簡(jiǎn)介

現(xiàn)場(chǎng)修補(bǔ)正在慢慢流行,但不是出于您可能想到的原因。
在本文中,我將解釋Linux內(nèi)核實(shí)時(shí)修補(bǔ)是什么,它不是什么,有什么服務(wù),誰(shuí)可以使用它以及為什么。我將展示Livepatch(在Ubuntu上),Kpatch(在Red Hat上)以及另一個(gè)在兩者上運(yùn)行的KernelCare的基本安裝步驟。

什么是實(shí)時(shí)補(bǔ)???

實(shí)時(shí)修補(bǔ)是惡魔操作的無(wú)辜名稱(chēng):更新Linux內(nèi)核而不停止它。
實(shí)時(shí)修補(bǔ)是一種在不影響服務(wù)器停機(jī)的情況下將Linux內(nèi)核更新為最新的關(guān)鍵安全修補(bǔ)程序的方法。在過(guò)去的十年中,這種誘人的想法在Linux越來(lái)越流行的滑坡中默默無(wú)聞。安全,而不是性能或可用性,已經(jīng)成為內(nèi)核開(kāi)發(fā)人員的當(dāng)務(wù)之急,因?yàn)樗麄冊(cè)噲D將Linux的優(yōu)勢(shì)從服務(wù)器轉(zhuǎn)移到桌面市場(chǎng)。系統(tǒng)管理員現(xiàn)在將實(shí)時(shí)修補(bǔ)視為其系統(tǒng)健康的網(wǎng)絡(luò)安全策略的重要組成部分,而不僅僅是為自己提供便利。

當(dāng)研究人員發(fā)現(xiàn)Linux內(nèi)核中的錯(cuò)誤或其他問(wèn)題時(shí),宣布它們之后的第一步是對(duì)它們進(jìn)行分類(lèi)。最重要的內(nèi)核問(wèn)題是漏洞。這些是在沒(méi)有操作員的知情或同意的情況下,某人可能破壞,破壞或滲透Linux系統(tǒng)的方式的發(fā)現(xiàn)和描述。其中許多涉及通過(guò)利用其程序邏輯中的錯(cuò)誤來(lái)破壞Linux內(nèi)核的行為。

漏洞的重要性與它影響的系統(tǒng)數(shù)量,復(fù)制的容易程度以及發(fā)生的情況有關(guān)。如果答案是'很多','簡(jiǎn)單'和'任何',那么內(nèi)核維護(hù)者就會(huì)瘋狂地尋找解決方案。當(dāng)它們這樣做時(shí),它意味著更新內(nèi)核。

但是,由于Linux內(nèi)核的原因,更新也意味著重啟。對(duì)于個(gè)人和業(yè)余愛(ài)好者來(lái)說(shuō),這沒(méi)什么大不了的。但對(duì)于企業(yè)而言,重啟需要規(guī)劃和協(xié)調(diào),這需要時(shí)間和金錢(qián)。同時(shí),至少在理論上,他們的系統(tǒng)是脆弱的。

實(shí)時(shí)修補(bǔ)可縮短發(fā)布漏洞修復(fù)程序與在受影響系統(tǒng)上安裝之間的時(shí)間??s小或消除這種差距可降低利用未修補(bǔ)漏洞的風(fēng)險(xiǎn)。

實(shí)時(shí)修補(bǔ)的優(yōu)點(diǎn)和缺點(diǎn)是什么?

實(shí)時(shí)修補(bǔ)僅適用于嚴(yán)重的安全問(wèn)題。

當(dāng)開(kāi)發(fā)人員將漏洞追蹤到孤立的內(nèi)核代碼片段時(shí),軟件補(bǔ)丁可以修復(fù)它們而不會(huì)影響內(nèi)核的其他部分。但是,對(duì)于影響許多部分的問(wèn)題,或影響數(shù)據(jù)結(jié)構(gòu)的部分,不能進(jìn)行實(shí)時(shí)修補(bǔ)。

實(shí)時(shí)修補(bǔ)不能完全消除重啟。

實(shí)施實(shí)時(shí)修補(bǔ)策略并不意味著您永遠(yuǎn)不會(huì)再次重啟。它確實(shí)意味著您可以將其關(guān)閉,直到它更方便,并且在此之前,您的系統(tǒng)可以安全地利用已修補(bǔ)的問(wèn)題。

并非每個(gè)內(nèi)核都支持實(shí)時(shí)修補(bǔ)。
所有實(shí)時(shí)修補(bǔ)方法都不同。一些使用核心內(nèi)核函數(shù),而另一些使用開(kāi)源和閉源方法的混合。沒(méi)有通用的多平臺(tái)解決方案(盡管KernelCare很接近)。

現(xiàn)場(chǎng)打補(bǔ)丁很容易; 制作補(bǔ)丁不是。

任何具有技術(shù)知識(shí)的人都可以為他們選擇的Linux平臺(tái)構(gòu)建和安裝實(shí)時(shí)修補(bǔ)軟件。源代碼和信息是可用的,但它有多容易取決于您擁有哪個(gè)平臺(tái)。
但是,對(duì)于所有實(shí)時(shí)修補(bǔ)方法,修補(bǔ)程序的創(chuàng)建是一個(gè)巨大的技術(shù)障礙。它需要詳細(xì)了解內(nèi)核源代碼,其編程模型和約定。即使您可以創(chuàng)建補(bǔ)丁,在嘗試安裝補(bǔ)丁之前,您有責(zé)任對(duì)其進(jìn)行徹底測(cè)試。

實(shí)時(shí)修補(bǔ)不是免費(fèi)的。
成本一直是Linux非企業(yè)核心粉絲群采用的真正障礙。Oracle Ksplice,Red Hat Kpatch,SUSE Kgraft和KernelCare都要求提供不同金額的月度,年度或三年期訂閱。之所以提到這個(gè)原因:創(chuàng)建補(bǔ)丁并不容易。要了解所涉及的難度,請(qǐng)查看Kpatch補(bǔ)丁編寫(xiě)指南?您將了解為什么公司已成功提供實(shí)時(shí)補(bǔ)丁作為付費(fèi)服務(wù)。

哪些公司提供實(shí)時(shí)補(bǔ)???

Ksplice是第一個(gè)為L(zhǎng)inux提供實(shí)時(shí)補(bǔ)丁的人。他們?cè)?010年推出了商業(yè)服務(wù),支持一系列Linux風(fēng)格。當(dāng)甲骨文在2011年收購(gòu)它們時(shí),除了甲骨文自己的Linux之外,其他所有產(chǎn)品都得到了支持。這對(duì)紅帽和SUSE的其他大公牛來(lái)說(shuō)是一面紅旗。每個(gè)人都急于創(chuàng)建他們自己的實(shí)時(shí)補(bǔ)丁解決方案,他們分別在2014年以KpatchKgraft的形式獨(dú)立發(fā)布。不久之后兩者都成了商業(yè)服務(wù)。同樣在那一年,KernelCare進(jìn)入了戒指,填補(bǔ)了Ksplice留下的空間,并取消了對(duì)舊內(nèi)核和其他口味的支持。

現(xiàn)場(chǎng)補(bǔ)丁多少錢(qián)?

截至2019年,五家公司提供現(xiàn)場(chǎng)打補(bǔ)丁的商業(yè)服務(wù)。價(jià)格根據(jù)地理區(qū)域而有所不同 - 顯示的是美國(guó),并且按降序排列。

對(duì)于本文的其余部分,我將只考慮三種低到中等成本選項(xiàng):Canonical,Livepatch,Red Hat Kpatch和KernelCare。

誰(shuí)需要實(shí)時(shí)補(bǔ)?。?/h1>

根據(jù)訂閱成本,擁有數(shù)百臺(tái)服務(wù)器的公司似乎是Oracle,Red Hat和SUSE的目標(biāo)。對(duì)于企業(yè)而言,實(shí)時(shí)修補(bǔ)的好處是毫無(wú)疑問(wèn)的,因此將服務(wù)捆綁在支持合同中是完全合理的。

對(duì)于個(gè)人而言,實(shí)時(shí)修補(bǔ)仍然是一個(gè)非必要的好奇心,對(duì)家庭媒體服務(wù)器,宿舍游戲服務(wù)器,加密貨幣挖掘或任何重啟動(dòng)作的情況都很有用。他們開(kāi)始的好方法是使用Ubuntu 18.04 LTS。對(duì)于最多三臺(tái)機(jī)器,實(shí)時(shí)修補(bǔ)是一個(gè)痛苦且無(wú)成本的介紹。

對(duì)于企業(yè)家,中小企業(yè)和成長(zhǎng)型公司來(lái)說(shuō),選擇的選擇較少。他們需要成本和覆蓋范圍的靈活性,這種解決方案不能將其鎖定到特定平臺(tái),并且可以隨著增長(zhǎng)而擴(kuò)展。對(duì)他們來(lái)說(shuō),KernelCare非常適合。

如何安裝Linux內(nèi)核實(shí)時(shí)修補(bǔ)?

使用Canonical Livepatch服務(wù)實(shí)時(shí)修補(bǔ)Ubuntu內(nèi)核

Canonical Livepatch Service適用于14.04,16.04和18.04 LTS的服務(wù)器和桌面版本。最簡(jiǎn)單的嘗試方法是在18.04 LTS桌面版上。當(dāng)您在干凈安裝后首次重新啟動(dòng)時(shí),Ubuntu對(duì)話窗口中的新功能的第二個(gè)屏幕為您提供了設(shè)置Livepatch的機(jī)會(huì)。如果您錯(cuò)過(guò)了,請(qǐng)打開(kāi)軟件更新程序并轉(zhuǎn)到設(shè)置的Updatestab,您可以從中登錄以激活它。

在安裝之前,您必須注冊(cè)密鑰。執(zhí)行此操作時(shí),頁(yè)面將顯示這些命令,以便通過(guò)終端進(jìn)行安裝。

sudo snap install canonical-livepatch
sudo canonical-livepatch enable <your key>

從現(xiàn)在開(kāi)始,守護(hù)進(jìn)程將檢查關(guān)鍵內(nèi)核安全修補(bǔ)程序,并默認(rèn)情況下每60分鐘自動(dòng)安裝一次。如果你想修補(bǔ),這里有一些使用canonical-livepatch命令行工具的例子。

檢查狀態(tài): canonical-livepatch status
顯示所有補(bǔ)丁信息: canonical-livepatch status --verbose
強(qiáng)制立即刷新: sudo canonical-livepatch refresh
更改檢查間隔(例如,更改為90分鐘): sudo canonical-livepatch config check-interval=90

使用Kpatch實(shí)時(shí)修補(bǔ)RHEL 7內(nèi)核

Red Hat的Kpatch還沒(méi)有用戶(hù)友好的界面來(lái)進(jìn)行設(shè)置。通過(guò)一些努力,它適用于Fedora和CentOS,以及一些基于Debian的系統(tǒng),如Ubuntu和Gentoo(但在這些情況下,您必須編寫(xiě)和測(cè)試自己的補(bǔ)丁)。

要在Red Hat Enterprise Linux 7上安裝kpatch:

sudo yum install kpatch

Kpatch沒(méi)有自動(dòng)化功能。而是使用標(biāo)準(zhǔn)命令行工具yum來(lái)檢查和安裝修補(bǔ)程序。包名稱(chēng)提供關(guān)鍵安全修補(bǔ)程序kpatch-patch。如果您有支持訂閱,您可以向Red Hat索取自定義補(bǔ)丁,您可以將其作為.rpm文件獲取。兩者的安裝如下所示。

sudo yum install kpatch-patch # From Red Hat's repositories
sudo yum install kpatch-patch-<version>.el7.<your arch>.rpm # Downloaded custom patch

使用KernelCare實(shí)時(shí)修補(bǔ)Ubuntu和RHEL7 / CentOS 7 Linux內(nèi)核

KernelCare使用相同的兩行命令在Ubuntu 14.04,16.04和18.04 LTS以及Red Hat Enterprise Linux 7或CentOS 7上進(jìn)行安裝。

在開(kāi)始之前,獲取30天免費(fèi)試用密鑰。

注冊(cè)頁(yè)面顯示了您的注冊(cè)密鑰以及安裝KernelCare所需的這兩個(gè)命令。

sudo wget -qq -O - https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash
sudo /usr/bin/kcarectl --register <your key>

如果一切正常,您將看到消息服務(wù)器已注冊(cè)。從現(xiàn)在開(kāi)始,KernelCare守護(hù)程序每四個(gè)小時(shí)檢查一次關(guān)鍵的內(nèi)核安全補(bǔ)丁。如果有任何可用,它將安裝它們而無(wú)需重新啟動(dòng),無(wú)需進(jìn)一步干預(yù)。

就像canonical-livepatch,kcarectl實(shí)用程序允許您在命令行上執(zhí)行操作。

  • 檢查狀態(tài): kcarectl --info
  • 顯示所有補(bǔ)丁信息: kcarectl --patch-info
  • 強(qiáng)制立即刷新: sudo kcarectl --auto-update
  • 取消注冊(cè)許可證: sudo kcarectl --unregister

結(jié)論

Linux的實(shí)時(shí)修補(bǔ)正處于轉(zhuǎn)折點(diǎn)。

雖然不是企業(yè)客戶(hù)的默認(rèn)選擇,但Canonical通過(guò)在Ubuntu 18.04 LTS上輕松使用Livepatch Service取得了很大進(jìn)展。我希望隨著用戶(hù)進(jìn)入專(zhuān)業(yè)領(lǐng)域,隨著他們熟悉它們,它的受歡迎程度將會(huì)提高。那些能夠在各種平臺(tái)上運(yùn)行的更具成本效益的實(shí)時(shí)修補(bǔ)解決方案的人將會(huì)發(fā)現(xiàn)自己傾向于使用KernelCare。

在任何情況下,商業(yè)實(shí)時(shí)補(bǔ)丁提供的不僅僅是實(shí)時(shí)補(bǔ)丁的能力,而是訪問(wèn)補(bǔ)丁本身,安全托管,及時(shí)交付,測(cè)試和驗(yàn)證,并保證在沒(méi)有任何有害影響的情況下工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容