An tâm tuyệt đối: Hướng dẫn cấu hình tự động update Ubuntu (2025)
Chỉ vài giờ sau khi một lỗ hổng nghiêm trọng được công bố, hàng ngàn bot trên thế giới đã bắt đầu quét Internet để khai thác các lỗ hổng như PwnKit (đã được đề cập ở Lớp 1) trên những VPS “chậm chân” chưa kịp cập nhật. Việc chạy apt upgrade
thủ công không còn đủ nhanh để chống lại các mối đe dọa này.
Đây chính là lúc giải pháp tự động update Ubuntu trở nên tối quan trọng. Chào mừng bạn đến với bài viết chuyên sâu về Lớp phòng thủ thứ 7, một phần trong hướng dẫn toàn diện Bảo mật VPS từ A-Z: 10 lớp phòng thủ thiết yếu (cập nhật 2025) của chúng tôi. Chúng ta sẽ cùng nhau làm chủ công cụ unattended-upgrades
, giúp bạn vá các lỗ hổng bảo mật một cách tự động và thông minh.
Tóm tắt nhanh: Cách tự động update Ubuntu
Để tự động cập nhật các bản vá bảo mật trên Ubuntu, bạn cần:
- Cài đặt gói:
sudo apt install unattended-upgrades
. - Kích hoạt nó bằng lệnh
sudo dpkg-reconfigure --priority=low unattended-upgrades
và chọn<Yes>
. - (Tùy chọn) Tinh chỉnh các file cấu hình trong
/etc/apt/apt.conf.d/
để nhận email thông báo, loại trừ gói phần mềm, hoặc lên lịch khởi động lại.
Hiểu sâu về unattended-upgrades
Trước khi đi vào cài đặt, việc hiểu rõ bản chất công cụ sẽ giúp bạn tự tin hơn khi cấu hình.
Unattended-Upgrades khác gì so với apt upgrade
?
Đây là câu hỏi nhiều người dùng thắc mắc. Cả hai đều dùng để cập nhật hệ thống, nhưng mục đích và cách hoạt động của chúng hoàn toàn khác nhau.
sudo apt upgrade
: Đây là một lệnh thủ công. Khi bạn chạy nó, nó sẽ nâng cấp TẤT CẢ các gói có thể nâng cấp từ TẤT CẢ các nguồn (repository) mà bạn đã cấu hình. Nó mạnh mẽ nhưng không có tính chọn lọc và đòi hỏi sự can thiệp trực tiếp của bạn.unattended-upgrades
: Đây là một dịch vụ tự động, chạy nền. Nó được thiết kế để có tính chọn lọc cao. Bạn có thể ra lệnh cho nó chỉ tự động cài đặt các bản cập nhật từ những nguồn cụ thể, chẳng hạn như nguồn bảo mật (-security
), trong khi bỏ qua các cập nhật tính năng thông thường.
Cơ chế hoạt động: Systemd Timers và APT
Trên các hệ thống Ubuntu hiện đại, unattended-upgrades
được kích hoạt bởi systemd timers, chứ không phải cron
như trước đây. Hai bộ đếm thời gian chính là apt-daily.timer
(thực hiện “apt update”) và apt-daily-upgrade.timer
(thực hiện “unattended-upgrade”).
Các file cấu hình trong /etc/apt/apt.conf.d/
chứa các biến số mà các script này sẽ đọc để quyết định cái gì sẽ được cập nhật, trong khi systemd timers quyết định khi nào việc cập nhật diễn ra.
Cài đặt và kích hoạt chế độ tự động update Ubuntu
Bây giờ, hãy bắt đầu các bước thực hành đầu tiên để đưa “người vệ sĩ” này vào guồng hoạt động.
Bước 1: Kiểm tra và cài đặt
Trên các phiên bản Ubuntu Server mới, unattended-upgrades
thường được cài đặt sẵn. Để kiểm tra, bạn có thể dùng lệnh:
apt policy unattended-upgrades
Hoặc dùng cú pháp:
apt-cache policy unattended-upgrades
Nếu bạn thấy thông tin phiên bản trong mục Installed
, nghĩa là nó đã có sẵn. Nếu không, hãy tiến hành cài đặt bằng bộ lệnh quen thuộc:
sudo apt update
sudo apt install unattended-upgrades
sudo apt upgrade
là một lệnh thủ công. Nó mạnh mẽ nhưng không có tính chọn lọc và đòi hỏi sự can thiệp trực tiếp của bạn. (Để tìm hiểu sâu hơn về phương pháp này, bạn có thể xem lại Hướng dẫn 2 cách cập nhật Ubuntu của chúng tôi).
Bước 2: Kích hoạt tự động cập nhật
Cách đơn giản và được khuyến nghị để kích hoạt là dùng công cụ cấu hình của dpkg
.
sudo dpkg-reconfigure --priority=low unattended-upgrades
Một giao diện màu xanh sẽ hiện ra trên terminal, hỏi bạn có muốn tự động tải và cài đặt các bản cập nhật ổn định không. Sử dụng phím Tab để di chuyển đến nút <Yes>
và nhấn Enter.

