4 modulis · 4.2
Automatiniai atnaujinimai
4 modulis: Programinė įranga ir atnaujinimai · Skaitymo laikas: 10 min.
Mokymosi tikslas: po šios pamokos galėsite įjungti ir patikrinti automatinius saugumo atnaujinimus, žinosite, kas vyksta automatiškai, o kas ne, ir suprasite, kada reikia paleisti serverį iš naujo.
Pagrindinės sąvokos: unattended-upgrades, 20auto-upgrades, 50unattended-upgrades, Origins-Pattern ir Allowed-Origins, apt-daily laikmačiai, needrestart, /var/run/reboot-required, Automatic-Reboot, branduolio atnaujinimas, dnf-automatic
Kodėl automatiškai?
Saugumo spragos aptinkamos, ištaisomos ir tada aktyviai išnaudojamos, dažnai vos per kelias dienas. Serveris, kurį atnaujinate kartą per mėnesį, vidutiniškai kelias savaites lieka pažeidžiamas dėl žinomų spragų. Nyderlandų NCSC laiku įdiegtus atnaujinimus priskiria prie skaitmeninio atsparumo pagrindinių principų: "Laiku atnaujinant ir taisant programinę įrangą, pažeidžiamumus galima greitai pašalinti."
Vis dėlto "viskas automatiškai" taip pat nėra gerai. Nauja programos versija gali veikti kitaip nei senoji, o serveris, kuris pats persikrauna dienos viduryje, gali paveikti Jūsų lankytojus. Įprastas vidurio kelias Debian ir Ubuntu sistemose yra toks:
- saugumo atnaujinimai automatiškai, kasdien;
- kiti atnaujinimai ir leidimo atnaujinimai rankiniu būdu, Jūsų pasirinktu metu, prieš tai padarius momentinę kopiją (snapshot);
- suplanuotas paleidimas iš naujo, ramiu metu ir kontroliuojamai.
Programa, kuri tuo pasirūpina, vadinasi unattended-upgrades.
Kaip įjungti unattended-upgrades
Ubuntu Server sistemoje unattended-upgrades įdiegta pagal numatytuosius nustatymus, o automatiniai saugumo atnaujinimai įjungti iškart po įdiegimo. Debian sistemoje ji taip pat yra daugelyje diegimų ir atvaizdų, bet ne visada. Patikrinkite ir įjunkite:
anna@web1:~$ sudo apt install unattended-upgrades
anna@web1:~$ sudo dpkg-reconfigure -plow unattended-upgradesAntroji komanda klausia "Automatically download and install stable updates?" (ar automatiškai atsisiųsti ir įdiegti stabilius atnaujinimus). Pasirinkite Yes. Tada įrašomas failas /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";1 reiškia: kasdien. Su 0 funkciją išjungiate. Patį darbą paleidžia du systemd laikmačiai (pamoka 6.3), kuriuos galite peržiūrėti taip:
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 atsisiunčia sąrašus (kaip apt update), apt-daily-upgrade įdiegia atnaujinimus. Laikas parenkamas su atsitiktiniu išsklaidymu, kad ne visi pasaulio serveriai vienu metu apkrautų paketų šaltinius.
Kas įdiegiama automatiškai?
Tai nurodyta faile /etc/apt/apt.conf.d/50unattended-upgrades. Debian sistemoje blokas vadinasi Unattended-Upgrade::Origins-Pattern, Ubuntu sistemoje Unattended-Upgrade::Allowed-Origins. Pagal numatytuosius nustatymus ten įjungtas saugumo šaltinis ir pastovus Jūsų leidimo šaltinis, o šaltinis -updates išjungtas. Ubuntu sistemoje tai atrodo taip:
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";
};Eilutės, prieš kurias yra //, išjungtos. Pirmajame serveryje palikite viską taip, kaip yra. Nekeiskite šio failo tiesiogiai, nes kita paketo versija gali norėti jį pakeisti. Debian rekomenduoja savo pakeitimus rašyti į atskirą failą, pavyzdžiui, /etc/apt/apt.conf.d/52unattended-upgrades-local; vėlesni failai turi pirmenybę prieš ankstesnius.
Paketai iš papildomų šaltinių (Docker, Caddy, gamintojo PostgreSQL) pagal numatytuosius nustatymus automatiškai neatnaujinami. Tai sąmoningas pasirinkimas: juos stebite patys (pamoka 9.4) arba rankiniu būdu įtraukiate šaltinį į sąrašą, jei pasitikite gamintoju ir žinote pasekmes.
Keli nustatymai, kurių dažnai prireikia:
// /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 veikia tik tada, kai serveris gali siųsti el. laiškus (per nedidelį relay, pamoka 8.3). Jei tai neįmanoma, praleiskite šį nustatymą ir naudokite stebėseną iš pamokos 8.3.
Kaip patikrinti, ar viskas veikia
Automatizavimas, kuris tyliai sustoja, yra pavojingesnis nei jokio automatizavimo, nes manote, kad esate saugūs. Todėl patikrinkite tris dalykus.
1. Bandomasis paleidimas. Jis parodo, kas įvyktų, nieko nepakeisdamas:
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. Žurnalas. Kiekvienas paleidimas rašo į /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. Kas dar neįdiegta. apt list --upgradable (pamoka 4.1) po nakties neturėtų rodyti paketų iš -security. Jei jie matomi kelias dienas iš eilės, kažkas stringa: pilnas diskas, užraktas dėl užstrigusio rankinio apt arba paketas, kuris užduoda klausimą.
Paleidimas iš naujo: paslaugos ir branduolys
Atnaujinta programa diske dar nėra tas pats, kas atnaujinta programa atmintyje. Jei OpenSSH veikia jau tris savaites, senasis kodas veiks tol, kol paslauga bus paleista iš naujo.
- Paslaugos: programa needrestart po atnaujinimo patikrina, kurios paslaugos dar naudoja senas bibliotekas. Ubuntu 24.04 ir vėlesnėse versijose unattended-upgrades per needrestart pagal numatytuosius nustatymus tas paslaugas paleidžia iš naujo pati. Debian sistemoje needrestart yra atskiras paketas (
apt install needrestart), kuris interaktyviai klausia, kurias paslaugas reikia paleisti iš naujo. - Branduolys: naujas branduolys pradeda veikti tik paleidus iš naujo visą serverį. Tada Debian ir Ubuntu sukuria failą
/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-amd64Turite du pasirinkimus. Galite serverį paleisti iš naujo patys, pavyzdžiui, kas savaitę nustatytu metu, prieš tai patikrinę, ar failas yra. Arba galite tai patikėti unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";Numatytoji reikšmė yra false. Įjunkite šį nustatymą tik tada, jei esate tikri, kad po paleidimo iš naujo viskas vėl pasileis savaime: paslaugos su enable (pamoka 6.1), konteineriai su restart: politika (pamoka 9.3) ir stebėsena, kuri Jus įspės, jei taip nenutiks (pamoka 8.3). Pirmiausia vieną kartą išbandykite rankiniu būdu: sudo reboot, ir patikrinkite, ar viskas grįžta.
Ubuntu per Ubuntu Pro taip pat siūlo Livepatch, kuris kai kuriuos branduolio pataisymus pritaiko be paleidimo iš naujo. Tai papildymas, o ne pakaitalas: net su Livepatch serverį retkarčiais reikia paleisti iš naujo.
Ko nedarote automatiškai
- Leidimo atnaujinimai (iš Debian 12 į 13, iš Ubuntu 24.04 į 26.04): visada rankiniu būdu, pagal planą (pamoka 4.3).
- Didelės Jūsų programų versijos (nauja pagrindinė duomenų bazės ar TVS versija): visada rankiniu būdu, padarius atsarginę kopiją ir perskaičius leidimo pastabas (release notes).
- Konteineriai: unattended-upgrades jų neatnaujina. 2024 m. atvaizdas lieka 2024 m. atvaizdu, kol neatliksite
docker compose pull(pamoka 9.4).
AlmaLinux ir Rocky Linux sistemose
Ten šis įrankis vadinasi dnf-automatic. Įdiegiama su dnf install dnf-automatic. Faile /etc/dnf/automatic.conf nustatote upgrade_type = security ir apply_updates = yes, o laikmatį įjungiate su systemctl enable --now dnf-automatic.timer. RHEL tipo sistemose branduolio atnaujinimui paleidimas iš naujo reikalingas taip pat, kaip ir Debian; dnf needs-restarting -r parodo, ar jo reikia.
Praktikoje
WebOké VPS veikia taip pat, kaip ir kitur: tai, kas atnaujinama serverio viduje, tvarkote patys. Paslaugų teikėjas atnaujina aparatinę įrangą ir virtualizacijos platformą, bet ne Jūsų operacinę sistemą. Prieš didelį rankinį atnaujinimą padarykite momentinę kopiją (snapshot) savo paslaugų teikėjo valdymo skydelyje; kasdieniams automatiniams saugumo atnaujinimams to nereikia.
Santrauka
- Įjunkite automatinius saugumo atnaujinimus su unattended-upgrades (Ubuntu: įjungta pagal numatytuosius nustatymus; Debian: patikrinkite su
dpkg-reconfigure -plow unattended-upgrades). - Pagal numatytuosius nustatymus automatiškai atnaujinamas tik saugumo šaltinis ir pastovus leidimo šaltinis; papildomi šaltiniai ne.
- Tikrinkite bandomuoju paleidimu, žurnalu faile
/var/log/unattended-upgrades/irapt list --upgradable. - Po atnaujinimo paslaugas reikia paleisti iš naujo (needrestart), o branduoliui reikia paleisti iš naujo serverį (
/var/run/reboot-required). - Leidimo atnaujinimus, dideles programų versijas ir konteinerius atnaujinate rankiniu būdu.
Testas (quiz)
Užduotis
Užduotis O4.2: Automatinių atnaujinimų įjungimas ir patikrinimas. Savo serveryje įjunkite unattended-upgrades (arba patikrinkite, ar ji įjungta), atlikite bandomąjį paleidimą ir peržiūrėkite žurnalą bei laikmačius. Užpildykite kontrolinį sąrašą ir atsakykite: kurie šaltiniai Jūsų serveryje atnaujinami automatiškai, kada buvo paskutinis paleidimas, ar šiuo metu laukia paleidimas iš naujo ir kaip paleisite serverį iš naujo (patys nustatytu metu ar automatiškai, ir kodėl)?
Užduotis O4.2: Automatinių atnaujinimų įjungimas ir patikrinimas
Šią užduotį atliekate patys; niekas jos netikrina. Pažymėkite, ką atlikote, ir pažymėkite užduotį kaip atliktą.
Automatiškai: leidimo šaltinis ir saugumo šaltinis. Jei yra reboot-required, laukia branduolio arba bibliotekos atnaujinimas. Automatinis paleidimas iš naujo tinka, jei po jo viskas savaime vėl veikia, o Jūsų stebėsena praneša, jei taip nėra. Papildomus šaltinius (Docker, Caddy), konteinerius ir programas, pvz., WordPress, atnaujinate patys.
Jūsų pažymėti varneliai ir pastabos lieka tik šioje naršyklėje; niekur jų nesiunčiame. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotį atlikote.
Skaitykite daugiau
- VPS apsauga: pirmosios penkios minutės
- Debian Wiki, automatiniai atnaujinimai (UnattendedUpgrades): https://wiki.debian.org/PeriodicUpdates
- Nyderlandų NCSC (šaltinis nyderlandų kalba), 3 pagrindinis principas: apsaugokite sistemas, programas ir įrenginius: https://www.ncsc.nl/basisprincipes/basisprincipe-3-bescherm-systemen-applicaties-en-apparaten
- Ubuntu Server dokumentacija, Automatic updates: https://ubuntu.com/server/docs/how-to/software/automatic-updates/
