執行摘要

Kernel 內核是任何 Linux 系統中最重要的部分。它為整個系統提供了最重要的底層功能。在其中檢測到的任何安全問題都將危害整個服務器,從而使您的客戶和收益都面臨受害風險。

什麼是 KernelCare ?

KernelCare 是 Linux 內核修補軟體,可以自動讓您的 Linux 伺服器內核更新至最新的安全修補程式。
無需重啟服務器或系統停機。快速、簡單且易於部署,並且可以提供複雜的補丁程序或自定內核設定方式而不會影響性能。並適用於所有主要的 Linux 發行版本。

CloudLinux 開發 KernelCare,滿足客戶對於 Linux 伺服器針對性、低營運成本、安全補丁維護的需求。

為何 Kernel 是必備的 ?

Linux 具有可靠且悠久的歷史,但跟大多數現代操作系統一樣,Linux 也是龐大又複雜的軟體系統,需要頻繁的更新。這些更新主要針對可見的安全漏洞,但如果不解決這些漏洞,有可能會被利用來破壞您的伺服器或資料庫。

例如:去年檢測到的 170 多個 Linux 內核漏洞,其中不乏透過單一修補程式修復。

Linux 系統需要每個月更新和重新啟動的情況並不常見,從檢測漏洞到透過修補程式更新解決漏洞,這之間有時間差距。

“時間差”對惡意的威脅來說,提供最佳的入侵系統機會,駭客利用這些漏洞入侵系統。如果修補程式釋出卻不立即進行修補,那麼在防禦威脅攻擊方面的有效性會嚴重降低。Kernel Care 的出現,完全可以避免這樣的情況發生。通過自動安裝修補程式,不中斷伺服器服務,大大消除了修補程序與應用程序之間的時間差。

關於 KernelCare

我們的團隊由專業內核開發人員組成,他們的主要工作是監控內核漏洞,並準備修補程式。這些修補程式會以最快速度發佈,而且比多數 Enterprise Linux 供應商更早更快速,因為我們關注的是內核安全性,而非其他 Linux 的功能。也不涉及任何內核 ABI (應用程序二進制接口),因此不會影響系統運作功能。

傳統修補內核的方法,可能會讓您的內核發生不必要或無法預測的影響。甚至可能還會再產生新的未知安全漏洞,也可能會更改內核版本,觸發安全警示,導致需對伺服器上主要的應用程式進行復原回歸測試。

所有補丁更新都可以被稽核,透過評估測試及審核機制或選擇性進行核准及分佈和安裝,同時也可以放棄修補並回復,這些都可以在不影響系統的情況下進行作業。

如何運作

KernelCare 以服務方式運作即時修補 Linux 內核,透過安裝在伺服器上的小型代理程式進行內核修補。透過直接下載資源庫 (KernelCare 補丁服務器) 下載最新修補程式,網址:http://patches.kernelcare.com

,亦或者通過代理伺服器連線訪問,也可以從落地版補丁更新伺服器。

修補程式以累積二進制程式套件方式分佈,針對每個支援的內核版本制定打包,同時整個修補過程經過 GPG 密鑰簽證以確保安全性。

使用 KernelCare 進行內核修補時,不需要重新啟動系統。反而使用傳統的更新工具(例如 yum,apt-get)時卻需要。相反地,Linux 內核是二進位修補程式,在記憶體中不會涉及其他內容,因此不需要更新系統或軟體套件,直接與內核更新保持同步即可。事實上官方修補程序不會進行特別更改 (請參考安全合規性)。

範例方案

修補伺服器

Example 1: 直接 連線 Internet

如果您的伺服器可以連線 Internet,透過NAT方式使用 KernelCare 進行伺服器補丁工作。

使用金鑰授權方式,利用這兩個命令在服務器上快速部署 KernelCare。

curl -s https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash
/usr/bin/kcarectl –register KEY

NOTE: 將單詞替換為授權金鑰字串

Example 2: 通過代理伺服器

如果您的伺服器無法直接連線 Internet,可以使用代理主機(Proxy)。 KernelCare 使用標準環境參數如下來設定代理伺服器。

http_proxy=http://proxy.domain.com:port
https_proxy=http://proxy.domain.com:port

