Ubuntu 24.04 unattended-upgrades có bật sẵn không?
Ubuntu Server 24.04 có sẵn unattended-upgrades, nhưng file 20auto-upgrades mới bật tự động. Automatic-Reboot mặc định false; dry run cho biết package sẽ cài.
Vì sao nên thiết lập cập nhật bảo mật tự động
Một server chưa được vá là mục tiêu dễ tấn công nhất trên Internet. Phần lớn các vụ server nhỏ bị breach không đến từ kỹ thuật tinh vi; đó thường là một lỗi đã biết trong package cũ mà chủ server chưa bao giờ cập nhật. Ubuntu có một công cụ tự xử lý khoảng trống này: unattended-upgrades tự động cài đặt các bản cập nhật bảo mật theo lịch mà không cần bạn đăng nhập. Đây là biện pháp bảo mật tiết kiệm chi phí nhất trên VPS, và trên Ubuntu chỉ mất vài phút để thiết lập.
Công cụ này được thiết kế theo hướng thận trọng. Theo mặc định, nó chỉ áp dụng các bản cập nhật bảo mật, không nâng cấp mọi package, vì bản vá bảo mật thường ít rủi ro và đáng cài mà không cần review, trong khi bản nâng cấp tính năng có thể thay đổi hành vi mà bạn đang phụ thuộc. Đây là mặc định phù hợp với hầu hết server. Hướng dẫn này giữ nguyên mặc định đó và chỉ ra một vài thiết lập đáng thay đổi.
Bước 1: Cài đặt và bật công cụ
Trên Ubuntu 24.04, package này thường đã có nhưng không phải lúc nào cũng được bật. Hãy cài đặt và bật nó:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesPrompt dpkg-reconfigure đặt một câu hỏi yes-or-no: có tự động tải xuống và cài đặt các bản cập nhật ổn định hay không. Hãy trả lời yes. Thao tác này ghi file để bật job chạy hằng ngày:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Dòng đầu tiên làm mới danh sách package hằng ngày; dòng thứ hai chạy unattended upgrade hằng ngày. Cả hai được đặt thành 1, nghĩa là máy sẽ kiểm tra và áp dụng các bản cập nhật bảo mật mỗi ngày bằng systemd timer mà bạn không cần làm thêm gì.
Bước 2: Quyết định nội dung được tự động áp dụng
Chính sách nằm trong /etc/apt/apt.conf.d/50unattended-upgrades. Mở file này và tìm block Allowed-Origins gần đầu file:
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";
};Các dòng -security là phần cần chú ý và mặc định đã được bật. Đây là chính sách thận trọng: áp dụng các bản cập nhật bảo mật, còn các bản cập nhật tính năng thông thường để bạn tự áp dụng khi muốn. Bạn có thể thêm dòng origin "${distro_id}:${distro_codename}-updates" để tự động áp dụng mọi bản cập nhật, nhưng với server đang chạy dịch vụ quan trọng, chỉ tự động áp dụng bản vá bảo mật là lựa chọn an toàn hơn. Hãy giữ nguyên thiết lập mặc định nếu bạn không có lý do cụ thể để thay đổi.
Bước 3: Xử lý việc reboot
Một số bản cập nhật, chẳng hạn kernel hoặc core library, chỉ có hiệu lực đầy đủ sau khi reboot. unattended-upgrades sẽ không reboot server nếu bạn không yêu cầu, nên kernel đã được vá có thể vẫn chưa được sử dụng cho đến lần restart tiếp theo. Hãy quyết định cách xử lý và đặt rõ trong 50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Thiết lập này reboot server lúc 4 giờ sáng, nhưng chỉ khi bản cập nhật yêu cầu. Với một VPS đơn lẻ không có cluster để failover, reboot ngắn vào sáng sớm thường là đánh đổi hợp lý để luôn cập nhật các bản sửa lỗi kernel. Nếu server chạy dịch vụ không được phép restart bất ngờ, hãy tắt tùy chọn reboot và chủ động reboot sau khi kiểm tra /var/run/reboot-required.
Bước 4: Xác nhận công cụ hoạt động
Đừng chờ một ngày mới kiểm tra job có chạy hay không. Hãy chạy dry run để xem chính xác những gì sẽ được áp dụng mà không thay đổi hệ thống:
sudo unattended-upgrade --dry-run --debugOutput liệt kê các package được xem xét và origin của chúng, giúp bạn kiểm tra chính sách đang hoạt động. Sau khi job thực chạy ít nhất một lần, bản ghi nằm tại đây:
cat /var/log/unattended-upgrades/unattended-upgrades.logLog này trả lời câu hỏi “server của tôi có thực sự tự vá hay không”. Nếu log cho thấy các package bảo mật được cài đặt theo lịch, job đang hoạt động.
Phần này nằm ở đâu trong kế hoạch bảo mật
Cập nhật tự động chỉ là một lớp trong việc harden server, không phải toàn bộ giải pháp. Nó ngăn các lỗi đã biết tồn tại quá lâu, nhưng không kiểm soát ai được đăng nhập hoặc dịch vụ nào đang exposed. Hãy kết hợp với harden SSH chỉ dùng key để ngăn brute-force ở điểm truy cập, firewall UFW theo mặc định deny để chỉ cho phép những gì bạn chọn, và service user không có quyền root để một app bị breach không thể chiếm toàn bộ máy. Các app bạn host còn chứa secret riêng, nên nếu máy này chạy password vault tự host, hãy thực hiện hardening Vaultwarden để bảo vệ admin token và file backup, những thứ mà việc apt patch không thể bảo vệ. Patching giúp đóng các lỗ hổng bạn biết; các lớp còn lại giới hạn thiệt hại từ những lỗ hổng bạn chưa biết.
FAQ
unattended-upgrades áp dụng mọi bản cập nhật hay chỉ bản cập nhật bảo mật?
Theo mặc định, chỉ các bản cập nhật bảo mật. Block Allowed-Origins trong /etc/apt/apt.conf.d/50unattended-upgrades bật các origin -security và để bạn tự áp dụng các bản cập nhật tính năng thông thường. Đây là chủ ý thiết kế: bản vá bảo mật ít rủi ro và đáng tự động áp dụng, còn bản nâng cấp tính năng có thể thay đổi hành vi. Vì vậy, hầu hết server nên giữ mặc định thận trọng.
Cập nhật tự động có reboot server không?
Chỉ khi bạn yêu cầu. Đặt Unattended-Upgrade::Automatic-Reboot "true" và một Automatic-Reboot-Time trong config. Khi đó, server sẽ reboot vào thời điểm đã đặt nếu bản cập nhật yêu cầu, chẳng hạn sau khi vá kernel. Nếu để tắt, kernel đã được vá sẽ chờ đến khi bạn tự reboot; kiểm tra /var/run/reboot-required để biết có reboot đang chờ hay không.
Làm thế nào để kiểm tra cập nhật tự động thực sự đang chạy?
Chạy sudo unattended-upgrade --dry-run --debug để xem ngay lúc này những gì sẽ được áp dụng mà không thay đổi hệ thống, và đọc /var/log/unattended-upgrades/unattended-upgrades.log để xem lịch sử các lần chạy; mọi lần cài đặt tự động cũng được ghi vào /var/log/apt/history.log. Nếu log cho thấy các package bảo mật được cài theo lịch hằng ngày, timer đang hoạt động. Nếu dry run in ra No packages found that can be upgraded unattended, hoặc mọi thứ đã được cập nhật, hoặc các origin được cho phép quá hẹp nên không khớp với repository bảo mật.
unattended-upgrades có đủ để giữ server an toàn không?
Không, nhưng đây là một lớp cần thiết. Nó ngăn các lỗ hổng đã biết tồn tại mà chưa được vá, qua đó chặn kiểu breach phổ biến nhất, nhưng không kiểm soát quyền truy cập hoặc mức độ exposed. Hãy kết hợp với hardening SSH, firewall mặc định deny và service user theo nguyên tắc least privilege để server thực sự khó bị xâm nhập.