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";
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.
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_updatesinapply_updates- samodejno prenese in namesti varnostne posodobitve.
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
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_updatesv 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
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