KernelCare 透過參數設定 代理伺服器(proxy) 連接到 Internet。 運用之前相同的指令即可部署 KernelCare。

curl -s https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash
/usr/bin/kcarectl –register KEY

Example 3: 無Internet連線 (本地端 ePortal)

沒有 Internet 連線的伺服器仍可利用 KernelCare ePortal 伺服器佈署 KernelCare。


KernelCare.ePortal 是一個修補程式伺服器,可在公司內部運行做為內部修補程式伺服器和主

KernelCare 修補程式伺服器之間橋樑。對於需要與外部網路嚴格隔離或需要對要修補程序進行更嚴格控制生產環境,此方式是理想的選擇。您可以使用自動部署將 KernelCare 分佈到您的伺服器。

自動部署

透過 Ansible,Puppet,Chef 等工具亦可用自動部署 KernelCare。 您可以:

  • 發佈 KernelCare 代理程式套件(僅對於無法連線 Internet 的伺服器)。
  • 發佈 KernelCare 代理程式設定檔(/etc/sysconfig/kcare/kcare.conf)。
  • 設置環境變數。
  • 安裝 KernelCare 代理程式(從落地版或遠端下載伺服器)。
  • 註冊 KernelCare。

有關自動執行 KernelCare 的更多詳細資訊,請參閱

https://docs.kernelcare.com/kernelcare_enterprise/#deployment-automation

特殊修補程式設定

客製化修補程式更新設定

KernelCare.ePortal 允許您將不同的伺服器調整到不同的修補程式級別。 使用自建自定義修補程式機制,每個自定機制有自己的修補程式組合及設定,且可自定許可金鑰。 例如,可以設定伺服器群組,或特殊環境(例如測試,登台,QA)或修補程式產生分布程序。


Examples of Servers in the ePortal GUI

修補程式伺服器和 CloudLinux 網路

CLN(CloudLinux)負責管理 CloudLinux Inc.產品許可證(包括KernelCare)。 每個許可證可以被賦予一個標籤。 該標籤是必須修補許可環境的日期,以DDMMYY格式送出。 標記每個伺服器將在指定日期或指定日期之前接收發佈的所有修補程式。

設置標籤

  1. 登錄到CLN門戶
  2. 到 KernelCare Keys,打開“ Edit Key Info”對話框。⟶編輯金鑰資訊
  3. 填寫標籤資訊
  4. 在要進行修補程序伺服器上執行:
    /usr/bin/kcarectl –set-sticky-patch=KEY
    或者,編輯下方路徑檔案
    /etc/sysconfig/kcare/kcare.conf and add: STICKY_PATCH=KEY
    NOTE: 將單詞替換為授權金鑰字串

禁用自動更新

您可以編輯文件/etc/sysconfig/kcare/kcare.conf 並設定變數來禁止自動更新,如下所示.

AUTO_UPDATE=False

Server 將不再自動修補更新。 您必須手動或通過自動化工具或使用命令更新。

/usr/bin/kcarectlupdate

測試和延遲修補

除了標準(例如正式環境)修補程序之外,KernelCare 修補程式伺服器還提供:

  • 測試更新發佈-尚未完成所有測試的最新修補程序.
  • 延遲更新發佈-過去12、24或48小時內發佈的修補程式。 可以跳過,不下載

透過這些PREFIX變數,可以在文件/etc/sysconfig/kcare/kcare.conf 中設定此類更新發佈。

監控方式

可使用系統內建方式來監控 KernelCare 保護的系統,也可以透 REST API 與第三方工具(如 NagiosZabbix )來監控系統。

透過 CLN 監控

以下範例中,橙色驚嘆號代表已安裝並註冊 KernelCare,但未更新最新修補程式的系統。

通過 KernelCare.ePortal 管理頁面進行監控

