Quay lại

2025/03/27

4. Bạn Đã Từng Sử Dụng Ksplice Chưa?

Trong bài viết này, chúng tôi sẽ giới thiệu Ksplice, một trong những tính năng của Oracle Linux. Ksplice là một hệ thống vá trực tiếp cho phép bạn áp dụng các bản vá cho nhân hệ điều hành mà không cần khởi động lại OS. Nó có lịch sử hơn 10 năm và là một tính năng xuất sắc không có đối thủ vào thời điểm này. Tuy nhiên, ngay cả trong số những người sử dụng Oracle Linux, những người sử dụng Ksplice có thể là thiểu số. Vì vậy, trong bài viết này, chúng tôi sẽ nhằm mục đích nâng cao sự hiểu biết của bạn về Ksplice.

Ksplice là gì?

Ksplice là một tính năng cho phép bạn áp dụng các bản vá cho nhân Linux và một số thư viện không gian người dùng mà không cần khởi động lại OS. Ví dụ, nếu bạn cài đặt một nhân mới được phát hành, bạn vẫn cần khởi động lại OS để kích hoạt nó. Tuy nhiên, Ksplice cho phép bạn kích hoạt bản cập nhật mới nhất mà không cần khởi động lại.

Nói cách khác, bạn có thể nhận được các lợi ích sau với Ksplice:

  • Giảm thiểu thời gian ngừng hoạt động của hệ thống
  • Phản hồi nhanh chóng với các lỗ hổng bảo mật
  • Giảm thiểu thời gian áp dụng bản vá

Khả năng kích hoạt cập nhật mà không cần khởi động lại là một tính năng đặc biệt quan trọng trong “các máy chủ có thể truy cập từ bên ngoài” và “các máy chủ KVM chạy nhiều máy ảo”. Các máy chủ có thể truy cập từ bên ngoài cần phản hồi nhanh chóng với các lỗ hổng bảo mật. Ngoài ra, nhiều máy chủ ảo chạy trên các máy chủ KVM. Do đó, khi cần khởi động lại OS, cần thực hiện nhiều điều chỉnh trước và cũng cần thời gian thực hiện công việc thực tế.

Nói cách khác, Ksplice là một tính năng đặc biệt hiệu quả trong việc sử dụng doanh nghiệp, giúp giảm chi phí vận hành và tăng cường bảo mật.

Câu hỏi thường gặp về Ksplice

Để giúp bạn nhanh chóng hiểu về Ksplice, chúng tôi sẽ cung cấp một cái nhìn tổng quan có tiêu đề Câu hỏi thường gặp về Ksplice.

Tôi có thể sử dụng Ksplice với những hệ điều hành nào?

Vào thời điểm này (tháng 9 năm 2022), các hệ điều hành Linux sau được hỗ trợ. Ksplice cũng hỗ trợ cả nhân tương thích Red Hat và nhân Unbreakable Enterprise cho Oracle Linux.

  • Oracle Linux 6
  • Oracle Linux 7
  • Oracle Linux 8
  • Oracle Linux 9
  • CentOS và RHEL 7
  • CentOS và RHEL 8
  • Ubuntu 18.04
  • Ubuntu 20.04

Ngoài Intel/AMD (x86_64), nó cũng hỗ trợ Arm 64-bit. Tuy nhiên, nó chỉ hỗ trợ nhân Unbreakable Enterprise Kernel cho Arm.

Tôi có cần kết nối Internet để sử dụng Ksplice không?

Ksplice có chế độ trực tuyến và ngoại tuyến. Chế độ trực tuyến kết nối với Mạng Linux Unbreakable (ULN) do Oracle cung cấp, vì vậy bạn cần có khả năng kết nối Internet (có thể thông qua proxy Internet).

Ngoài ra, trong chế độ ngoại tuyến, bạn có thể sử dụng Ksplice mà không cần kết nối Internet bằng cách thiết lập một gương Ksplice. Tuy nhiên, máy chủ được sử dụng làm gương Ksplice phải có khả năng kết nối Internet.

Các thành phần nào được bao phủ bởi bản vá trực tiếp của Ksplice?

Ngoài hai nhân sau đây, nó hỗ trợ các gói không gian người dùng glibc và openssl. Tuy nhiên, chỉ Oracle Linux hỗ trợ các gói không gian người dùng.

  • Nhân tương thích Red Hat
  • Nhân Unbreakable Enterprise
  • glibc
  • openssl

Có mất phí để sử dụng Ksplice không?

Để sử dụng Ksplice, bạn cần một hợp đồng Hỗ trợ Premier Oracle Linux có trả phí. Tuy nhiên, Ksplice được cung cấp miễn phí trên Oracle Linux trên Oracle Cloud Infrastructure (được thiết lập mặc định). Ngoại lệ, bạn có thể sử dụng miễn phí trên Ubuntu.

