Модул 4 · 4.2
Автоматични актуализации
Модул 4: Софтуер и актуализации · Време за четене: 10 минути
Цел на урока: След този урок ще можете да включвате и проверявате автоматичните актуализации за сигурност, ще знаете какво се случва автоматично и какво не, и ще знаете кога е нужно рестартиране.
Основни понятия: unattended-upgrades, 20auto-upgrades, 50unattended-upgrades, Origins-Pattern и Allowed-Origins, apt-daily таймери, needrestart, /var/run/reboot-required, Automatic-Reboot, актуализация на ядрото, dnf-automatic
Защо автоматично?
Уязвимостите в сигурността се откриват, поправят и след това активно се използват от нападатели, често в рамките на дни. Сървър, който актуализирате веднъж месечно, средно седмици наред остава отворен за известни уязвимости. Нидерландският NCSC включва навременното инсталиране на актуализации в основните принципи на дигиталната устойчивост: "Навременното актуализиране и поправяне на софтуера помага уязвимостите да бъдат отстранявани бързо."
И все пак "всичко автоматично" също не е добре. Нова версия на дадена програма може да се държи различно от старата, а сървър, който сам се рестартира посред деня, може да засегне Вашите посетители. Обичайният среден път в Debian и Ubuntu е:
- актуализациите за сигурност автоматично, всеки ден;
- останалите актуализации и надгражданията на версията ръчно, в момент, който Вие изберете, с предварителен snapshot;
- рестартирането планирано, в спокоен момент, и под контрол.
Програмата, която урежда това, се казва unattended-upgrades.
Включване на unattended-upgrades
В Ubuntu Server unattended-upgrades е инсталиран по подразбиране и автоматичните актуализации за сигурност са включени веднага след инсталацията. В Debian той също присъства в много инсталации и images, но не винаги. Проверете и го включете:
anna@web1:~$ sudo apt install unattended-upgrades
anna@web1:~$ sudo dpkg-reconfigure -plow unattended-upgradesВтората команда пита "Automatically download and install stable updates?". Изберете Yes. Това записва файла /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";1 означава: всеки ден. С 0 го изключвате. Самата работа се стартира от два systemd таймера (урок 6.3), които преглеждате така:
anna@web1:~$ systemctl list-timers 'apt*'
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2026-11-10 06:24:11 CET 9h left Mon 2026-11-09 06:41:03 CET 14h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Tue 2026-11-10 08:02:47 CET 11h left Mon 2026-11-09 19:12:30 CET 1h ago apt-daily.timer apt-daily.serviceapt-daily изтегля списъците (като apt update), а apt-daily-upgrade инсталира актуализациите. Часовете имат случайно разпределение, за да не натоварват всички сървъри по света хранилищата на пакетите едновременно.
Какво се инсталира автоматично?
Това е описано в /etc/apt/apt.conf.d/50unattended-upgrades. В Debian блокът се казва Unattended-Upgrade::Origins-Pattern, в Ubuntu Unattended-Upgrade::Allowed-Origins. По подразбиране там са включени хранилището за сигурност и основното хранилище на Вашата версия, а хранилището -updates е изключено. В Ubuntu изглежда така:
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";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};Редовете, пред които стои //, са изключени. За първи сървър оставете това така. Не редактирайте файла директно, защото следваща версия на пакета може да поиска да го замени. Debian препоръчва собствените промени да се поставят в отделен файл, например /etc/apt/apt.conf.d/52unattended-upgrades-local; по-късните файлове имат предимство пред по-ранните.
Пакетите от допълнителни хранилища (Docker, Caddy, PostgreSQL от производителя) по подразбиране не се актуализират автоматично. Това е съзнателен избор: тях следите сами (урок 9.4) или добавяте хранилището ръчно към списъка, ако имате доверие на производителя и познавате последствията.
Няколко настройки, които често ще искате:
// /etc/apt/apt.conf.d/52unattended-upgrades-local
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailReport "only-on-error";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Automatic-Reboot "false";Mail работи само ако сървърът може да изпраща поща (малък relay, урок 8.3). Ако не може, пропуснете това и използвайте наблюдението от урок 8.3.
Проверка дали работи
Автоматизация, която спира безшумно, е по-опасна от липсата на автоматизация, защото мислите, че сте защитени. Затова проверете три неща.
1. Пробно изпълнение. То показва какво би се случило, без да променя нищо:
anna@web1:~$ sudo unattended-upgrade --dry-run --debug
...
Allowed origins are: origin=Debian,codename=trixie,label=Debian, origin=Debian,codename=trixie-security,label=Debian-Security, ...
Packages that will be upgraded: libssl3t64 openssh-server2. Логът. Всяко изпълнение пише в /var/log/unattended-upgrades/unattended-upgrades.log:
anna@web1:~$ sudo tail -n 5 /var/log/unattended-upgrades/unattended-upgrades.log
2026-11-09 06:41:15,201 INFO Packages that will be upgraded: openssh-server
2026-11-09 06:41:15,202 INFO Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
2026-11-09 06:41:29,874 INFO All upgrades installed3. Какво още чака. apt list --upgradable (урок 4.1) след една нощ не би трябвало да показва повече пакети от -security. Ако те стоят там дни наред, нещо засича: пълен диск, заключване от ръчно стартиран apt, който е блокирал, или пакет, който задава въпрос.
Рестартиране: услуги и ядро
Актуализирана програма на диска все още не е същото като актуализирана програма в паметта. Ако OpenSSH работи от три седмици, продължава да работи старият код, докато услугата не се стартира отново.
- Услуги: програмата needrestart проверява след актуализация кои услуги все още използват стари библиотеки. В Ubuntu 24.04 и по-новите версии unattended-upgrades по подразбиране рестартира тези услуги автоматично чрез needrestart. В Debian needrestart е отделен пакет (
apt install needrestart), който Ви пита интерактивно кои услуги да бъдат стартирани отново. - Ядрото: ново ядро започва да работи едва след рестартиране на целия сървър. Тогава Debian и Ubuntu създават файла
/var/run/reboot-required:
anna@web1:~$ cat /var/run/reboot-required
*** System restart required ***
anna@web1:~$ cat /var/run/reboot-required.pkgs
linux-image-6.12.57+deb13-amd64Имате два варианта. Или рестартирате сами, например всяка седмица в определен момент, след като сте проверили дали файлът съществува. Или оставяте unattended-upgrades да го направи:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";Стойността по подразбиране е false. Включете го само ако сте сигурни, че след рестартиране всичко се стартира отново само: услуги с enable (урок 6.1), контейнери с политика restart: (урок 9.3) и наблюдение, което Ви предупреждава, ако това не стане (урок 8.3). Първо го изпробвайте веднъж ръчно: sudo reboot, и проверете дали всичко се връща.
Чрез Ubuntu Pro Ubuntu предлага и Livepatch, който прилага някои поправки на ядрото без рестартиране. Това е допълнение, а не заместител: и с Livepatch от време на време рестартирате.
Какво не правите автоматично
- Надграждания на версията (от Debian 12 към 13, от Ubuntu 24.04 към 26.04): винаги ръчно и с план (урок 4.3).
- Големи версии на Вашите собствени приложения (нова основна версия на база данни, на CMS): винаги ръчно, след резервно копие и след като сте прочели release notes.
- Контейнери: тях unattended-upgrades не актуализира. Image от 2024 остава image от 2024, докато не изпълните
docker compose pull(урок 9.4).
В AlmaLinux и Rocky Linux
Там инструментът се казва dnf-automatic. Инсталирайте го с dnf install dnf-automatic. В /etc/dnf/automatic.conf задавате upgrade_type = security и apply_updates = yes, а таймера включвате с systemctl enable --now dnf-automatic.timer. В RHEL-подобните системи рестартирането заради ядрото е също толкова необходимо, колкото в Debian; dnf needs-restarting -r показва дали е нужно.
На практика
При WebOké един VPS работи по същия начин, както навсякъде другаде: това, което се актуализира вътре в сървъра, управлявате Вие. Доставчикът актуализира хардуера и платформата за виртуализация, но не и Вашата операционна система. Преди голяма ръчна актуализация направете snapshot в панела на Вашия доставчик; за ежедневните автоматични актуализации за сигурност това не е необходимо.
Обобщение
- Включете автоматичните актуализации за сигурност с unattended-upgrades (Ubuntu: включени по подразбиране; Debian: проверете с
dpkg-reconfigure -plow unattended-upgrades). - По подразбиране автоматично се актуализират само хранилището за сигурност и основното хранилище на версията; допълнителните хранилища не.
- Проверявайте с пробно изпълнение, лога в
/var/log/unattended-upgrades/иapt list --upgradable. - След актуализация услугите трябва да се стартират отново (needrestart), а ядрото изисква рестартиране (
/var/run/reboot-required). - Надгражданията на версията, големите версии на приложенията и контейнерите актуализирате ръчно.
Тест (quiz)
Задача
Задача O4.2: Включване и проверка на автоматичните обновявания. Включете unattended-upgrades на собствения си сървър (или проверете дали е включен), направете пробно изпълнение и прегледайте лога и таймерите. Попълнете контролния списък и отговорете: кои хранилища се актуализират автоматично при Вас, кога е било последното изпълнение, чака ли в момента рестартиране и как ще рестартирате Вие (сами в определен момент или автоматично, и защо)?
Задача O4.2: Включване и проверка на автоматичните обновявания
Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.
Автоматично: източникът на изданието и източникът за сигурност. Ако съществува reboot-required, чака обновяване на ядрото или на библиотека. Автоматичното рестартиране е възможно, ако след това всичко се възстановява само и наблюдението Ви сигнализира, когато това не стане. Допълнителни източници (Docker, Caddy), контейнери и приложения като WordPress обновявате сами.
Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.
Още за четене
- Защита на Вашия VPS: първите пет минути
- Debian Wiki, автоматични актуализации (UnattendedUpgrades): https://wiki.debian.org/PeriodicUpdates
- Нидерландският NCSC (нидерландски източник), основен принцип 3: Защитете системите, приложенията и устройствата: https://www.ncsc.nl/basisprincipes/basisprincipe-3-bescherm-systemen-applicaties-en-apparaten
- Документация на Ubuntu Server, Automatic updates: https://ubuntu.com/server/docs/how-to/software/automatic-updates/
- VPS: от първото влизане до сигурен сървър 3.3: Актуализации и автоматични актуализации