如果您使用的是 KernelCare.ePortal 服務器,則可以使用管理頁面(http:// ePortal IP / admin)來過濾密鑰 ID。

透過指令監控

可透過下方指令檢查是否已更新最新修補程式。

/usr/bin/kcarectl –check

使用 KernelCare API 進行監視

KernelCare 內含 REST API,可透過 REST API 監視並提取系統狀態。 語法如下

  • 透過金鑰的許可證:
    https://cln.cloudlinux.com/api/kcare/nagios/{key_id}
  • 透過IP的許可證(經銷商):
    https://cln.cloudlinux.com/api/kcare/nagios-res/{login}/{token}
  • 透過 ePortal 修補程序:
    http://ePortal IP/admin/api/kcare/nagios/{key_id}

有關 CloudLinux REST API,請參見https://cln.cloudlinux.com/clweb/downloads/cloudlinux-rest-api.pdf

整合 Nagios / Zabbix

Nagios 或 Zabbix 企業用戶,可以參考下方網址範本整合原本 Nagios 或 Zabbix 來監控更新情形http://patches.kernelcare.com/downloads/nagios/check_kcare.

該腳本是一個命令列執行程序,可輸出兩個以上供應商工具的輸出結果。 它將修補程式分類為:

  • 己更新 (Up to date)
  • 己過期 (Out of date)
  • 不支援 (Unsupported)
  • 沒運作 (Inactive)

此腳本僅報告具有 KernelCare 金鑰的伺服器( CLN 或 KernelCare.ePortal 註冊)和夥伴帳戶中的所有服務器( CLN 上註冊)。

下圖為示範如何使用 Nagios 腳本去檢查中的 KernelCare 伺服器“服務狀態”圖示說明。

請使 check_kcare 腳本:

  1. Download it from http://patches.kernelcare.com/downloads/nagios/check_kcare
  2. 複製到:
    • /usr/lib64/nagios/plugins/ (for Nagios)
    • /usr/lib/zabbix/externalscripts/ (for Zabbix)
  3. 執行

    NOTE: Zabbix 範本路徑如下:
    http://patches.kernelcare.com/downloads/nagios/kcare_zabbix_template.xml

安全合規

由於 KernelCare 直接在記憶體修補內核,因此正式的修補程序標識不會更改。 換句話說,修補時,uname -r 的輸出或文件 / proc / version 的內容都不會更改。

我們這樣做是因為 glibc 和其他依賴內核 ABI(應用程序二進制接口)資料庫必須知道內核的確切版本。

儘管此方法為服務器提供了最高級別的穩定性和兼容性,但它可能導致某些安全掃描程序將活動內核報告為“過期”。

為了防止此類報告,KernelCare 具有回復內核有效版本的命令。

kcare-uname -r

安全掃描界面

常用的安全掃描程序透過 KernelCare 提供己修補的 CVE 列表,即使 uname –r 的輸出保持不變。 KernelCare 代理可以控制 DEB 和 RPM 的內核版本。 通過設定 LD_PRELOAD 來覆蓋內核軟體版本輸出。 它將更改軟體管理器顯示訊息,如下:

[centos@host ~]$ rpm -q kernel-headers

kernel-headers-3.10.0-693.17.1.el7.x86_64

[centos@host ~]$ LD_PRELOAD=/usr/libexec/kcare/kpatch_package.so rpm -q

kernel-headers-3.10.0-957.21.3.el7.x86_64

掃描程序界面更改系統功能經由 kcarectl –uname 輸出,讓 KernelCare“有效版本”發揮作用。 此方式僅適用於應用過 SSH 執行安全掃描的單一系統用戶。

啟用 KernelCare 掃描界面

安裝命令如下所示:

curl -s -L https://kernelcare.com/installer | KCARE_SCANNER_USER=username bash

要更新現有軟體,請執行下方指令

(RPM系統):

KCARE_SCANNER_USER=username yum update kernelcare

( DEB 系統):

KCARE_SCANNER_USER=username apt-get update kernelcare

其中 username 是在 Server 上掃描用的用戶名稱。 透過 KCARE_SCANNER_USER 啟動一個新的 SSH 連線,啓動 KernelCare 修補程序(kcarectl –update)。 系統軟體管理器(RPM / DPKG)可以看到的已更新版本內核的結果顥示己更新為 KernelCare 提供的“有效版本”。

最新的安全掃描結果不會再有 KernelCare 二進制修補程序涵蓋的任何與內核相關的 CVE。

結論

啟用 KernelCare 掃描界面

本技術白皮書涵蓋了安裝和配置 KernelCare 的重點說明。 並 Linux 內核修補程式管理的關鍵需求:

  • 自動安裝補修補程式
  • 自定義修補程式配置和手動更新
  • 選擇修補程式存儲庫
  • 自動化和監控程序範本

實用連結