Có chương trình dùng thử cho Ksplice không?

Có chương trình dùng thử 30 ngày tại đây. Ngoài ra, nếu bạn muốn thử Ksplice một cách dễ dàng, chúng tôi khuyên bạn nên sử dụng Always Free của Oracle Cloud Infrastructure. Hình ảnh Oracle Linux đã được thiết lập sẵn Ksplice, vì vậy bạn có thể sử dụng ngay lập tức.

Có hệ thống vá trực tiếp nào khác tương tự Ksplice không?

Các bản phân phối Linux khác cũng có các hệ thống vá trực tiếp sau đây. Tuy nhiên, tất cả chúng chỉ mới được cung cấp trong những năm gần đây và chưa chứng minh được hiệu suất.

  • Linux dựa trên RHEL: kpatch
  • SUSE KLP
  • Dịch vụ Livepatch của Ubuntu

Ngoài ra, trên Windows, có một tính năng gọi là Windows hot patch. Tuy nhiên, nó bị giới hạn ở Windows Server 2022 Datacenter: Azure Edition.

Hãy thử Ksplice

Để hiểu Ksplice, tốt hơn là xem nó thực sự hoạt động như thế nào. Trong bài viết này, chúng tôi sẽ giải thích bằng cách sử dụng Oracle Linux 8 của Oracle Cloud Infrastructure, dễ thử nghiệm. Việc thiết lập và chi tiết sẽ được giải thích trong bài viết tiếp theo.

Ngoài ra, Oracle Linux 7 và Oracle Linux 9 gần giống nhau, nhưng có thể có chút khác biệt tùy thuộc vào phiên bản hình ảnh bạn đang sử dụng.

Kiểm tra trạng thái thiết lập Ksplice của bạn

Để sử dụng Ksplice, bạn cần một client Ksplice. Vì vậy, hãy kiểm tra xem client Ksplice đã được cài đặt chưa. Nếu bạn tìm kiếm một gói, bạn sẽ thấy gói uptrack (= client Ksplice) đã được cài đặt.

$ rpm -qa | grep -e ksplice -e uptrack | sort
ksplice-release-el8-1.0-4.el8.x86_64
ksplice-uptrack-release-1-5.noarch
uptrack-1.2.75-0.el8.noarch

Tiếp theo, kiểm tra tệp cấu hình /etc/uptrack/uptrack.conf. Bạn có thể sử dụng Ksplice nếu tệp cấu hình tồn tại và khóa truy cập (accesskey) được cấu hình.

$ grep -v -e '^\s*#' -e '^\s*$' /etc/uptrack/uptrack.conf
[Auth]
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(Khóa cho Ksplice Uptrack được lấy từ ULN)
[Network]
https_proxy =
gconf_proxy_lookup = no
[Settings]
install_on_reboot = yes
autoinstall = no

Tìm hiểu những điều cơ bản về Ksplice

Bây giờ bạn đã biết Ksplice được thiết lập, chúng tôi sẽ thực sự sử dụng Ksplice. Vì hầu hết các thao tác yêu cầu quyền root, chúng tôi sẽ sử dụng su. Ngoài ra, bạn có thể thêm sudo mỗi lần.

$ sudo su -

Kiểm tra phiên bản nhân

Kiểm tra phiên bản nhân Linux hiện đang được kích hoạt. UEK6 “5.4.17-2136.306.1.3” đang được kích hoạt.

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Nếu bạn kiểm tra phiên bản mới nhất của kho lưu trữ, nó là “5.4.17-2136.310.7.1”. Vì vậy, bạn có thể thấy rằng một phiên bản mới đã được phát hành.

# yum check-update kernel-uek
kernel-uek.x86_64              5.4.17-2136.310.7.1.el8uek              ol8_UEKR6

Xem các bản cập nhật

Theo phương pháp truyền thống, nhân được cập nhật và khởi động lại như sau:

# yum update kernel-uek -y
# reboot

Trong Ksplice, sử dụng lệnh uptrack-upgrade. Bạn có thể xem các bản cập nhật Ksplice có thể áp dụng bằng cách nhập “uptrack-upgrade -n” như sau. Mỗi hàng là một bản cập nhật riêng biệt.

# uptrack-upgrade -n
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
The following steps will be taken:
Install [n9kprcm6] Phát hiện khai thác đã biết.
Install [qivpmdlu] Phát hiện khai thác đã biết cho CVE-2019-9213.
Install [50qj7qw1] Phát hiện khai thác đã biết cho CVE-2017-1000253.
Install [3iw8b16t] Phát hiện khai thác đã biết cho CVE-2016-5195.
Install [sgxyx32m] Phát hiện khai thác đã biết cho CVE-2021-27363.
Install [92k7sosn] Phát hiện khai thác đã biết cho CVE-2021-27364.
★Bỏ qua bên dưới