Hộp thoại cấu hình của DPKG sau khi chạy lệnh dpkg-reconfigure, hỏi người dùng có muốn bật tính năng tự động cập nhật bản vá cho Ubuntu hay không.
Mẹo cho người dùng nâng cao (Kích hoạt không cần tương tác):
Nếu bạn đang viết script tự động hóa, hãy dùng bộ lệnh sau để kích hoạt mà không cần hộp thoại:
echo unattended-upgrades unattended-upgrades/enable_auto_updates boolean true | sudo debconf-set-selections
sudo dpkg-reconfigure -f noninteractive unattended-upgrades
Hành động này sẽ tự động tạo một file tại /etc/apt/apt.conf.d/20auto-upgrades
. File này chính là công tắc chính, ra lệnh cho hệ thống APT thực hiện các tác vụ định kỳ.
Nội dung file đó thường sẽ trông như sau:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
Giải thích từng dòng:
Update-Package-Lists "1"
: Tương đương apt update, chạy mỗi 1 ngày.Download-Upgradeable-Packages "1"
: Tải về trước các gói có thể nâng cấp, chạy mỗi 1 ngày.Unattended-Upgrade "1"
: Thực thi việc cài đặt các bản cập nhật đã tải, chạy mỗi 1 ngày.AutocleanInterval "7"
: Tương đương apt autoclean, dọn dẹp các file gói đã tải về nhưng không còn cần thiết, chạy mỗi 7 ngày.
Lưu ý: Bạn có thể thắc mắc tại sao các tác vụ này không chạy chính xác vào lúc 0h00. Đó là do một thiết lập mặc định có tên APT::Periodic::RandomSleep
sẽ cho tiến trình “ngủ” một khoảng thời gian ngẫu nhiên (lên đến 30 phút) trước khi chạy. Việc này giúp giảm tải cho các máy chủ chứa gói cập nhật, tránh việc hàng ngàn hệ thống cùng kết nối một lúc.
Tinh chỉnh nâng cao – Làm chủ hoàn toàn cuộc chơi
Đây là phần quan trọng nhất, nơi chúng ta biến unattended-upgrades
từ một công cụ tự động đơn thuần thành một hệ thống thông minh, hoạt động chính xác theo ý muốn của bạn.
Mẹo chuyên nghiệp (Best Practice): Thay vì sửa trực tiếp file mặc định /etc/apt/apt.conf.d/50unattended-upgrades
, bạn nên tạo một file mới để ghi đè các thiết lập. Điều này giúp cấu hình của bạn không bị ảnh hưởng khi gói unattended-upgrades
được nâng cấp trong tương lai.

Cảnh báo từ DPKG khi phát hiện file cấu hình 20auto-upgrades đã bị sửa đổi thủ công, yêu cầu người dùng lựa chọn giữa việc giữ phiên bản cũ hoặc cài đặt phiên bản mới của nhà phát triển.
Hãy tạo một file mới với số thứ tự cao hơn (ví dụ 51):
sudo nano /etc/apt/apt.conf.d/51-my-custom-settings
Bây giờ, tất cả các tùy chỉnh dưới đây, bạn chỉ cần thêm những dòng bạn muốn thay đổi vào file mới này.
Lựa chọn nguồn cập nhật (Allowed Origins)
Đây là trái tim của việc cấu hình. Nó quyết định gói từ nguồn nào sẽ được phép tự động cài đặt.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
//"${distro_id}:${distro_codename}-updates";
//"${distro_id}:${distro_codename}-proposed";
//"${distro_id}:${distro_codename}-backports";
};
Mặc định, chỉ có dòng -security
được kích hoạt (không có dấu //
phía trước). Điều này có nghĩa là chỉ các bản vá bảo mật được tự động cài đặt. Đây là thiết lập an toàn nhất.
-security
: Các bản vá lỗi bảo mật quan trọng. Luôn nên bật.-updates
: Các bản cập nhật sửa lỗi không liên quan bảo mật và nâng cấp nhỏ. Bật tùy chọn này có thể giúp hệ thống ổn định hơn, nhưng đôi khi cũng có thể mang đến thay đổi nhỏ không mong muốn.-proposed
: Các bản cập nhật đang trong giai đoạn thử nghiệm trước khi được đưa vào -updates. Không nên bật trên môi trường production vì có thể gây mất ổn định.-backports
: Chứa các phiên bản phần mềm mới hơn được “backport” từ các phiên bản Ubuntu mới hơn. Không nên bật tự động vì nó có thể gây ra các thay đổi lớn và xung đột.
Cấu hình nhận thông báo qua Email
Bạn không muốn hệ thống âm thầm cập nhật? Hãy bắt nó phải “báo cáo” qua email.
Yêu cầu: Cài đặt một Mail Transfer Agent (MTA) để VPS có khả năng gửi mail. mailutils
là một lựa chọn đơn giản.
sudo apt install mailutils -y
Trong file cấu hình, tìm và chỉnh sửa các dòng sau:
// Bỏ dấu // và điền email của bạn
Unattended-Upgrade::Mail "[email protected]";
// Báo cáo khi nào?
// "on-change": Gửi mail mỗi khi có cập nhật (khuyến nghị).
// "only-on-error": Chỉ gửi mail khi quá trình cập nhật gặp lỗi.
Unattended-Upgrade::MailReport "on-change";
Tính năng này cực kỳ hữu ích để bạn nắm được tình trạng sức khỏe của VPS mà không cần đăng nhập.
Nâng cao báo cáo: Để nhận được email báo cáo chi tiết hơn về nhật ký thay đổi (changelog) của từng gói được cập nhật, bạn nên cài đặt thêm apt-listchanges
:
sudo apt install apt-listchanges
Trong quá trình cài đặt, nó sẽ hỏi bạn cách thức gửi báo cáo. Hãy chọn “mail” và nhập địa chỉ email của bạn.
Loại trừ các gói phần mềm nhạy cảm (Blacklist)
Đây là tính năng “cứu cánh” cho các hệ thống có yêu cầu đặc biệt về phiên bản phần mềm.
Kịch bản 1: Bạn đang chạy một ứng dụng web cũ chỉ tương thích với PHP 7.4. Bạn không muốn nó tự động nâng cấp lên PHP 8.x.
Kịch bản 2: Kernel phiên bản hiện tại đang hoạt động hoàn hảo với driver card mạng của bạn. Bạn muốn tự mình kiểm tra kỹ lưỡng trước khi nâng cấp kernel. (Sau khi loại trừ, bạn có thể tìm hiểu cách cập nhật nhân Linux Ubuntu lên phiên bản mới nhất một cách chủ động khi đã sẵn sàng).
Để thực hiện, hãy tìm đến khối Unattended-Upgrade::Package-Blacklist
và thêm vào các gói bạn muốn “đóng băng”:
Unattended-Upgrade::Package-Blacklist {
// Kịch bản 1: Đóng băng tất cả các gói liên quan đến PHP
"php7.4";
"php7.4-fpm";
"php7.4-cli";
"php7.4-common";
// Hoặc dùng ký tự đại diện để chặn tất cả các gói php
// "php.*";
// Kịch bản 2: Chặn cập nhật Kernel
// "linux-generic";
// "linux-image-generic";
// "linux-headers-generic";
};
Tính năng này cho bạn quyền kiểm soát tuyệt đối, đảm bảo sự tự động hóa không phá vỡ tính ổn định của ứng dụng.
Cấu hình tự động khởi động lại (Automatic Reboot)
Một số cập nhật quan trọng, đặc biệt là cập nhật Kernel, yêu cầu phải khởi động lại hệ thống để có hiệu lực.
Lưu ý quan trọng: Để tính năng này hoạt động, hệ thống của bạn cần cài đặt gói update-notifier-common. Trên các bản cài đặt server tối giản, gói này có thể bị thiếu. Hãy chạy lệnh sau để đảm bảo nó đã được cài đặt:
sudo apt install update-notifier-common
Sau khi đảm bảo có gói phụ thuộc, hãy tìm và sửa dòng sau để cho phép tự động khởi động lại:
Unattended-Upgrade::Automatic-Reboot "true";
Tuy nhiên, việc khởi động lại đột ngột có thể làm gián đoạn dịch vụ. Rất may, bạn có thể kiểm soát thời gian nó diễn ra:
// Chỉ khởi động lại trong khoảng từ 2 giờ đến 3 giờ sáng
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Đây là một thiết lập cực kỳ quan trọng cho các máy chủ production, giúp việc bảo trì diễn ra vào thời điểm ít người dùng nhất.
Tự động dọn dẹp hệ thống
Sau khi cập nhật, hệ thống thường để lại các gói phụ thuộc (dependencies) không còn được sử dụng. Lâu ngày chúng sẽ chiếm dụng dung lượng đĩa.
Hãy bật tính năng tự động dọn dẹp:
// Tương đương với lệnh `apt autoremove`
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Tự động xóa các kernel cũ không còn dùng
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Đây là những thiết lập giúp VPS của bạn luôn “sạch sẽ” và gọn gàng.
Tùy chỉnh lịch trình cập nhật (Systemd Timers)
Trên các phiên bản Ubuntu hiện đại, các tác vụ cập nhật định kỳ được lên lịch bởi systemd timers
. Điều này có nghĩa là bạn có thể tùy chỉnh chính xác thời gian hệ thống kiểm tra và cài đặt cập nhật.
Đầu tiên, bạn có thể xem danh sách các timers liên quan đến apt
đang hoạt động:
systemctl list-timers | grep apt
Bạn sẽ thấy apt-daily.timer
(cho việc download) và apt-daily-upgrade.timer
(cho việc cài đặt). Mặc định, chúng thường chạy vào các thời điểm ngẫu nhiên trong ngày.
Để thay đổi lịch trình, ví dụ như bắt buộc việc nâng cấp phải chạy vào 3 giờ sáng mỗi ngày, hãy dùng lệnh sau:
sudo systemctl edit apt-daily-upgrade.timer
Một file trống sẽ hiện ra. Hãy dán nội dung sau vào, lưu và đóng file:
[Timer]
OnCalendar=
OnCalendar=03:00
RandomizedDelaySec=0
Lệnh OnCalendar=
đầu tiên dùng để xóa lịch mặc định, lệnh thứ hai đặt lịch mới, và RandomizedDelaySec=0
để đảm bảo nó chạy đúng giờ. Sau khi lưu và đóng file, hãy khởi động lại timer để áp dụng lịch trình mới ngay lập tức:
sudo systemctl restart apt-daily-upgrade.timer
Kiểm tra và gỡ rối
Sau khi cấu hình, hãy đảm bảo mọi thứ chạy đúng như kế hoạch.
Kiểm tra giá trị cấu hình cuối cùng
Ngoài việc đọc trực tiếp các file cấu hình, có một cách chính xác hơn để kiểm tra giá trị cuối cùng của một thiết lập (sau khi đã bị ghi đè bởi các file khác) là dùng lệnh apt-config dump
. Ví dụ, để kiểm tra xem tính năng tự động cập nhật có đang bật không:
apt-config dump APT::Periodic::Unattended-Upgrade
Nếu kết quả trả về là "1"
, có nghĩa là tính năng đang được kích hoạt. Nếu là "0"
, nó đang bị tắt.
Chạy thử không cài đặt (Dry Run)
Lệnh này sẽ mô phỏng toàn bộ quá trình và cho bạn biết nó sẽ làm gì, giúp phát hiện lỗi cấu hình sớm.
sudo unattended-upgrade --dry-run --debug

