SSD Nodes Learn
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-07-23

Ubuntu 24.04 unattended-upgrades có tự động bật?

Ubuntu 24.04 đã có sẵn package này nhưng bạn cần kiểm tra cấu hình 20auto-upgrades. Xem cách dùng dry run để kiểm tra các package sẽ được cài đặt.

Tại sao bạn nên thiết lập tự động cập nhật bảo mật

Một server không được patch là mục tiêu dễ dàng nhất trên internet. Hầu hết các vụ xâm nhập vào các server nhỏ không hề tinh vi; chúng chỉ là các bug đã biết trong một package cũ mà chủ sở hữu chưa bao giờ cập nhật. Ubuntu cung cấp một công cụ để tự động lấp đầy lỗ hổng đó: unattended-upgrades tự động cài đặt các security updates theo lịch trình mà không cần bạn phải login. Đây là cách bảo mật rẻ nhất trên một VPS, và trên Ubuntu, bạn 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 security updates chứ không phải mọi bản nâng cấp package, vì một security patch có rủi ro thấp và có thể tự động cài đặt mà không cần kiểm tra, trong khi một bản nâng cấp tính năng có thể thay đổi hành vi mà bạn đang phụ thuộc vào. Thiết lập mặc định đó là lựa chọn đúng đắn cho hầu hết các server, và hướng dẫn này sẽ giữ nguyên nó trong khi chỉ ra một vài thiết lập đáng để thay đổi.

Bước 1: Cài đặt và kích hoạt

Trên Ubuntu 24.04, package này thường đã có sẵn nhưng không phải lúc nào cũng được kích hoạt. Hãy cài đặt và bật nó lên:

sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Prompt dpkg-reconfigure sẽ hỏi một câu hỏi yes-or-no duy nhất: liệu có tự động download và install các bản update ổn định hay không. Hãy chọn yes. Việc này sẽ ghi file để kích hoạt job hàng ngày:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Dòng đầu tiên sẽ refresh package list hàng ngày; dòng thứ hai chạy unattended upgrade hàng ngày. Cả hai đều được đặt thành 1 nghĩa là máy sẽ kiểm tra và áp dụng security updates mỗi ngày thông qua một systemd timer, mà không cần thêm bất kỳ thao tác nào từ bạn.

Bước 2: Quyết định những gì sẽ được tự động áp dụng

Chính sách này nằm trong /etc/apt/apt.conf.d/50unattended-upgrades. Hãy mở nó và xem 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à những dòng quan trọng nhất và chúng được bật theo mặc định. Đó là chính sách thận trọng: chỉ nhận security updates, còn các bản update tính năng thông thường sẽ để bạn tự tay á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 tất cả các bản update, nhưng đối với một server đang host các dịch vụ quan trọng, việc chỉ tự động nhận các security patches là lựa chọn mặc định an toàn hơn. Hãy để nguyên như mặc định trừ khi bạn có lý do cụ thể để thay đổi.

Bước 3: Xử lý việc reboot

Một số bản update, như kernel hoặc một core library, chỉ có hiệu lực đầy đủ sau khi reboot. unattended-upgrades sẽ không reboot server của bạn trừ khi bạn yêu cầu, điều này có nghĩa là một kernel đã được patch có thể nằm chờ và không được sử dụng cho đến khi bạn khởi động lại máy. Hãy quyết định cách bạn muốn xử lý việc này và thiết lập rõ ràng trong 50unattended-upgrades:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Thiết lập này sẽ reboot server vào lúc 4 giờ sáng khi, và chỉ khi, một bản update yêu cầu. Trên một VPS đơn lẻ không có cluster để failover, một đợt reboot ngắn vào sáng sớm thường là sự đánh đổi hợp lý để luôn cập nhật các bản sửa lỗi kernel. Nếu server của bạn chạy các dịch vụ không được phép restart bất ngờ, hãy tắt tính năng reboot và hãy tạo thói quen tự reboot sau khi đã kiểm tra /var/run/reboot-required.

Bước 4: Kiểm tra xem nó có hoạt động không

