Samodejne posodobitve Linuxa: unattended-upgrades in dnf-automatic | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Samodejne posodobitve Linuxa: nastavitev unattended-upgrades in dnf-automatic za posodobitve strežnikov Linux

Raven: Strokovnjak
Ocenjeni čas: ~30 minut
Cilj: Nastaviti razširljive samodejne posodobitve Linuxa brez izpadov z orodjema unattended-upgrades in dnf-automatic po načelih Infrastructure as Code.

Uvod

Ročno nameščanje popravkov na strežnikih je kritično ozko grlo pri upravljanju vsakega produkcijskega okolja: brez avtomatizacije bi bilo zanesljivo vzdrževanje varnosti in posodobljenosti na stotine vozlišč zelo težko. Ranljivo aplikacijo je mogoče ogroziti v nekaj minutah, večina izkoriščanj pa cilja na dobro znane, nepopravljene ranljivosti. Pravočasno moramo nameščati varnostne posodobitve (kritične popravke, izdane za odpravo znanih ranljivosti v programski opremi), da preprečimo varnostne incidente. V tem priročniku bomo nastavili samodejne posodobitve Linuxa na strežniku Linux z orodjema unattended-upgrades in dnf-automatic. Ta pristop poenoti posodobitve strežnikov Linux.

Kaj sta unattended-upgrades in dnf-automatic?

unattended-upgrades je pripomoček za Debian/Ubuntu, ki avtomatizira nameščanje varnostnih in drugih posodobitev paketov.

dnf-automatic je komponenta, ki zagotavlja samodejne posodobitve za sisteme RHEL/CentOS/Fedora.

Ta orodja omogočajo nemoteno izvajanje samodejnih posodobitev (postopka pridobivanja in nameščanja posodobitev brez človeškega posredovanja) v ozadju. Običajno se izvajajo dnevno prek časovnika systemd (enote systemd, ki upravlja razporejanje opravil in nadomešča klasična opravila cron).

Predpogoji

