อัปเดตแพ็กเกจและเปิด Security Update อัตโนมัติบน Ubuntu
ช่องโหว่ด้านความปลอดภัยของซอฟต์แวร์ถูกค้นพบและแก้ไขอยู่เสมอ เซิร์ฟเวอร์ที่ไม่ได้อัปเดตนาน ๆ จึงเป็นเป้าหมายที่ง่ายที่สุดของการโจมตีอัตโนมัติ Ubuntu มีเครื่องมือ unattended-upgrades ที่ติดตั้ง Security Update ให้เองทุกวัน โดยค่าเริ่มต้นจะติดตั้งเฉพาะแพ็กเกจจากช่องทาง Security ซึ่งเสี่ยงต่อการทำให้ระบบเปลี่ยนพฤติกรรมน้อยที่สุด
คู่มือนี้แบ่งเป็นสองส่วน คือการอัปเดตแพ็กเกจด้วยตนเองอย่างถูกวิธี และการเปิด Security Update อัตโนมัติ ใช้ได้กับ Ubuntu 22.04 และ 24.04
สิ่งที่ต้องเตรียม
- Ubuntu 22.04/24.04 และผู้ใช้ที่ใช้
sudoได้ - Backup หรือ Snapshot ล่าสุดของเซิร์ฟเวอร์ก่อนอัปเดตครั้งใหญ่ ดู การ Backup Server บน Cloud ของ TDC
- ช่วงเวลาที่รีบูตได้ เพราะการอัปเดต Kernel และไลบรารีหลักต้องรีบูตจึงจะมีผล
ส่วนที่ 1: อัปเดตแพ็กเกจด้วยตนเอง
ขั้นตอนที่ 1: ดึงรายการแพ็กเกจล่าสุด
sudo apt update
ท้ายผลลัพธ์จะบอกจำนวนแพ็กเกจที่อัปเดตได้ เช่น 23 packages can be upgraded. Run 'apt list --upgradable' to see them.
ขั้นตอนที่ 2: ดูรายการก่อนติดตั้ง
apt list --upgradable
ตรวจว่ามีแพ็กเกจสำคัญ เช่น ฐานข้อมูล, Web Server หรือ PHP อยู่ในรายการหรือไม่ ถ้ามี ควรเลือกทำในช่วงที่มีผู้ใช้น้อย
ขั้นตอนที่ 3: ติดตั้งอัปเดต
sudo apt upgrade
apt จะแสดงรายการและถาม Do you want to continue? [Y/n] ตอบ Y บน Ubuntu 22.04 ขึ้นไป เมื่อเสร็จ needrestart อาจแสดงหน้าจอถามว่าจะรีสตาร์ตบริการใดบ้าง โดยทั่วไปกด Enter เพื่อยอมรับรายการที่เลือกไว้ได้
apt upgrade จะไม่ลบแพ็กเกจและไม่ติดตั้งแพ็กเกจใหม่ แพ็กเกจที่ต้องทำเช่นนั้นจะขึ้นว่า kept back ถ้าต้องการติดตั้งส่วนนี้ด้วย ให้ใช้ sudo apt full-upgrade และอ่านรายการแพ็กเกจที่จะถูกลบให้ละเอียดก่อนยืนยัน บางแพ็กเกจที่ขึ้น kept back เป็นเพราะ Phased Update ของ Ubuntu ที่ทยอยปล่อยให้เครื่องทีละส่วน กรณีนี้รอสักระยะแล้วจะติดตั้งได้เอง
ขั้นตอนที่ 4: ตรวจว่าต้องรีบูตหรือไม่
cat /var/run/reboot-required 2>/dev/null
cat /var/run/reboot-required.pkgs 2>/dev/null
ถ้าคำสั่งแรกแสดง *** System restart required *** ให้วางแผนรีบูต คำสั่งที่สองบอกว่าแพ็กเกจใดต้องการการรีบูต ถ้าไม่แสดงอะไรเลย แปลว่ายังไม่ต้องรีบูต
ขั้นตอนที่ 5: ลบแพ็กเกจที่ไม่ใช้แล้ว
sudo apt autoremove --purge
ช่วยลบ Kernel รุ่นเก่าที่ไม่ได้ใช้ ทำให้ /boot และดิสก์ไม่เต็ม
ส่วนที่ 2: เปิด Security Update อัตโนมัติ
ขั้นตอนที่ 1: ติดตั้งและเปิดใช้งาน
Ubuntu Server ส่วนใหญ่ติดตั้ง unattended-upgrades มาแล้ว คำสั่งนี้จะยืนยันหรือติดตั้งให้
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
หน้าจอจะถาม Automatically download and install stable updates? เลือก Yes ขั้นตอนนี้สร้างไฟล์ /etc/apt/apt.conf.d/20auto-upgrades ตรวจเนื้อหาได้ด้วย
cat /etc/apt/apt.conf.d/20auto-upgrades
ต้องมีสองบรรทัดนี้ ค่า "1" หมายถึงทำทุกวัน
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
ขั้นตอนที่ 2: ปรับการตั้งค่า
การตั้งค่าหลักอยู่ที่ /etc/apt/apt.conf.d/50unattended-upgrades ไฟล์นี้เป็นของแพ็กเกจ ถ้าแก้แล้วอาจถูกถามเรื่องไฟล์ชนกันตอนอัปเกรดแพ็กเกจ ทางที่สะอาดกว่าคือสร้างไฟล์ใหม่ที่ถูกอ่านทีหลังเพื่อเขียนทับเฉพาะค่าที่ต้องการ
sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local
// ลบ Kernel และแพ็กเกจที่ไม่ใช้แล้วหลังอัปเดต
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// ไม่รีบูตเอง (เปลี่ยนเป็น "true" ถ้ายอมให้รีบูตอัตโนมัติ)
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
ค่า Automatic-Reboot ต้องเลือกให้เหมาะกับงาน ถ้าตั้งเป็น "true" เครื่องจะรีบูตตามเวลาที่กำหนดเมื่อมีอัปเดตที่ต้องรีบูต ซึ่งทำให้ระบบปลอดภัยต่อเนื่องแต่บริการจะหยุดไปชั่วครู่ ถ้าตั้งเป็น "false" ต้องคอยตรวจ /var/run/reboot-required และรีบูตเอง
ส่วนที่กำหนดว่าจะอัปเดตจากช่องทางใดอยู่ในบล็อก Unattended-Upgrade::Allowed-Origins ของไฟล์ 50unattended-upgrades ค่าเริ่มต้นอนุญาตช่องทาง Release หลักของเวอร์ชัน (ซึ่งไม่มีการเปลี่ยนแพ็กเกจหลังออกรุ่น) และช่องทางที่ลงท้ายด้วย -security (รวมถึง ESM ถ้าเครื่องเปิดใช้ Ubuntu Pro) ส่วนบรรทัด "${distro_id}:${distro_codename}-updates"; ถูกปิดไว้ด้วย // แนะนำให้คงค่าเริ่มต้นไว้สำหรับเซิร์ฟเวอร์ Production
ถ้ามีแพ็กเกจที่ไม่ต้องการให้อัปเดตเอง เช่น ฐานข้อมูลที่ต้องการควบคุมเวลาอัปเกรดเอง ให้เพิ่มลงในไฟล์ 52unattended-upgrades-local
Unattended-Upgrade::Package-Blacklist {
"mariadb-server";
};
ตรวจไวยากรณ์ของไฟล์ทั้งหมดด้วย apt-config dump | grep -i unattended ถ้าไฟล์มีข้อผิดพลาด คำสั่งนี้จะแสดง Error พร้อมชื่อไฟล์และบรรทัด
ตรวจสอบผลลัพธ์
ทดลองรันแบบจำลอง (ไม่ติดตั้งจริง) เพื่อดูว่าระบบจะอัปเดตอะไร
sudo unattended-upgrade --dry-run --debug
ผลลัพธ์จะแสดงบรรทัด Allowed origins are: ตามด้วยช่องทางที่อนุญาต และรายการแพ็กเกจที่จะถูกอัปเดต ถ้าไม่มีอะไรต้องอัปเดตจะขึ้น No packages found that can be upgraded unattended
ตรวจว่า Timer ของ systemd ที่สั่งให้ทำงานทุกวันเปิดอยู่
systemctl list-timers 'apt-daily*'
ต้องเห็น apt-daily.timer (ดึงรายการแพ็กเกจ) และ apt-daily-upgrade.timer (ติดตั้งอัปเดต) พร้อมเวลาที่จะทำงานครั้งถัดไป หลังผ่านไปหนึ่งถึงสองวัน ดูประวัติการติดตั้งจริงได้ที่
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
รายละเอียดแพ็กเกจที่ถูกติดตั้งอยู่ใน /var/log/apt/history.log
ปัญหาที่พบบ่อย
Could not get lock /var/lib/dpkg/lock-frontend
มี apt อีกตัวทำงานอยู่ ส่วนใหญ่คือ unattended-upgrades ที่กำลังติดตั้งอัปเดตตามรอบ โดยเฉพาะช่วงไม่กี่นาทีหลังบูตเครื่อง ให้รอจนเสร็จ ตรวจได้ด้วย ps aux | grep -E 'apt|dpkg|unattended' | grep -v grep ห้ามลบไฟล์ Lock เอง เพราะอาจทำให้ฐานข้อมูลแพ็กเกจเสียหาย
อัปเดตค้างกลางคันหรือไฟฟ้าดับระหว่างอัปเดต
ให้รันคำสั่งนี้เพื่อทำขั้นตอนที่ค้างให้เสร็จ แล้วรัน sudo apt upgrade อีกครั้ง
sudo dpkg --configure -a
sudo apt -f install
/boot เต็ม ติดตั้ง Kernel ใหม่ไม่ได้
Kernel เก่าสะสมจนเต็ม ตรวจด้วย df -h /boot แล้วรัน sudo apt autoremove --purge และเปิด Remove-Unused-Kernel-Packages ตามขั้นตอนที่ 2 เพื่อไม่ให้เกิดซ้ำ
อัปเดตแล้วบริการทำงานผิดปกติ
ดูใน /var/log/apt/history.log ว่าแพ็กเกจใดถูกอัปเดตในช่วงเวลานั้น ถ้าจำเป็นต้องย้อนกลับ ให้กู้จาก Backup หรือ Snapshot ที่ทำไว้ และเพิ่มแพ็กเกจนั้นใน Package-Blacklist ชั่วคราวระหว่างตรวจสอบ
หากต้องการคำแนะนำเรื่องการวางแผนอัปเดตหรือรีบูตเซิร์ฟเวอร์ Production ติดต่อทีมซัพพอร์ต THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