Đừng đợi đến một ngày mới kiểm tra xem job có chạy hay không. Hãy chạy thử một bản dry run để xem chính xác những gì sẽ được áp dụng mà không làm thay đổi bất cứ thứ gì:

sudo unattended-upgrade --dry-run --debug

Output sẽ liệt kê các package mà nó xem xét và nguồn (origins) của chúng, giúp bạn thấy chính sách đang hoạt động như thế nào. Sau khi job thực tế đã chạy ít nhất một lần, lịch sử sẽ nằm ở đây:

cat /var/log/unattended-upgrades/unattended-upgrades.log

Log đó là câu trả lời cho câu hỏi "server của tôi có thực sự tự patch hay không". Nếu nó hiển thị các security packages được cài đặt theo lịch trình, nghĩa là job đang hoạt động tốt.

Vị trí của nó trong hệ thống

Tự động cập nhật chỉ là một lớp trong một server đã được hardening, không phải là toàn bộ. Chúng giúp các bug đã biết không tồn tại lâu, nhưng không giải quyết được vấn đề ai có thể login hoặc những gì đang bị lộ. Hãy kết hợp chúng với SSH hardening chỉ dùng key để cổng trước không bị brute-force, một UFW firewall với chính sách default-deny để chỉ những gì bạn chọn mới có thể truy cập, và unprivileged service users để một app bị compromise không thể chiếm toàn bộ máy. Patching giúp lấp các lỗ hổng mà bạn đã biết; các lớp khác giúp hạn chế thiệt hại từ những lỗ hổng mà bạn chưa biết.

FAQ

unattended-upgrades áp dụng mọi bản update hay chỉ các bản security?

Theo mặc định, chỉ các security updates. Block Allowed-Origins trong /etc/apt/apt.conf.d/50unattended-upgrades sẽ bật các origin -security và để các bản update tính năng thông thường cho bạn tự áp dụng thủ công. Đây là chủ đích: security patches có rủi ro thấp và đáng để tự động cài đặt, trong khi các bản nâng cấp tính năng có thể thay đổi hành vi, vì vậy hầu hết các server nên giữ thiết lập mặc định thận trọng.

Tự động cập nhật có reboot server của tôi không?

Chỉ khi bạn yêu cầu. Hãy thiết lập Unattended-Upgrade::Automatic-Reboot "true" và một Automatic-Reboot-Time trong config, và server sẽ reboot vào thời điểm đó khi một bản update yêu cầu, ví dụ như sau khi patch kernel. Nếu tắt, một kernel đã được patch sẽ chờ cho đến khi bạn tự reboot; hãy kiểm tra /var/run/reboot-required để biết khi nào có một bản update đang chờ.

Làm thế nào để kiểm tra xem tự động cập nhật có thực sự đang chạy không?

Chạy sudo unattended-upgrade --dry-run --debug để xem những gì sẽ được áp dụng ngay bây giờ mà không thay đổi gì, và đọc /var/log/unattended-upgrades/unattended-upgrades.log để xem lịch sử các lần chạy trước đó; mọi bản cài đặt tự động cũng được lưu vào /var/log/apt/history.log. Nếu log hiển thị các security packages được cài đặt theo lịch trình hàng ngày, nghĩa là timer đang hoạt động. Nếu bản dry run in ra No packages found that can be upgraded unattended, có thể là mọi thứ đã được cập nhật hoặc các origin được cho phép của bạn quá hẹp để khớp với security repository.

unattended-upgrades có đủ để giữ server của tôi an toàn không?

Không, nhưng nó là một lớp cần thiết. Nó ngăn chặn các lỗ hổng đã biết tồn tại lâu mà không được patch, giúp ngăn chặn loại xâm nhập phổ biến nhất, nhưng nó không kiểm soát quyền truy cập hoặc các dịch vụ đang lộ diện. Hãy kết hợp nó với SSH hardening, một firewall default-deny, và các service users với đặc quyền tối thiểu để có một server thực sự khó bị xâm nhập.

#unattended-upgrades#ubuntu-24-04#bảo mật#updates#hardening