Pred začetkom se prepričajte, da so izpolnjeni naslednji pogoji:

  • Operacijski sistem: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 ali RHEL/AlmaLinux 9/10
  • Dostop: dostop sudo ali root do strežnika
  • Omrežne zahteve: odhodni dostop HTTPS do skladišč paketov (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
  • Zahtevano znanje: strokovno razumevanje sistemske administracije, systemd in osnov upravljanja popravkov (postopka distribucije in nameščanja posodobitev programske opreme) ter upravljanja popravkov v Linuxu.

Korak 1: Nastavitev samodejnih posodobitev Linuxa z unattended-upgrades

Za sisteme, ki uporabljajo APT (Advanced Package Tool) (osrednji sistem za upravljanje paketov v distribucijah na osnovi Debiana), uporabljamo unattended-upgrades. Orodje se brezhibno vključi v vašo strategijo upravljanja popravkov v Linuxu.

1.1 Namestitev paketa

Najprej preverite in namestite zahtevani paket iz skladišča paketov (osrednje lokacije za shranjevanje, iz katere se pridobivajo in nameščajo programski paketi).

Zaženite naslednji ukaz:

sudo apt update && sudo apt install unattended-upgrades -y

Videti bi morali izpis, ki potrjuje namestitev. S tem je sistem pripravljen na samodejne posodobitve APT.

1.2 Nastavitev dovoljenih izvorov

Glavna konfiguracijska datoteka je /etc/apt/apt.conf.d/50unattended-upgrades. Konfiguracijo bomo spremenili tako, da se namestijo samo varnostne posodobitve. To zmanjša tveganje za spremembe, ki lomijo združljivost, med samodejnimi posodobitvami paketov.

Pred spremembami je priporočljivo ustvariti varnostno kopijo izvirne konfiguracijske datoteke:

sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak

Odprite konfiguracijsko datoteko:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Vsebino bloka Allowed-Origins v celoti zamenjajte, navedena imena pa dodajte v 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"; };

Nato nastavite črni seznam paketov in obnašanje ob ponovnem zagonu:

Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";

Info

Package-Blacklist uporablja regularne izraze. Vnos, kot je "nginx", se ujema tudi z nginx-common, nginx-extras itd. Če želite ciljati samo točno določen paket, uporabite sidra regularnih izrazov, na primer "^nginx$".

S tem so samodejne posodobitve APT omejene na varnostne popravke, kritični paketi pa so izvzeti iz samodejnega posodabljanja, kar zmanjša tveganje za motnje v delovanju storitev, hkrati pa ohrani avtomatizacijo varnostnih popravkov.

Warning

Posodobitve jedra, libc in drugih nizkonivojskih paketov lahko še vedno zahtevajo ponovni zagon. V produkcijskih okoljih naj bodo samodejni ponovni zagoni izklopljeni, razen če vzdrževalna okna uveljavlja orkestracija.

1.3 Omogočanje samodejnih posodobitev

Ustvarite datoteko auto-upgrades, da aktivirate časovnik systemd za APT.

Odprite datoteko:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Vanjo prilepite naslednje:

APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";

Ta konfiguracija sistemu naroča, naj:

  • Update-Package-Lists "1" - dnevno posodobi sezname paketov.
  • Unattended-Upgrade "1" - samodejno izvaja samodejne posodobitve APT.
  • AutocleanInterval "7" - vsakih 7 dni počisti predpomnilnik paketov.

Korak 2: Nastavitev dnf-automatic za posodobitve strežnikov Linux

Za sisteme, ki uporabljajo DNF (Dandified YUM) (upravljalnik paketov nove generacije za distribucije na osnovi RHEL), dnf-automatic zagotavlja zanesljivo avtomatizacijo posodobitev DNF.

2.1 Namestitev paketa

Namestite orodje za avtomatizacijo iz skladišča paketov.

Zaženite naslednji ukaz:

sudo dnf install dnf-automatic -y

Videti bi morali izpis, ki potrjuje uspešno namestitev paketa za avtomatizacijo posodobitev DNF.

2.2 Nastavitev pravilnika posodobitev

Glavna konfiguracijska datoteka je /etc/dnf/automatic.conf. Orodje nastavite tako, da prenaša in uporablja samo varnostne posodobitve.

Pred spremembami naredite varnostno kopijo konfiguracijske datoteke in preverite, ali so za vašo distribucijo na voljo varnostna obvestila (security advisories):

sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security

Odprite konfiguracijsko datoteko:

sudo nano /etc/dnf/automatic.conf

Prilagodite naslednje parametre:

[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio

Ta konfiguracija sistemu naroča, naj:

  • upgrade_type = security - obravnava izključno varnostne popravke.
  • random_sleep = 3600 - izvajanje naključno zakasni do 1 uro, s čimer porazdeli obremenitev pri obsežnih uvedbah Infrastructure as Code in prepreči konice obremenitve skladišč ter hkratne kaskadne odpovedi.
  • download_updates in apply_updates - samodejno prenese in namesti varnostne posodobitve.

Info

upgrade_type = security je odvisen od varnostnih metapodatkov skladišča. Če varnostna obvestila manjkajo (kar je običajno pri sveži namestitvi AlmaLinux 10), dnf-automatic s to nastavitvijo morda ne bo uporabil ničesar. Preden se v produkciji zanesete na posodobitve samo z varnostnimi popravki, preverite podporo skladišča. Pri produkcijskih sistemih lahko alternativno razmislite o uporabi upgrade_type = security-severity:Critical ali default-security.

2.3 Omogočanje časovnika systemd

Aktivirajte časovnik za razporejanje avtomatizacije posodobitev DNF.

Zaženite naslednji ukaz:

sudo systemctl enable --now dnf-automatic.timer

Videti bi morali izpis, ki kaže, da je časovnik omogočen in zagnan. S tem se aktivirajo načrtovane samodejne posodobitve paketov v sistemu.

Korak 3: Preverjanje konfiguracije

Ko je konfiguracija zapisana, jo je treba preveriti.

3.1 Preverjanje v Debianu/Ubuntuju

Izvedite poskusni zagon (dry run), da potrdite veljavnost konfiguracije. Stikalo -d (ali --dry-run) zažene unattended-upgrades v načinu odpravljanja napak - dejansko se nič ne spremeni:

sudo unattended-upgrades --dry-run --debug

Info

Stikalo --dry-run izpiše diagnostične podatke, vendar ne spreminja nobenih datotek. Prepričajte se, da v čakalni vrsti ni paketov s črnega seznama.

V produkciji so dnevniki pomembnejši od poskusnih zagonov. Preverite, ali sta časovnik in storitev aktivna:

systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager

Nato preglejte nedavni izpis dnevnika in potrdite dejavnost posodabljanja. Na sveže nastavljenem sistemu je dnevnik lahko prazen. Za takojšnje preverjanje zaženite: sudo unattended-upgrade -v.

sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

3.2 Preverjanje časovnika v RHEL/AlmaLinux

Preverite stanje časovnika:

systemctl list-timers | grep dnf-automatic

Pričakovani izpis:

Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service

Če je časovnik na seznamu, so posodobitve pravilno načrtovane.

3.3 Preverjanje potrebe po ponovnem zagonu

Posodobitve jedra in libc so del varnostne vrste (na primer v Debianu je linux-image-amd64 del varnostnih posodobitev). Ker je nastavljeno Automatic-Reboot=false, morate sami preveriti, ali je potreben ročni ponovni zagon.

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 Prisilni zagon za preverjanje

Rezultata morda ne boste videli, dokler se ne sproži časovnik. Za ročni zagon postopka posodabljanja zaradi preverjanja:

Za Debian/Ubuntu:

sudo unattended-upgrade -v

Za AlmaLinux/RHEL:

sudo dnf-automatic

Korak 4: Napredna konfiguracija (strokovna raven)

Za izpolnitev zahtev strokovne ravni lahko nastavitev razširite z obvestili in natančnejšim razporejanjem.

4.1 Obvestila po e-pošti

Za prejemanje poročil o posodobitvah:

Za Debian/Ubuntu:

V /etc/apt/apt.conf.d/50unattended-upgrades odkomentirajte in prilagodite:

Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";

Za AlmaLinux/RHEL:

V /etc/dnf/automatic.conf nastavite razdelek [email] in spremenite oddajnik (emitter):

[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost

4.2 Napredni časovniki dnf-automatic

dnf-automatic ponuja več časovnikov, ki omogočajo ločitev faz prenosa in namestitve ter tako zagotavljajo večji nadzor v produkciji:

  • dnf-automatic.timer: privzeti časovnik (prenese in po želji namesti, če je tako nastavljeno).
  • dnf-automatic-notifyonly.timer: samo preveri posodobitve in pošlje obvestilo.
  • dnf-automatic-download.timer: prenese posodobitve, vendar jih ne namesti.
  • dnf-automatic-install.timer: prenese in samodejno namesti posodobitve (preglasi nastavitev apply_updates v konfiguraciji).

Uporabite časovnik, ki ustreza vzdrževalnemu pravilniku vašega clustra.

Povrnitev sprememb (rollback)

Za razveljavitev vsega storjenega preprosto odstranite orodja in 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

Warning

Z odstranitvijo teh orodij izklopite samodejne posodobitve za celoten sistem, strežniki pa ostanejo ranljivi, če jih ne popravljate ročno.

Zaključek

To je vse. En pravilno nastavljen sistem z orodjem unattended-upgrades ali dnf-automatic, preverjen s poskusnim zagonom - in končano. Z avtomatizacijo varnostnih popravkov se samodejne posodobitve Linuxa uporabljajo nemoteno, obremenitev vzdrževanja ostaja majhna, posodobitve strežnikov Linux pa postanejo predvidljive namesto reaktivnih. V večjih okoljih to nastavitev združite z Infrastructure as Code in postopnimi uvedbami, da ne posodobite vseh vozlišč hkrati.

Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA