Automatska ažuriranja Linuxa: konfiguracija unattended-upgrades i dnf-automatic za ažuriranje Linux poslužitelja
Razina: Stručnjak
Procijenjeno vrijeme: ~30 minuta
Cilj: Konfigurirati skalabilna automatska ažuriranja Linuxa bez prekida rada pomoću alata unattended-upgrades i dnf-automatic prema načelima Infrastructure as Code.
Uvod
Ručno instaliranje zakrpa na poslužiteljima kritično je usko grlo u upravljanju svakim produkcijskim okruženjem: bez automatizacije bilo bi vrlo teško pouzdano održavati sigurnima i ažurnima stotine čvorova. Ranjiva aplikacija može biti kompromitirana u nekoliko minuta, a većina exploita cilja na dobro poznate, nezakrpane ranjivosti. Moramo pravodobno primjenjivati sigurnosna ažuriranja (kritične zakrpe objavljene radi otklanjanja poznatih ranjivosti u softveru) kako bismo izbjegli sigurnosne incidente. U ovom ćemo vodiču konfigurirati automatska ažuriranja Linuxa na Linux poslužitelju pomoću alata unattended-upgrades i dnf-automatic. Ovaj pristup standardizira ažuriranja Linux poslužitelja.
Što su unattended-upgrades i dnf-automatic?
unattended-upgrades je uslužni program za Debian/Ubuntu koji automatizira instalaciju sigurnosnih i drugih ažuriranja paketa.
dnf-automatic je komponenta koja omogućuje automatizirana ažuriranja za sustave RHEL/CentOS/Fedora.
Ovi alati omogućuju neometano izvođenje automatskih ažuriranja (postupka dohvaćanja i instaliranja ažuriranja bez ljudske intervencije) u pozadini. Obično se pokreću svakodnevno putem systemd timera (systemd jedinice koja upravlja raspoređivanjem zadataka i zamjenjuje tradicionalne cron zadatke).
Preduvjeti
Prije početka provjerite jesu li ispunjeni sljedeći uvjeti:
- Operacijski sustav: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 ili RHEL/AlmaLinux 9/10
- Pristup: sudo ili root pristup poslužitelju
- Mrežni zahtjevi: odlazni HTTPS pristup repozitorijima paketa (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
- Potrebno znanje: stručno razumijevanje administracije sustava, systemda i osnova upravljanja zakrpama (postupka distribucije i primjene ažuriranja softvera) te upravljanja zakrpama u Linuxu.
Korak 1: Konfiguracija automatskih ažuriranja Linuxa pomoću unattended-upgrades
Za sustave koji koriste APT (Advanced Package Tool) (temeljni sustav za upravljanje paketima u distribucijama temeljenima na Debianu) koristimo unattended-upgrades. Ovaj se alat besprijekorno uklapa u vašu strategiju upravljanja zakrpama u Linuxu.
1.1 Instalacija paketa
Najprije provjerite i instalirajte potreban paket iz repozitorija paketa (centraliziranog spremišta iz kojeg se dohvaćaju i instaliraju softverski paketi).
Pokrenite sljedeću naredbu:
sudo apt update && sudo apt install unattended-upgrades -y
Trebali biste vidjeti ispis koji potvrđuje instalaciju. Time je sustav spreman za automatska APT ažuriranja.
1.2 Konfiguracija dopuštenih izvora
Glavna konfiguracijska datoteka nalazi se na putanji /etc/apt/apt.conf.d/50unattended-upgrades. Izmijenit ćemo konfiguraciju tako da se instaliraju samo sigurnosna ažuriranja. To smanjuje rizik od promjena koje narušavaju kompatibilnost tijekom automatskih ažuriranja paketa.
Prije izmjena preporučljivo je napraviti sigurnosnu kopiju izvorne konfiguracijske datoteke:
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
Otvorite konfiguracijsku datoteku:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
U potpunosti zamijenite sadržaj bloka Allowed-Origins, a navedene nazive dodajte u blok Package-Blacklist:
Za Ubuntu:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };
Za Debian:
Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };
Zatim konfigurirajte crnu listu paketa i ponašanje pri ponovnom pokretanju:
Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";
Package-Blacklist koristi regularne izraze. Unos poput "nginx" podudara se i s paketima nginx-common, nginx-extras itd. Da biste ciljali samo točno određeni paket, koristite regex sidra poput "^nginx$".
Time se automatska APT ažuriranja ograničavaju samo na sigurnosne zakrpe, a kritični paketi isključuju se iz automatskog ažuriranja, čime se smanjuje rizik od prekida usluga uz zadržavanje automatizacije sigurnosnih zakrpa.
Ažuriranja jezgre, libc-a i drugih niskorazinskih paketa i dalje mogu zahtijevati ponovno pokretanje. U produkcijskim okruženjima ostavite automatska ponovna pokretanja isključenima, osim ako se prozori za održavanje ne provode putem orkestracije.
1.3 Omogućavanje automatskih ažuriranja
Izradite datoteku auto-upgrades kako biste aktivirali systemd timer za APT.
Otvorite datoteku:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Zalijepite sljedeći sadržaj:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";
Ova konfiguracija nalaže sustavu da:
Update-Package-Lists "1"- svakodnevno ažurira popise paketa.Unattended-Upgrade "1"- automatski izvršava automatska APT ažuriranja.AutocleanInterval "7"- čisti predmemoriju paketa svakih 7 dana.
Korak 2: Konfiguracija dnf-automatic za ažuriranja Linux poslužitelja
Za sustave koji koriste DNF (Dandified YUM) (upravitelj paketima nove generacije za distribucije temeljene na RHEL-u) dnf-automatic pruža pouzdanu automatizaciju DNF ažuriranja.
2.1 Instalacija paketa
Instalirajte alat za automatizaciju iz repozitorija paketa.
Pokrenite sljedeću naredbu:
sudo dnf install dnf-automatic -y
Trebali biste vidjeti ispis koji potvrđuje uspješnu instalaciju paketa za automatizaciju DNF ažuriranja.
2.2 Konfiguracija pravila ažuriranja
Glavna konfiguracijska datoteka nalazi se na putanji /etc/dnf/automatic.conf. Konfigurirajte alat tako da preuzima i primjenjuje samo sigurnosna ažuriranja.
Prije izmjena napravite sigurnosnu kopiju konfiguracijske datoteke i provjerite jesu li za vašu distribuciju dostupne sigurnosne obavijesti (security advisories):
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security
Otvorite konfiguracijsku datoteku:
sudo nano /etc/dnf/automatic.conf
Prilagodite sljedeće parametre:
[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio
Ova konfiguracija nalaže sustavu da:
upgrade_type = security- cilja isključivo sigurnosne zakrpe.random_sleep = 3600- nasumično odgodi izvršavanje do 1 sat, čime se opterećenje raspoređuje u velikim Infrastructure as Code implementacijama te se sprječavaju skokovi opterećenja repozitorija i istodobni kaskadni kvarovi.download_updatesiapply_updates- automatski preuzimaju i instaliraju sigurnosna ažuriranja.
upgrade_type = security ovisi o sigurnosnim metapodacima repozitorija. Ako sigurnosne obavijesti nedostaju (što je tipično za svježu instalaciju AlmaLinuxa 10), dnf-automatic s ovom postavkom možda neće primijeniti ništa. Prije nego što se u produkciji oslonite na ažuriranja samo sa sigurnosnim zakrpama, provjerite podržava li to repozitorij. Alternativno, za produkcijske sustave razmotrite upgrade_type = security-severity:Critical ili default-security.
2.3 Omogućavanje systemd timera
Aktivirajte timer kako biste rasporedili automatizaciju DNF ažuriranja.
Pokrenite sljedeću naredbu:
sudo systemctl enable --now dnf-automatic.timer
Trebali biste vidjeti ispis koji pokazuje da je timer omogućen i pokrenut. Time se u sustavu aktiviraju zakazana automatska ažuriranja paketa.
Korak 3: Provjera konfiguracije
Nakon zapisivanja konfiguracije potrebno ju je provjeriti.
3.1 Provjera na Debianu/Ubuntuu
Izvedite probno pokretanje (dry run) kako biste potvrdili ispravnost konfiguracije. Zastavica -d (ili --dry-run) pokreće unattended-upgrades u načinu za otklanjanje pogrešaka - ništa se zapravo ne mijenja:
sudo unattended-upgrades --dry-run --debug
Zastavica --dry-run ispisuje dijagnostičke informacije, ali ne mijenja nijednu datoteku. Provjerite da u redu čekanja nema paketa s crne liste.
U produkciji su zapisnici (logovi) važniji od probnih pokretanja. Provjerite jesu li timer i servis aktivni:
systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager
Zatim pregledajte nedavni ispis zapisnika kako biste potvrdili aktivnost ažuriranja. Na svježe konfiguriranom sustavu zapisnik može biti prazan. Za trenutačnu provjeru pokrenite: sudo unattended-upgrade -v.
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
3.2 Provjera timera na RHEL-u/AlmaLinuxu
Provjerite status timera:
systemctl list-timers | grep dnf-automatic
Očekivani ispis:
Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service
Ako je timer naveden, ažuriranja su ispravno zakazana.
3.3 Provjera je li potrebno ponovno pokretanje
Ažuriranja jezgre i libc-a uključena su u sigurnosni red čekanja (na primjer, na Debianu je linux-image-amd64 dio sigurnosnih ažuriranja). Budući da je postavljeno Automatic-Reboot=false, morate sami provjeriti je li potrebno ručno ponovno pokretanje.
Za Debian/Ubuntu:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Za AlmaLinux/RHEL:
sudo dnf needs-restarting -r
3.4 Prisilno pokretanje radi provjere
Rezultat možda nećete vidjeti dok se timer ne aktivira. Za ručno pokretanje postupka ažuriranja radi provjere:
Za Debian/Ubuntu:
sudo unattended-upgrade -v
Za AlmaLinux/RHEL:
sudo dnf-automatic
Korak 4: Napredna konfiguracija (stručna razina)
Kako biste ispunili zahtjeve stručne razine, postavu možete proširiti obavijestima i finijim raspoređivanjem.
4.1 Obavijesti e-poštom
Za primanje izvješća o ažuriranjima:
Za Debian/Ubuntu:
U datoteci /etc/apt/apt.conf.d/50unattended-upgrades uklonite komentar i prilagodite:
Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";
Za AlmaLinux/RHEL:
U datoteci /etc/dnf/automatic.conf konfigurirajte odjeljak [email] i promijenite emitter:
[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost
4.2 Napredni dnf-automatic timeri
dnf-automatic nudi više timera koji omogućuju razdvajanje faza preuzimanja i instalacije, što pruža veću kontrolu u produkciji:
- dnf-automatic.timer: zadani timer (preuzima te, ako je konfigurirano, instalira).
- dnf-automatic-notifyonly.timer: samo provjerava ažuriranja i šalje obavijest.
- dnf-automatic-download.timer: preuzima ažuriranja, ali ih ne instalira.
- dnf-automatic-install.timer: preuzima i automatski instalira ažuriranja (nadjačava postavku
apply_updatesu konfiguraciji).
Koristite timer koji odgovara pravilima održavanja vašeg klastera.
Povratak promjena (rollback)
Da biste poništili sve učinjeno, jednostavno uklonite alate i konfiguracije.
Debian/Ubuntu:
sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades
RHEL/AlmaLinux:
sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y
Uklanjanje ovih alata onemogućit će automatska ažuriranja za cijeli sustav, a poslužitelji će ostati ranjivi osim ako se ne zakrpaju ručno.
Zaključak
To je sve. Jedan ispravno konfiguriran sustav s alatom unattended-upgrades ili dnf-automatic, provjeren probnim pokretanjem - i posao je gotov. Zahvaljujući ovoj automatizaciji sigurnosnih zakrpa automatska ažuriranja Linuxa primjenjuju se neometano, opterećenje održavanja ostaje malo, a ažuriranja Linux poslužitelja postaju predvidljiva umjesto reaktivna. U većim okruženjima ovu postavu kombinirajte s Infrastructure as Code i postupnim uvođenjem kako ne biste ažurirali sve čvorove istodobno.
Verzija dokumenta: 1.0
Zadnje ažuriranje: svibanj 2026
Vlasnik: Tim za tehničku dokumentaciju