Áp dụng bản cập nhật

Áp dụng tất cả các bản cập nhật này. Thời gian áp dụng thay đổi tùy thuộc vào số lượng bản cập nhật và thông số máy, và lần này mất khoảng 1 phút. Điểm đáng chú ý ở đây là “5.4.17-2136.310.7” trong dòng cuối cùng. Nhờ Ksplice, nó có cùng phiên bản nhân với phiên bản mới nhất.

# uptrack-upgrade -y
The following steps will be taken:
Install [n9kprcm6] Phát hiện khai thác đã biết.
Install [qivpmdlu] Phát hiện khai thác đã biết cho CVE-2019-9213.
Install [50qj7qw1] Phát hiện khai thác đã biết cho CVE-2017-1000253.
Install [3iw8b16t] Phát hiện khai thác đã biết cho CVE-2016-5195.
★bỏ qua
Installing [dad581dd] CVE-2022-2588: Sử dụng sau khi giải phóng trong Bộ phân loại Định tuyến IP.
Your kernel is fully up to date.
Effective kernel version is 5.4.17-2136.310.7.el8uek

Phiên bản nhân hiệu quả được kích hoạt bởi bản cập nhật Ksplice có thể được xem bằng lệnh uptrack-uname.

# uptrack-uname -r
5.4.17-2136.310.7.el8uek.x86_64

Lệnh uname thông thường hiển thị phiên bản nhân đã cài đặt.

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Danh sách các UEK đã cài đặt như sau. Phiên bản mới nhất “5.4.17-2136.310.7” không được cài đặt. Nói cách khác, chỉ bản cập nhật gia tăng Ksplice (bản vá) được cài đặt.

# rpm -q kernel-uek | sort -n
kernel-uek-5.4.17-2102.201.3.el8uek.x86_64
kernel-uek-5.4.17-2136.304.4.1.el8uek.x86_64
kernel-uek-5.4.17-2136.306.1.3.el8uek.x86_64

Xem các bản cập nhật

Bản cập nhật Ksplice bạn đang áp dụng có thể được xem bằng lệnh uptrack-show.

# uptrack-show
Installed updates:
[n9kprcm6] Phát hiện khai thác đã biết.
[qivpmdlu] Phát hiện khai thác đã biết cho CVE-2019-9213.
[50qj7qw1] Phát hiện khai thác đã biết cho CVE-2017-1000253.
★bỏ qua
[fza3q2mo] CVE-2022-2153: Từ chối dịch vụ trong Máy ảo Dựa trên Nhân.
[4eaq3lov] CVE-2022-21505: Bỏ qua khóa trong Kiến trúc Đo lường Tính toàn vẹn.
[dad581dd] CVE-2022-2588: Sử dụng sau khi giải phóng trong Bộ phân loại Định tuyến IP.
Effective kernel version is 5.4.17-2136.310.7.el8uek

Xóa các bản cập nhật

Bạn có thể dễ dàng xóa các bản cập nhật đã áp dụng bằng lệnh uptrack-remove.

# uptrack-remove --all -y
The following steps will be taken:
Remove [dad581dd] CVE-2022-2588: Sử dụng sau khi giải phóng trong Bộ phân loại Định tuyến IP.
Remove [4eaq3lov] CVE-2022-21505: Bỏ qua khóa trong Kiến trúc Đo lường Tính toàn vẹn.
Remove [jjafy1ef] CVE-2022-29582: Sử dụng sau khi giải phóng trong API io_uring không đồng bộ.
★bỏ qua
Removing [qivpmdlu] Phát hiện khai thác đã biết cho CVE-2019-9213.
Removing [n9kprcm6] Phát hiện khai thác đã biết.
Effective kernel version is 5.4.17-2136.306.1.3.el8uek

Bây giờ bạn đã trở lại trạng thái ban đầu không áp dụng các bản cập nhật Ksplice. Trong trường hợp này, chúng tôi đã áp dụng các bản cập nhật hàng loạt, nhưng bạn cũng có thể áp dụng chúng riêng lẻ bằng cách chỉ định ID của chúng.

# uptrack-uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Như một lời nhắc nhở, bạn sẽ không thấy gì khi xem các bản cập nhật Ksplice đã áp dụng.

# uptrack-show
Installed updates:
None

Effective kernel version is 5.4.17-2136.306.1.3.el8uek

Kết luận

Bạn đã hiểu Ksplice là gì chưa? Ngoài ra, chúng tôi tin rằng khi bạn thực sự sử dụng nó, bạn sẽ thấy rằng nó rất dễ sử dụng. Trong bài viết tiếp theo, chúng tôi sẽ thảo luận chi tiết hơn về Ksplice.