กลับ
2025/03/31
4. คุณเคยใช้ Ksplice หรือไม่?
ในบทความนี้ เราจะแนะนำ Ksplice ซึ่งเป็นหนึ่งในคุณสมบัติของ Oracle Linux Ksplice เป็นระบบแพตช์แบบสดที่ช่วยให้คุณสามารถใช้แพตช์กับเคอร์เนลได้โดยไม่ต้องรีบูตระบบปฏิบัติการ มันมีประวัติยาวนานกว่า 10 ปี และเป็นคุณสมบัติที่ยอดเยี่ยมที่ไม่มีใครเทียบได้ในขณะนี้ อย่างไรก็ตาม แม้แต่ในกลุ่มผู้ที่ใช้ Oracle Linux ผู้ที่ใช้ Ksplice อาจอยู่ในกลุ่ม少数 ดังนั้นในบทความนี้ เราจะมุ่งเน้นไปที่การเพิ่มความเข้าใจของคุณเกี่ยวกับ Ksplice
Ksplice คืออะไร?
Ksplice เป็นคุณสมบัติที่ช่วยให้คุณสามารถใช้แพตช์กับเคอร์เนลลินุกซ์และไลบรารีบางส่วนในระดับผู้ใช้ได้โดยไม่ต้องรีบูตระบบปฏิบัติการ ตัวอย่างเช่น หากคุณติดตั้งเคอร์เนลที่เพิ่งออกใหม่ คุณยังคงต้องรีบูตระบบปฏิบัติการเพื่อเปิดใช้งาน แต่ Ksplice ช่วยให้คุณสามารถเปิดใช้งานการอัปเดตล่าสุดได้โดยไม่ต้องรีบูต
กล่าวอีกนัยหนึ่ง คุณจะได้รับประโยชน์ดังต่อไปนี้จาก Ksplice:
- ลดเวลาหยุดทำงานของระบบ
- ตอบสนองต่อช่องโหว่ด้านความปลอดภัยได้อย่างรวดเร็ว
- ลดเวลาในการใช้แพตช์
ความสามารถในการเปิดใช้งานการอัปเดตโดยไม่ต้องรีบูตเป็นคุณสมบัติที่สำคัญอย่างยิ่งใน “เซิร์ฟเวอร์ที่สามารถเข้าถึงได้จากภายนอก” และ “โฮสต์ KVM ที่มีเครื่องเสมือนจำนวนมากทำงานอยู่” เซิร์ฟเวอร์ที่สามารถเข้าถึงได้จากภายนอกจำเป็นต้องตอบสนองต่อช่องโหว่ด้านความปลอดภัยอย่างรวดเร็ว นอกจากนี้ยังมีเซิร์ฟเวอร์เสมือนหลายตัวทำงานบนโฮสต์ KVM ดังนั้นเมื่อต้องรีบูตระบบปฏิบัติการ จำเป็นต้องมีการปรับแต่งล่วงหน้าและใช้เวลาในการทำงานจริง
กล่าวอีกนัยหนึ่ง Ksplice เป็นคุณสมบัติที่มีประสิทธิภาพโดยเฉพาะในการใช้งานระดับองค์กร ช่วยลดต้นทุนการดำเนินงานและเพิ่มความปลอดภัย
คำถามที่พบบ่อยเกี่ยวกับ Ksplice
เพื่อช่วยให้คุณเข้าใจ Ksplice ได้อย่างรวดเร็ว เราจะให้ภาพรวมในหัวข้อ คำถามที่พบบ่อยเกี่ยวกับ Ksplice
ระบบปฏิบัติการใดบ้างที่สามารถใช้กับ Ksplice ได้?
ณ ขณะนี้ (กันยายน 2022) ระบบปฏิบัติการลินุกซ์ต่อไปนี้ได้รับการสนับสนุน Ksplice ยังสนับสนุนทั้งเคอร์เนลที่เข้ากันได้กับ Red Hat และเคอร์เนล Unbreakable Enterprise สำหรับ Oracle Linux
- Oracle Linux 6
- Oracle Linux 7
- Oracle Linux 8
- Oracle Linux 9
- CentOS และ RHEL 7
- CentOS และ RHEL 8
- Ubuntu 18.04
- Ubuntu 20.04
นอกเหนือจาก Intel/AMD (x86_64) แล้ว ยังสนับสนุน Arm 64 บิตด้วย อย่างไรก็ตาม มันสนับสนุนเฉพาะเคอร์เนล Unbreakable Enterprise สำหรับ Arm เท่านั้น
ฉันต้องมีการเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ Ksplice หรือไม่?
Ksplice มีโหมดออนไลน์และออฟไลน์ โหมดออนไลน์เชื่อมต่อกับ Unbreakable Linux Network (ULN) ที่ให้บริการโดย Oracle ดังนั้นคุณต้องสามารถเชื่อมต่อกับอินเทอร์เน็ตได้ (อาจผ่านพร็อกซี่อินเทอร์เน็ต)
นอกจากนี้ ในโหมดออฟไลน์ คุณสามารถใช้ Ksplice ได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ตโดยการตั้งค่า Ksplice mirror อย่างไรก็ตาม เซิร์ฟเวอร์ที่ใช้เป็น Ksplice mirror ต้องสามารถเชื่อมต่อกับอินเทอร์เน็ตได้
ส่วนประกอบใดบ้างที่ครอบคลุมโดยแพตช์สดของ Ksplice?
นอกเหนือจากเคอร์เนลสองตัวต่อไปนี้ ยังสนับสนุนแพ็คเกจระดับผู้ใช้ glibc และ openssl ด้วย อย่างไรก็ตาม เฉพาะ Oracle Linux เท่านั้นที่สนับสนุนแพ็คเกจระดับผู้ใช้
- เคอร์เนลที่เข้ากันได้กับ Red Hat
- เคอร์เนล Unbreakable Enterprise
- glibc
- openssl
มีค่าใช้จ่ายในการใช้ Ksplice หรือไม่?
เพื่อใช้ Ksplice คุณต้องมีสัญญาการสนับสนุน Oracle Linux Premier Support แบบชำระเงิน อย่างไรก็ตาม Ksplice สามารถใช้งานได้ฟรีบน Oracle Linux บน Oracle Cloud Infrastructure (ตั้งค่าโดยค่าเริ่มต้น) เป็นข้อยกเว้น คุณสามารถใช้งานได้ฟรีบน Ubuntu
มีโปรแกรมทดลองใช้สำหรับ Ksplice หรือไม่?
มีโปรแกรมทดลองใช้ 30 วันให้บริการ นอกจากนี้ หากคุณต้องการลองใช้ Ksplice ได้อย่างง่ายดาย เราขอแนะนำ Oracle Cloud Infrastructure’s Always Free อิมเมจ Oracle Linux ได้รับการตั้งค่าด้วย Ksplice แล้ว ดังนั้นคุณสามารถใช้งานได้ทันที
มีระบบแพตช์สดอื่นๆ เหมือน Ksplice หรือไม่?
การกระจายลินุกซ์อื่นๆ ยังมีระบบแพตช์สดดังต่อไปนี้ อย่างไรก็ตาม ทั้งหมดนี้เพิ่งเริ่มให้บริการในช่วงไม่กี่ปีที่ผ่านมา และยังไม่ได้รับการพิสูจน์ถึงประสิทธิภาพ
- kpatch บนพื้นฐาน RHEL
- SUSE KLP
- Ubuntu Livepatch Service
นอกจากนี้ บน Windows มีคุณสมบัติที่เรียกว่า Windows hot patch อย่างไรก็ตาม มันจำกัดเฉพาะ Windows Server 2022 Datacenter: Azure Edition เท่านั้น
ลองใช้ Ksplice กันเถอะ
เพื่อให้เข้าใจ Ksplice ได้ดีขึ้น ควรดูว่ามันทำงานอย่างไรจริงๆ ในบทความนี้ เราจะอธิบายโดยใช้ Oracle Linux 8 บน Oracle Cloud Infrastructure ซึ่งลองใช้งานได้ง่าย การตั้งค่าและรายละเอียดจะอธิบายในบทความถัดไป
นอกจากนี้ Oracle Linux 7 และ Oracle Linux 9 ก็เกือบจะเหมือนกัน แต่บางครั้งอาจมีความแตกต่างเล็กน้อยขึ้นอยู่กับเวอร์ชันของอิมเมจที่คุณใช้
ตรวจสอบสถานะการตั้งค่าของ Ksplice
เพื่อใช้ Ksplice คุณต้องมีไคลเอ็นต์ Ksplice ดังนั้น ตรวจสอบว่าไคลเอ็นต์ Ksplice ติดตั้งอยู่หรือไม่ หากคุณค้นหาแพ็คเกจ คุณจะพบว่าแพ็คเกจ uptrack (= ไคลเอ็นต์ Ksplice) ได้รับการติดตั้งแล้ว
$ 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
ต่อไป ตรวจสอบไฟล์การกำหนดค่า /etc/uptrack/uptrack.conf คุณสามารถใช้ Ksplice ได้หากมีไฟล์การกำหนดค่าและกำหนด accesskey แล้ว
$ grep -v -e '^\s*#' -e '^\s*$' /etc/uptrack/uptrack.conf
[Auth]
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(คีย์สำหรับ Ksplice Uptrack ดึงมาจาก ULN)
[Network]
https_proxy =
gconf_proxy_lookup = no
[Settings]
install_on_reboot = yes
autoinstall = no
เรียนรู้พื้นฐานของ Ksplice
เมื่อคุณรู้แล้วว่า Ksplice ได้รับการตั้งค่าแล้ว เราจะเริ่มใช้ Ksplice จริงๆ เนื่องจากการดำเนินการส่วนใหญ่ต้องการสิทธิ์ root เราจะใช้ su หรืออีกทางเลือกหนึ่ง คุณสามารถเพิ่ม sudo ทุกครั้ง
$ sudo su -
ตรวจสอบเวอร์ชันของเคอร์เนล
ตรวจสอบเวอร์ชันของเคอร์เนลลินุกซ์ที่เปิดใช้งานอยู่ในปัจจุบัน UEK6 “5.4.17-2136.306.1.3” ได้รับการเปิดใช้งาน
# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
หากคุณตรวจสอบเวอร์ชันล่าสุดของที่เก็บข้อมูล มันคือ “5.4.17-2136.310.7.1” ดังนั้นคุณจะเห็นว่าเวอร์ชันใหม่ได้รับการปล่อยออกมาแล้ว
# yum check-update kernel-uek
kernel-uek.x86_64 5.4.17-2136.310.7.1.el8uek ol8_UEKR6
ดูการอัปเดต
ในวิธีการแบบดั้งเดิม เคอร์เนลจะได้รับการอัปเดตและรีบูตดังนี้:
# yum update kernel-uek -y
# reboot
ใน Ksplice ใช้คำสั่ง uptrack-upgrade คุณสามารถดูการอัปเดต Ksplice ที่สามารถใช้ได้โดยป้อน “uptrack-upgrade -n” ดังนี้ แต่ละแถวคือการอัปเดตแยกกัน
# uptrack-upgrade -n
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
Install [sgxyx32m] Known exploit detection for CVE-2021-27363.
Install [92k7sosn] Known exploit detection for CVE-2021-27364.
★ข้ามด้านล่าง
ใช้การอัปเดต
ใช้การอัปเดตทั้งหมดนี้ เวลาที่ใช้ขึ้นอยู่กับจำนวนการอัปเดตและสเปกของเครื่อง และครั้งนี้ใช้เวลาประมาณ 1 นาที จุดสำคัญที่ควรสังเกตคือ “5.4.17-2136.310.7” ในบรรทัดสุดท้าย เนื่องจาก Ksplice มันมีเวอร์ชันเคอร์เนลเดียวกับเวอร์ชันล่าสุด
# uptrack-upgrade -y
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
★ข้าม
Installing [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Your kernel is fully up to date.
Effective kernel version is 5.4.17-2136.310.7.el8uek
เวอร์ชันเคอร์เนลที่มีผลที่เปิดใช้งานโดยการอัปเดต Ksplice สามารถดูได้ด้วยคำสั่ง uptrack-uname
# uptrack-uname -r
5.4.17-2136.310.7.el8uek.x86_64
คำสั่ง uname ปกติจะแสดงเวอร์ชันเคอร์เนลที่ติดตั้ง
# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
รายการ UEK ที่ติดตั้งมีดังนี้ “5.4.17-2136.310.7” ล่าสุดยังไม่ได้รับการติดตั้ง กล่าวอีกนัยหนึ่ง มีเพียงแพตช์การอัปเดตเพิ่มเติมของ Ksplice เท่านั้นที่ติดตั้ง
# 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
ดูการอัปเดต
การอัปเดต Ksplice ที่คุณกำลังใช้สามารถดูได้ด้วยคำสั่ง uptrack-show
# uptrack-show
Installed updates:
[n9kprcm6] Known exploit detection.
[qivpmdlu] Known exploit detection for CVE-2019-9213.
[50qj7qw1] Known exploit detection for CVE-2017-1000253.
★ข้าม
[fza3q2mo] CVE-2022-2153: Denial-of-service in Kernel-based Virtual Machine.
[4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
[dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Effective kernel version is 5.4.17-2136.310.7.el8uek
ลบการอัปเดต
คุณสามารถลบการอัปเดตที่ใช้แล้วได้อย่างง่ายดายด้วยคำสั่ง uptrack-remove
# uptrack-remove --all -y
The following steps will be taken:
Remove [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Remove [4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
Remove [jjafy1ef] CVE-2022-29582: Use-after-free in asynchronous io_uring API.
★ข้าม
Removing [qivpmdlu] Known exploit detection for CVE-2019-9213.
Removing [n9kprcm6] Known exploit detection.
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
ตอนนี้คุณกลับสู่สถานะดั้งเดิมที่ยังไม่ได้ใช้การอัปเดต Ksplice ในกรณีนี้ เราได้ใช้การอัปเดตแบบกลุ่ม แต่คุณสามารถใช้ทีละรายการได้โดยระบุ ID ของมัน
# 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
เพื่อเตือนความจำ คุณจะไม่เห็นอะไรเมื่อดูการอัปเดต Ksplice ที่ใช้แล้ว
# uptrack-show
Installed updates:
None
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
สรุป
คุณเข้าใจแล้วหรือยังว่า Ksplice คืออะไร? นอกจากนี้ เราคิดว่าเมื่อคุณใช้งานจริง คุณจะเห็นว่ามันใช้งานง่ายมาก ในบทความถัดไป เราจะพูดถึง Ksplice ในรายละเอียดเพิ่มเติม