Ubuntu 24.04 เปิดใช้งาน unattended-upgrades อัตโนมัติไหม
Ubuntu Server 24.04 ติดตั้ง unattended-upgrades มาให้ แต่ต้องเปิดใช้งานผ่าน 20auto-upgrades โดยค่าเริ่มต้น Automatic-Reboot จะเป็น false และใช้คำสั่ง dry run ตรวจสอบได้
เหตุผลที่ควรตั้งค่าการอัปเดตความปลอดภัยอัตโนมัติ
เซิร์ฟเวอร์ที่ไม่ได้แพตช์คือเป้าหมายที่ง่ายที่สุดบนอินเทอร์เน็ต การบุกรุกเซิร์ฟเวอร์ขนาดเล็กส่วนใหญ่ไม่ได้เกิดจากเทคนิคที่ซับซ้อน แต่เกิดจากช่องโหว่ที่เป็นที่รู้จักในแพ็กเกจเก่าที่เจ้าของไม่เคยอัปเดต Ubuntu มีเครื่องมือที่ช่วยปิดช่องว่างนี้โดยอัตโนมัติ คือ unattended-upgrades ซึ่งจะติดตั้งการอัปเดตความปลอดภัยตามกำหนดเวลาโดยที่คุณไม่ต้องล็อกอินเข้าไปทำเอง นี่คือการลงทุนด้านความปลอดภัยที่คุ้มค่าที่สุดสำหรับ VPS และบน Ubuntu ใช้เวลาตั้งค่าเพียงไม่กี่นาที
เครื่องมือนี้ถูกออกแบบมาให้มีความระมัดระวังเป็นพิเศษ โดยค่าเริ่มต้นจะใช้เฉพาะการอัปเดตความปลอดภัยเท่านั้น ไม่ใช่การอัปเกรดทุกแพ็กเกจ เพราะแพตช์ความปลอดภัยมีความเสี่ยงต่ำและควรติดตั้งทันทีโดยไม่ต้องตรวจสอบ ในขณะที่การอัปเกรดฟีเจอร์อาจเปลี่ยนพฤติกรรมของซอฟต์แวร์ที่คุณใช้งานอยู่ ค่าเริ่มต้นนี้เหมาะสมที่สุดสำหรับเซิร์ฟเวอร์ส่วนใหญ่ และคู่มือนี้จะคงค่าดังกล่าวไว้พร้อมแนะนำการตั้งค่าบางอย่างที่ควรปรับเปลี่ยน
ขั้นตอนที่ 1: ติดตั้งและเปิดใช้งาน
บน Ubuntu 24.04 แพ็กเกจนี้มักจะมีอยู่แล้วแต่ไม่ได้เปิดใช้งานเสมอไป ให้ติดตั้งและเปิดใช้งานดังนี้:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesdpkg-reconfigure จะแสดงข้อความถามคำถามแบบใช่หรือไม่ เพื่อยืนยันการดาวน์โหลดและติดตั้งการอัปเดตที่เสถียรโดยอัตโนมัติ ให้ตอบตกลง ซึ่งจะเป็นการเขียนไฟล์เพื่อเปิดใช้งานการทำงานรายวัน:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";บรรทัดแรกจะรีเฟรชรายการแพ็กเกจทุกวัน ส่วนบรรทัดที่สองจะรันการอัปเกรดอัตโนมัติทุกวัน ทั้งสองค่าที่ตั้งเป็น 1 หมายความว่าเครื่องจะตรวจสอบและติดตั้งการอัปเดตความปลอดภัยทุกวันผ่าน systemd timer โดยที่คุณไม่ต้องดำเนินการใดๆ เพิ่มเติม
ขั้นตอนที่ 2: กำหนดสิ่งที่ต้องการให้อัปเดตอัตโนมัติ
นโยบายการทำงานอยู่ใน /etc/apt/apt.conf.d/50unattended-upgrades ให้เปิดไฟล์นี้และดูที่บล็อก Allowed-Origins บริเวณด้านบน:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};บรรทัด -security คือส่วนที่สำคัญและถูกเปิดใช้งานไว้เป็นค่าเริ่มต้น นี่คือนโยบายที่เน้นความปลอดภัย: รับเฉพาะการอัปเดตความปลอดภัย ส่วนการอัปเดตฟีเจอร์ทั่วไปให้คุณจัดการเองเมื่อต้องการ คุณสามารถเพิ่มบรรทัด origin "${distro_id}:${distro_codename}-updates" เพื่อให้อัปเดตทุกอย่างโดยอัตโนมัติได้ แต่สำหรับเซิร์ฟเวอร์ที่รันบริการสำคัญ การรับเฉพาะแพตช์ความปลอดภัยโดยอัตโนมัติเป็นทางเลือกที่ปลอดภัยกว่า ให้คงค่าตามที่ระบบตั้งมาหากไม่มีเหตุผลจำเป็นที่ต้องเปลี่ยน
ขั้นตอนที่ 3: จัดการการรีบูต
การอัปเดตบางอย่าง เช่น kernel หรือไลบรารีหลัก จะมีผลสมบูรณ์ก็ต่อเมื่อรีบูตเครื่องเท่านั้น unattended-upgrades จะไม่รีบูตเซิร์ฟเวอร์ของคุณเว้นแต่คุณจะสั่ง ซึ่งหมายความว่า kernel ที่แพตช์แล้วอาจค้างอยู่โดยไม่ได้ใช้งานจนกว่าคุณจะรีสตาร์ทเครื่อง ให้ตัดสินใจว่าต้องการจัดการเรื่องนี้อย่างไรและตั้งค่าใน 50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";การตั้งค่านี้จะรีบูตเซิร์ฟเวอร์ตอนตีสี่ เฉพาะในกรณีที่การอัปเดตจำเป็นต้องรีบูตเท่านั้น สำหรับ VPS เครื่องเดียวที่ไม่มีระบบ cluster เพื่อทำ failover การรีบูตสั้นๆ ในช่วงเช้ามืดมักเป็นสิ่งที่คุ้มค่าเพื่อแลกกับการมี kernel ที่ทันสมัยอยู่เสมอ หากเซิร์ฟเวอร์ของคุณรันบริการที่ไม่สามารถรีสตาร์ทโดยไม่คาดคิดได้ ให้ปิดการรีบูตอัตโนมัติไว้และสร้างนิสัยในการรีบูตด้วยตนเองหลังจากตรวจสอบ /var/run/reboot-required
ขั้นตอนที่ 4: ตรวจสอบการทำงาน
อย่ารอจนถึงวันถัดไปเพื่อดูว่างานรันหรือไม่ ให้ลองรันแบบจำลอง (dry run) เพื่อดูว่าระบบจะอัปเดตอะไรบ้างโดยไม่มีการเปลี่ยนแปลงจริง:
sudo unattended-upgrade --dry-run --debugผลลัพธ์จะแสดงรายการแพ็กเกจที่ระบบพิจารณาและแหล่งที่มา เพื่อให้คุณเห็นนโยบายการทำงานจริง หลังจากที่งานจริงรันไปแล้วอย่างน้อยหนึ่งครั้ง บันทึกจะอยู่ที่นี่:
cat /var/log/unattended-upgrades/unattended-upgrades.loglog นี้คือคำตอบของคำถามที่ว่า "เซิร์ฟเวอร์ของฉันกำลังอัปเดตตัวเองอยู่จริงหรือไม่" หากแสดงรายการแพ็กเกจความปลอดภัยที่ถูกติดตั้งตามกำหนดเวลา แสดงว่างานทำงานปกติ
ตำแหน่งของเครื่องมือนี้ในระบบ
การอัปเดตอัตโนมัติเป็นเพียงชั้นหนึ่งของการเสริมความปลอดภัยให้เซิร์ฟเวอร์ ไม่ใช่ทั้งหมด มันช่วยป้องกันไม่ให้ช่องโหว่ที่ทราบกันดีคงอยู่ยาวนาน แต่ไม่ได้ช่วยเรื่องการควบคุมผู้ที่ล็อกอินเข้ามาหรือสิ่งที่ถูกเปิดเผยสู่สาธารณะ ควรใช้งานร่วมกับ การเสริมความปลอดภัย SSH โดยใช้ key เท่านั้นเพื่อป้องกันการ brute-force, ใช้ UFW firewall แบบ default-deny เพื่อให้เข้าถึงได้เฉพาะพอร์ตที่คุณอนุญาต และใช้ unprivileged service users เพื่อไม่ให้แอปที่ถูกบุกรุกสามารถเข้าถึงทั้งระบบได้ แอปที่คุณโฮสต์เองก็มีความลับของมัน ดังนั้นหากเครื่องนี้รัน password vault ให้ใช้ Vaultwarden hardening pass เพื่อดูแล admin token และไฟล์สำรองข้อมูล ซึ่งการทำ apt patching ปกติไม่สามารถป้องกันได้ การแพตช์ช่วยปิดรูรั่วที่คุณรู้จัก ส่วนชั้นอื่นๆ จะช่วยจำกัดความเสียหายจากสิ่งที่คุณยังไม่รู้
FAQ
unattended-upgrades อัปเดตทุกอย่างหรือเฉพาะความปลอดภัย?
โดยค่าเริ่มต้นจะอัปเดตเฉพาะความปลอดภัยเท่านั้น บล็อก Allowed-Origins ใน /etc/apt/apt.conf.d/50unattended-upgrades จะเปิดใช้งานเฉพาะ origin -security และปล่อยให้การอัปเดตฟีเจอร์ทั่วไปเป็นหน้าที่ของคุณในการจัดการเอง นี่เป็นความตั้งใจของระบบ: แพตช์ความปลอดภัยมีความเสี่ยงต่ำและควรติดตั้งอัตโนมัติ ในขณะที่การอัปเกรดฟีเจอร์อาจเปลี่ยนพฤติกรรมของโปรแกรม ดังนั้นเซิร์ฟเวอร์ส่วนใหญ่ควรคงค่าเริ่มต้นที่เน้นความปลอดภัยไว้
การอัปเดตอัตโนมัติจะรีบูตเซิร์ฟเวอร์ของฉันหรือไม่?
จะรีบูตก็ต่อเมื่อคุณสั่งเท่านั้น ให้ตั้งค่า Unattended-Upgrade::Automatic-Reboot "true" และ Automatic-Reboot-Time ในไฟล์คอนฟิก แล้วเซิร์ฟเวอร์จะรีบูตในเวลานั้นหากการอัปเดตต้องการ เช่น หลังจากแพตช์ kernel หากปิดไว้ kernel ที่แพตช์แล้วจะรอจนกว่าคุณจะรีบูตเอง ให้ตรวจสอบ /var/run/reboot-required เพื่อดูว่ามีการรอรีบูตอยู่หรือไม่
ฉันจะตรวจสอบได้อย่างไรว่าการอัปเดตอัตโนมัติทำงานอยู่?
รัน sudo unattended-upgrade --dry-run --debug เพื่อดูว่าจะมีการอัปเดตอะไรบ้างโดยไม่มีการเปลี่ยนแปลงจริง และอ่าน /var/log/unattended-upgrades/unattended-upgrades.log เพื่อดูบันทึกการทำงานที่ผ่านมา การติดตั้งอัตโนมัติทุกครั้งจะถูกบันทึกใน /var/log/apt/history.log ด้วย หาก log แสดงว่ามีการติดตั้งแพ็กเกจความปลอดภัยตามกำหนดเวลา แสดงว่า timer ทำงานปกติ หากการรันแบบ dry run แสดงผล No packages found that can be upgraded unattended แสดงว่าทุกอย่างเป็นเวอร์ชันล่าสุดแล้ว หรือแหล่งที่มา (origins) ที่อนุญาตไว้แคบเกินไปจนไม่ตรงกับ repository ความปลอดภัย
unattended-upgrades เพียงพอที่จะทำให้เซิร์ฟเวอร์ปลอดภัยหรือไม่?
ไม่เพียงพอ แต่เป็นชั้นที่จำเป็น มันช่วยป้องกันไม่ให้ช่องโหว่ที่ทราบกันดีคงอยู่โดยไม่ได้รับการแก้ไข ซึ่งช่วยหยุดการบุกรุกรูปแบบที่พบบ่อยที่สุด แต่ไม่ได้ควบคุมการเข้าถึงหรือการเปิดเผยข้อมูล ควรใช้งานร่วมกับการเสริมความปลอดภัย SSH, firewall แบบ default-deny และการใช้ service users ที่มีสิทธิ์จำกัด เพื่อให้ได้เซิร์ฟเวอร์ที่ยากต่อการบุกรุกอย่างแท้จริง