現(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年以Kpatch和Kgraft的形式獨(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ó),并且按降序排列。
- Oracle的Ksplice for Oracle Linux 5,6和7可訂閱Oracle Linux Premier Support,每年起價(jià)2299美元。
- SUSE的Live Patching每年2198美元,實(shí)時(shí)修補(bǔ)服務(wù)(699美元)和SUSE Enterprise Linux與優(yōu)先服務(wù)器訂閱(1499美元)的總成本。
- Red Hat的紅帽企業(yè)版Linux 7 kpatch可以高級(jí)支持訂閱,每年1299美元。
- 適用于Ubuntu 14.04,16.04和18.04 LTS 的Canonical Livepatch服務(wù)可免費(fèi)使用1到3臺(tái)機(jī)器,然后每年225美元可獲得4臺(tái)或更多機(jī)器。
- KernelCare 每年45美元。它運(yùn)行在Ubuntu,Red Hat,Oracle Linux,Debian,CentOS,Amazon Linux 等等。
對(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)有任何有害影響的情況下工作。