หากคุณดูแลเซิร์ฟเวอร์ของคุณเองไม่ช้าก็เร็วประสบปัญหานี้ คุณต้องรีบูตระบบปฏิบัติการ แต่เครื่องจะให้บริการที่สำคัญซึ่งคุณไม่สามารถขัดจังหวะได้
แต่ทำไมต้องรีบูตตั้งแต่แรก? ดูเหมือนว่าทุกอย่างจะทำงานได้ดีหลังจาก apt-get upgrade
สั่งการ. อย่างไรก็ตาม สิ่งต่างๆ ไม่ได้เป็นอย่างที่เห็นเสมอไป แม้ว่าระบบจะยังคงทำงานอย่างมีความสุขหลังจากการอัปเกรดทุกครั้ง โดยไม่บังคับให้รีบูตเหมือนที่ Windows ทำ แต่ระบบอาจยังจำเป็นต้องมีอยู่
ตัวอย่างเช่น เมื่อพบช่องโหว่ในแกนหลักของระบบ (เคอร์เนล) ช่องโหว่นั้นจะถูกแพตช์และพุชไปยังเซิร์ฟเวอร์ของคุณเป็นแพ็คเกจใหม่ หลังจากที่คุณติดตั้งเคอร์เนลที่แพตช์แล้ว บางไฟล์จะถูกเขียนลงดิสก์ แต่ยังคงเป็นเคอร์เนลเก่าที่รันการแสดงอยู่ เนื่องจากเป็นไฟล์ที่โหลดเข้าสู่หน่วยความจำ (RAM)
ซึ่งหมายความว่าเซิร์ฟเวอร์ของคุณยังคงเสี่ยงต่อช่องโหว่ด้านความปลอดภัยที่ค้นพบก่อนหน้านี้ สามารถโหลดกระบวนการ daemons และบริการอื่นๆ ได้โดยไม่ต้องรีสตาร์ทระบบปฏิบัติการ อย่างไรก็ตาม เคอร์เนลอยู่ที่หัวใจของระบบและสามารถโหลดซ้ำได้ในการบู๊ตครั้งถัดไปเท่านั้น
Ubuntu Livepatch แก้ปัญหานี้โดยอนุญาตให้คุณปิดช่องโหว่ความปลอดภัยของเคอร์เนลโดยไม่ต้องรีสตาร์ท ด้วยวิธีนี้ คุณจะหลีกเลี่ยงหรือชะลอการรีบูตเป็นเวลาหลายสัปดาห์หรือหลายเดือนได้โดยไม่กระทบต่อความปลอดภัย
แนวคิดหลักที่อยู่เบื้องหลังการแพตช์แบบสดนั้นเรียบง่าย:เมื่อฟังก์ชันมีช่องโหว่ ให้เขียนใหม่ ขจัดข้อบกพร่อง และโหลดฟังก์ชันใหม่ไว้ที่ใดที่หนึ่งในหน่วยความจำ เมื่อฟังก์ชันถูกเรียก แทนที่จะรันโค้ดในเคอร์เนล ให้เปลี่ยนเส้นทางการเรียกเพื่อใช้โค้ดที่เขียนใหม่
แต่สำหรับสิ่งต่างๆ ส่วนใหญ่ที่ดูเหมือนจะเรียบง่ายนั้น การนำไปใช้งานและรายละเอียดทางเทคนิคนั้นไม่ง่ายนัก
วิธีตั้งค่า Livepatch บน Ubuntu
ไปที่หน้านี้และสร้างบัญชี Ubuntu One ของคุณ (หรือเข้าสู่ระบบถ้าคุณมีอยู่แล้ว) ตรวจสอบอีเมลของคุณและคลิกที่ลิงค์ยืนยันบัญชีในภายหลัง ถัดไป ไปที่หน้า Canonical Livepatch Service เลือกว่าคุณเป็น "ผู้ใช้ Ubuntu" และคลิกที่ปุ่มเพื่อสร้างโทเค็นของคุณ หน้าถัดไปจะแสดงคำสั่งที่แน่นอนที่คุณต้องป้อนบนเซิร์ฟเวอร์ของคุณ หลังจากคำสั่งแรก ให้ป้อน
sudo snap install canonical-livepatch
รอสองสามวินาทีจนกระทั่งติดตั้งแพ็คเกจ snap อย่างสมบูรณ์ เมื่อเสร็จแล้วคุณจะได้ผลลัพธ์คล้ายกับที่คุณเห็นในภาพต่อไปนี้
สุดท้ายกับคำสั่งสุดท้ายจากเพจ Canonical
sudo canonical-livepatch enable #PASTE_YOUR_TOKEN_HERE
บริการจะเปิดใช้งานและจะใช้แพตช์ความปลอดภัยกับเคอร์เนลของคุณโดยอัตโนมัติเมื่อจำเป็น โดยไม่ต้องป้อนข้อมูลในส่วนของคุณ
ติดตั้ง Snap Daemon หากจำเป็น
ในบางกรณีซึ่งเกิดขึ้นได้ยาก คำสั่งแรกในส่วนก่อนหน้าอาจล้มเหลว โดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้:-bash: /usr/bin/snap: No such file or directory
. ในกรณีนี้หมายความว่าผู้ให้บริการเซิร์ฟเวอร์ของคุณมีอิมเมจระบบปฏิบัติการ Ubuntu ที่ไม่มีบริการ snap daemon ตามค่าเริ่มต้น ติดตั้งด้วย:
sudo apt update && sudo apt install snapd
ตอนนี้ให้เรียกใช้สองคำสั่งจากส่วนก่อนหน้าอีกครั้ง
อัปเดตเซิร์ฟเวอร์ของคุณอยู่เสมอ
Livepatch จะใช้การอัปเดตความปลอดภัยที่จำเป็นทั้งหมดกับเคอร์เนลของคุณ อย่างไรก็ตาม คุณควรอัปเกรดส่วนที่เหลือของระบบเป็นประจำด้วยคำสั่งเช่น:
sudo apt update && sudo apt upgrade
คุณควรทำเช่นนี้ทุกสัปดาห์หรือบ่อยกว่านี้ถ้าทำได้ แพ็กเกจระบบที่สำคัญอาจแจ้งให้คุณทราบว่าต้องรีสตาร์ทเพื่อใช้การแก้ไขความปลอดภัยล่าสุด
โดยปกติแล้วสิ่งเหล่านี้จะเริ่มต้นใหม่ได้อย่างสวยงาม ซึ่งหมายความว่าจะไม่รบกวนบริการใดๆ ในกระบวนการ ตัวอย่างเช่น ในกรณีนี้ daemon SSH ถูกรีสตาร์ทโดยไม่ขัดจังหวะเซสชัน SSH ที่แอ็คทีฟ
ในสถานการณ์อื่นๆ คุณสามารถเริ่มบริการใหม่ได้ด้วยตัวเองเพื่อให้แน่ใจว่ามีการโหลดโค้ดที่แพตช์ใหม่และใช้การแก้ไขด้านความปลอดภัย ตัวอย่างเช่น หากคุณสังเกตเห็นว่าแพ็คเกจ nginx ได้รับการอัปเกรดแล้ว คุณสามารถเรียกใช้
systemctl restart nginx.service
เพื่อโหลด nginx daemon ใหม่ลงในหน่วยความจำ มิฉะนั้น แม้ว่าแพ็คเกจจะได้รับการอัปเกรดแล้ว แต่แพ็คเกจนั้นอาจยังคงทำงานด้วยรหัสเก่าที่มีช่องโหว่ ทำให้เซิร์ฟเวอร์ของคุณเสี่ยงต่อการถูกโจมตีที่รู้จัก การอัปเกรดแพ็กเกจบางอย่างทำเพื่อคุณ แต่บางแพ็กเกจไม่ทำ จึงเป็นนิสัยที่ดีที่จะให้ความสนใจกับสิ่งที่ "การอัปเกรด apt" และเริ่มบริการบางอย่างใหม่ หากจำเป็น คุณยังดูบันทึกเพื่อดูว่าดำเนินการโดยอัตโนมัติหรือไม่
บทสรุป
อย่างที่คุณเห็น Canonical ทำให้ง่ายต่อการใช้งานบนเซิร์ฟเวอร์ เท่าที่เกี่ยวข้องกับเคอร์เนล คุณไม่จำเป็นต้องมีงานบำรุงรักษาใดๆ สิ่งเดียวที่คุณทำได้คือวิ่ง
canonical-livepatch status
เพื่อตรวจสอบสิ่งต่างๆ เป็นระยะ