Màn hình Terminal hiển thị kết quả chi tiết khi unattended-upgrades đang hoạt động, liệt kê các gói phần mềm chuẩn bị được cập nhật.
Xem nhật ký hoạt động (Logs)
Đây là nơi ghi lại tất cả các hành động, thành công hay thất bại. Hãy kiểm tra file này nếu bạn nghi ngờ có vấn đề.
tail -f /var/log/unattended-upgrades/unattended-upgrades.log
Câu hỏi thường gặp (FAQ)
1. unattended-upgrades
có cập nhật phần mềm từ PPA không?
Không. Mặc định nó sẽ không đụng đến các kho phần mềm của bên thứ ba (PPA). Bạn cần phải thêm thủ công PPA vào Allowed-Origins
, nhưng việc này tiềm ẩn rủi ro mất ổn định và không được khuyến khích.
2. Làm thế nào để tạm thời tắt tính năng này?
Bạn có thể vô hiệu hóa bộ đếm thời gian của systemd: sudo systemctl stop apt-daily-upgrade.timer
và sudo systemctl disable apt-daily-upgrade.timer
.
3. Nếu một bản cập nhật bị lỗi và làm hỏng hệ thống thì sao?
Đây là rủi ro có thật, mặc dù rất hiếm khi xảy ra với các bản cập nhật từ nguồn -security
. Đây là lý do tại sao việc chỉ bật nguồn -security
là lựa chọn an toàn nhất. Đồng thời, việc có một kế hoạch sao lưu (backup) VPS định kỳ là điều bắt buộc.
Kết luận
Bảo mật là một quá trình, không phải là một sản phẩm. Bằng cách dành thời gian để thiết lập và tinh chỉnh unattended-upgrades
, bạn không chỉ đang cài đặt một phần mềm. Bạn đang xây dựng một quy trình bảo mật thông minh, tự động và đáng tin cậy.
Nó giải phóng bạn khỏi công việc cập nhật thủ công nhàm chán và bảo vệ VPS của bạn 24/7 trước những mối đe dọa luôn rình rập. Giờ đây, bạn có thể tập trung vào việc phát triển dự án của mình với một sự an tâm thực sự, biết rằng nền tảng của bạn luôn được gia cố một cách vững chắc.
Tài liệu tham khảo
- Tài liệu chính thức từ Ubuntu: https://help.ubuntu.com/community/AutomaticSecurityUpdates
- Debian Wiki về UnattendedUpgrades: https://wiki.debian.org/UnattendedUpgrades