現(xiàn)場修補(bǔ)正在慢慢流行螟凭,但不是出于您可能想到的原因虚青。
在本文中,我將解釋Linux內(nèi)核實(shí)時(shí)修補(bǔ)是什么螺男,它不是什么棒厘,有什么服務(wù),誰可以使用它以及為什么下隧。我將展示Livepatch(在Ubuntu上)奢人,Kpatch(在Red Hat上)以及另一個(gè)在兩者上運(yùn)行的KernelCare的基本安裝步驟。
什么是實(shí)時(shí)補(bǔ)断骸何乎?
實(shí)時(shí)修補(bǔ)是惡魔操作的無辜名稱:更新Linux內(nèi)核而不停止它。
實(shí)時(shí)修補(bǔ)是一種在不影響服務(wù)器停機(jī)的情況下將Linux內(nèi)核更新為最新的關(guān)鍵安全修補(bǔ)程序的方法土辩。在過去的十年中支救,這種誘人的想法在Linux越來越流行的滑坡中默默無聞。安全拷淘,而不是性能或可用性各墨,已經(jīng)成為內(nèi)核開發(fā)人員的當(dāng)務(wù)之急,因?yàn)樗麄冊噲D將Linux的優(yōu)勢從服務(wù)器轉(zhuǎn)移到桌面市場辕棚。系統(tǒng)管理員現(xiàn)在將實(shí)時(shí)修補(bǔ)視為其系統(tǒng)健康的網(wǎng)絡(luò)安全策略的重要組成部分欲主,而不僅僅是為自己提供便利邓厕。
當(dāng)研究人員發(fā)現(xiàn)Linux內(nèi)核中的錯(cuò)誤或其他問題時(shí),宣布它們之后的第一步是對它們進(jìn)行分類扁瓢。最重要的內(nèi)核問題是漏洞详恼。這些是在沒有操作員的知情或同意的情況下,某人可能破壞引几,破壞或滲透Linux系統(tǒng)的方式的發(fā)現(xiàn)和描述昧互。其中許多涉及通過利用其程序邏輯中的錯(cuò)誤來破壞Linux內(nèi)核的行為。
漏洞的重要性與它影響的系統(tǒng)數(shù)量伟桅,復(fù)制的容易程度以及發(fā)生的情況有關(guān)敞掘。如果答案是'很多','簡單'和'任何'楣铁,那么內(nèi)核維護(hù)者就會(huì)瘋狂地尋找解決方案玖雁。當(dāng)它們這樣做時(shí),它意味著更新內(nèi)核盖腕。
但是赫冬,由于Linux內(nèi)核的原因,更新也意味著重啟溃列。對于個(gè)人和業(yè)余愛好者來說劲厌,這沒什么大不了的。但對于企業(yè)而言听隐,重啟需要規(guī)劃和協(xié)調(diào)补鼻,這需要時(shí)間和金錢。同時(shí)雅任,至少在理論上风范,他們的系統(tǒng)是脆弱的。
實(shí)時(shí)修補(bǔ)可縮短發(fā)布漏洞修復(fù)程序與在受影響系統(tǒng)上安裝之間的時(shí)間椿访∥谄螅縮小或消除這種差距可降低利用未修補(bǔ)漏洞的風(fēng)險(xiǎn)。
實(shí)時(shí)修補(bǔ)的優(yōu)點(diǎn)和缺點(diǎn)是什么成玫?
實(shí)時(shí)修補(bǔ)僅適用于嚴(yán)重的安全問題加酵。
當(dāng)開發(fā)人員將漏洞追蹤到孤立的內(nèi)核代碼片段時(shí),軟件補(bǔ)丁可以修復(fù)它們而不會(huì)影響內(nèi)核的其他部分哭当。但是猪腕,對于影響許多部分的問題,或影響數(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ǔ)的問題岭粤。
并非每個(gè)內(nèi)核都支持實(shí)時(shí)修補(bǔ)惜索。
所有實(shí)時(shí)修補(bǔ)方法都不同。一些使用核心內(nèi)核函數(shù)剃浇,而另一些使用開源和閉源方法的混合巾兆。沒有通用的多平臺(tái)解決方案(盡管KernelCare很接近)。
現(xiàn)場打補(bǔ)丁很容易; 制作補(bǔ)丁不是虎囚。
任何具有技術(shù)知識(shí)的人都可以為他們選擇的Linux平臺(tái)構(gòu)建和安裝實(shí)時(shí)修補(bǔ)軟件角塑。源代碼和信息是可用的,但它有多容易取決于您擁有哪個(gè)平臺(tái)淘讥。
但是圃伶,對于所有實(shí)時(shí)修補(bǔ)方法,修補(bǔ)程序的創(chuàng)建是一個(gè)巨大的技術(shù)障礙适揉。它需要詳細(xì)了解內(nèi)核源代碼留攒,其編程模型和約定。即使您可以創(chuàng)建補(bǔ)丁嫉嘀,在嘗試安裝補(bǔ)丁之前,您有責(zé)任對其進(jìn)行徹底測試魄揉。
實(shí)時(shí)修補(bǔ)不是免費(fèi)的剪侮。
成本一直是Linux非企業(yè)核心粉絲群采用的真正障礙。Oracle Ksplice洛退,Red Hat Kpatch瓣俯,SUSE Kgraft和KernelCare都要求提供不同金額的月度,年度或三年期訂閱兵怯。之所以提到這個(gè)原因:創(chuàng)建補(bǔ)丁并不容易彩匕。要了解所涉及的難度,請查看Kpatch補(bǔ)丁編寫指南媒区?您將了解為什么公司已成功提供實(shí)時(shí)補(bǔ)丁作為付費(fèi)服務(wù)驼仪。
哪些公司提供實(shí)時(shí)補(bǔ)丁袜漩?
Ksplice是第一個(gè)為Linux提供實(shí)時(shí)補(bǔ)丁的人绪爸。他們在2010年推出了商業(yè)服務(wù),支持一系列Linux風(fēng)格宙攻。當(dāng)甲骨文在2011年收購它們時(shí)奠货,除了甲骨文自己的Linux之外,其他所有產(chǎn)品都得到了支持座掘。這對紅帽和SUSE的其他大公牛來說是一面紅旗递惋。每個(gè)人都急于創(chuàng)建他們自己的實(shí)時(shí)補(bǔ)丁解決方案柔滔,他們分別在2014年以Kpatch和Kgraft的形式獨(dú)立發(fā)布。不久之后兩者都成了商業(yè)服務(wù)萍虽。同樣在那一年廊遍,KernelCare進(jìn)入了戒指,填補(bǔ)了Ksplice留下的空間贩挣,并取消了對舊內(nèi)核和其他口味的支持喉前。
現(xiàn)場補(bǔ)丁多少錢?
截至2019年王财,五家公司提供現(xiàn)場打補(bǔ)丁的商業(yè)服務(wù)卵迂。價(jià)格根據(jù)地理區(qū)域而有所不同 - 顯示的是美國,并且按降序排列见咒。
- 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可以高級支持訂閱,每年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 等等。
對于本文的其余部分,我將只考慮三種低到中等成本選項(xiàng):Canonical,Livepatch,Red Hat Kpatch和KernelCare。
誰需要實(shí)時(shí)補(bǔ)斗枋睢?
根據(jù)訂閱成本越锈,擁有數(shù)百臺(tái)服務(wù)器的公司似乎是Oracle稀拐,Red Hat和SUSE的目標(biāo)。對于企業(yè)而言,實(shí)時(shí)修補(bǔ)的好處是毫無疑問的,因此將服務(wù)捆綁在支持合同中是完全合理的刚操。
對于個(gè)人而言济赎,實(shí)時(shí)修補(bǔ)仍然是一個(gè)非必要的好奇心,對家庭媒體服務(wù)器,宿舍游戲服務(wù)器,加密貨幣挖掘或任何重啟動(dòng)作的情況都很有用咒钟。他們開始的好方法是使用Ubuntu 18.04 LTS吹由。對于最多三臺(tái)機(jī)器,實(shí)時(shí)修補(bǔ)是一個(gè)痛苦且無成本的介紹朱嘴。
對于企業(yè)家倾鲫,中小企業(yè)和成長型公司來說,選擇的選擇較少。他們需要成本和覆蓋范圍的靈活性级乍,這種解決方案不能將其鎖定到特定平臺(tái)舌劳,并且可以隨著增長而擴(kuò)展。對他們來說玫荣,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ù)器和桌面版本捅厂。最簡單的嘗試方法是在18.04 LTS桌面版上贯卦。當(dāng)您在干凈安裝后首次重新啟動(dòng)時(shí),Ubuntu對話窗口中的新功能的第二個(gè)屏幕為您提供了設(shè)置Livepatch的機(jī)會(huì)焙贷。如果您錯(cuò)過了撵割,請打開軟件更新程序并轉(zhuǎn)到設(shè)置的Updatestab,您可以從中登錄以激活它辙芍。
在安裝之前啡彬,您必須注冊密鑰。執(zhí)行此操作時(shí)故硅,頁面將顯示這些命令庶灿,以便通過終端進(jìn)行安裝。
sudo snap install canonical-livepatch
sudo canonical-livepatch enable <your key>
從現(xiàn)在開始吃衅,守護(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還沒有用戶友好的界面來進(jìn)行設(shè)置饼疙。通過一些努力变屁,它適用于Fedora和CentOS照皆,以及一些基于Debian的系統(tǒng),如Ubuntu和Gentoo(但在這些情況下碉哑,您必須編寫和測試自己的補(bǔ)肚甭佟)枉昏。
要在Red Hat Enterprise Linux 7上安裝kpatch:
sudo yum install kpatch
Kpatch沒有自動(dòng)化功能干花。而是使用標(biāo)準(zhǔn)命令行工具yum來檢查和安裝修補(bǔ)程序。包名稱提供關(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)行安裝。
在開始之前,獲取30天免費(fèi)試用密鑰尤慰。
注冊頁面顯示了您的注冊密鑰以及安裝KernelCare所需的這兩個(gè)命令馏锡。
sudo wget -qq -O - https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash
sudo /usr/bin/kcarectl --register <your key>
如果一切正常,您將看到消息服務(wù)器已注冊伟端。從現(xiàn)在開始杯道,KernelCare守護(hù)程序每四個(gè)小時(shí)檢查一次關(guān)鍵的內(nèi)核安全補(bǔ)丁。如果有任何可用责蝠,它將安裝它們而無需重新啟動(dòng)党巾,無需進(jìn)一步干預(yù)。
就像canonical-livepatch
霜医,kcarectl實(shí)用程序允許您在命令行上執(zhí)行操作齿拂。
- 檢查狀態(tài):
kcarectl --info
- 顯示所有補(bǔ)丁信息:
kcarectl --patch-info
- 強(qiáng)制立即刷新:
sudo kcarectl --auto-update
- 取消注冊許可證:
sudo kcarectl --unregister
結(jié)論
Linux的實(shí)時(shí)修補(bǔ)正處于轉(zhuǎn)折點(diǎn)。
雖然不是企業(yè)客戶的默認(rèn)選擇肴敛,但Canonical通過在Ubuntu 18.04 LTS上輕松使用Livepatch Service取得了很大進(jìn)展署海。我希望隨著用戶進(jìn)入專業(yè)領(lǐng)域,隨著他們熟悉它們医男,它的受歡迎程度將會(huì)提高砸狞。那些能夠在各種平臺(tái)上運(yùn)行的更具成本效益的實(shí)時(shí)修補(bǔ)解決方案的人將會(huì)發(fā)現(xiàn)自己傾向于使用KernelCare。
在任何情況下昨登,商業(yè)實(shí)時(shí)補(bǔ)丁提供的不僅僅是實(shí)時(shí)補(bǔ)丁的能力趾代,而是訪問補(bǔ)丁本身,安全托管丰辣,及時(shí)交付撒强,測試和驗(yàn)證,并保證在沒有任何有害影響的情況下工作笙什。