Stručne: Pomocou unattended-upgrades pod Debian a Ubuntu a dnf-automatic v rodine RHEL nasadzujú servery Linux bezpečnostné aktualizácie samostatne. Aby aktualizácia aj zabrala, dotknuté služby ako PHP-FPM sa po nej musia reštartovať; overte to pomocou needrestart alebo časov spustenia procesov. Zdroje tretích strán ako sury.org sa musia výslovne uvoľniť, kontajnery a zmeny hlavnej verzie automatika nepokrýva.
Od záplaty k serveru: automatika šetrí čas
Keď php.net 21. októbra 2026 o 16:00 nemeckého času zverejnil záplaty proti PHP2Shell, začali pre administrátorov preteky. Podľa správ distribúcie dodali svoje backporty sčasti ešte v ten istý deň. Servery s automatickými bezpečnostnými aktualizáciami mohli nové balíky nainštalovať pri najbližšom plánovanom behu, bez toho, aby niekto musel zasiahnuť.
To je dobrá správa. Menej dobrá: nainštalované neznamená účinné. Služba PHP-FPM, ktorá beží týždne, pracuje ďalej so starým kódom v pamäti, kým sa nereštartuje. A balíky zo zdrojov tretích strán, kontajnery alebo hostingové panely s vlastnou správou PHP zostávajú automatikou často nedotknuté.
Tento príspevok ukazuje, ako nastaviť automatické bezpečnostné aktualizácie a doplniť ich tak, aby v krajnom prípade skutočne chránili.
unattended-upgrades pod Debian a Ubuntu
Pod Ubuntu je balík unattended-upgrades štandardne nainštalovaný a nasadzuje bezpečnostné aktualizácie. Pod Debianom ho podľa potreby doinštalujete. Riadi sa dvoma súbormi pod /etc/apt/apt.conf.d/.
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
Súbor 20auto-upgrades určuje, či a ako často sa aktualizujú zoznamy balíkov a nasadzujú aktualizácie. Hodnota je počet dní, "1" znamená denne:
// /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
V 50unattended-upgrades je uvedené, z ktorých zdrojov smú aktualizácie pochádzať, či sa potom reštartuje a kto dostane správu. Štandardne sú uvoľnené len oficiálne bezpečnostné zdroje distribúcie. Podľa dokumentácie Ubuntu nestačí zapojiť ďalší repozitár: musí byť navyše v tomto zozname, inak ho automatika ignoruje. Týka sa to napríklad repozitára tretej strany sury.org, ktorý podľa správ poskytoval zostavenia PHP pre všetky vetvy od 5.6 po 8.5. Súvislosti sú v príspevku Repozitár sury.org.
Či je všetko v poriadku, ukáže skúšobný beh, ktorý nič nemení:
sudo unattended-upgrade -v --dry-run
# Protokoly skutočných behov
ls -l /var/log/unattended-upgrades/
dnf-automatic na RHEL, AlmaLinux a Rocky Linux
V rodine RHEL preberá rovnakú úlohu dnf-automatic. Konfigurácia leží v /etc/dnf/automatic.conf. Podľa dokumentácie upgrade_type = security kontroluje len aktualizácie s bezpečnostným upozornením a apply_updates je štandardne vypnuté.
# /etc/dnf/automatic.conf (výňatok)
[commands]
upgrade_type = security
download_updates = yes
apply_updates = yes
reboot = never
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
systemctl list-timers 'dnf-automatic*'
Okrem dnf-automatic.timer, ktorý sleduje konfiguračný súbor, existujú časovače, ktoré len hlásia, len sťahujú alebo vždy inštalujú. Na začiatok je časovač s konfiguračným súborom najlepšie zrozumiteľný.
Podceňovaná časť: reštart služieb
Správca balíkov nahrádza súbory na disku. Bežiace procesy si ponechávajú starý kód v pamäti. Pri PHP to znamená: kým sa PHP-FPM alebo Apache s mod_php nereštartujú, zraniteľnosť zostáva otvorená.
| Nástroj | Systém | Čo robí |
|---|---|---|
| needrestart | Debian, Ubuntu | rozpoznáva služby so zastaranými súbormi; pod Ubuntu od 24.04 ich štandardne automaticky reštartuje |
dnf needs-restarting -s |
rodina RHEL | vypíše služby, ktoré by sa mali reštartovať |
Automatic-Reboot |
unattended-upgrades | reštartuje server, ak to aktualizácia vyžaduje; štandardne vypnuté |
reboot |
dnf-automatic | never, when-changed alebo when-needed |
Podľa dokumentácie Ubuntu bežia služby, ktoré needrestart vynecháva, až do ručného reštartu so starými súbormi. Po každej aktualizácii PHP preto skontrolujte čas spustenia procesov, ako je opísané v článku Reštart PHP-FPM a všetkých workerov.
Pri backportoch zostáva zobrazené číslo verzie PHP často rovnaké. Záplatu doložíte cez changelog balíka s číslami CVE, napríklad pomocou apt-get changelog alebo rpm -q --changelog. Ako na to podrobne, ukazuje Debian a Ubuntu: je môj balík PHP zaplátaný?.
Čo automatika nepokrýva
Automatické aktualizácie sú stavebný prvok, nie úplná správa záplat. Niektoré oblasti potrebujú vlastné postupy:
- Kontajnery: PHP v obrazoch Docker sa aktualizáciami hostiteľa neaktualizuje. Obrazy zostaviť znova, kontajnery vytvoriť odznova.
- Hostingové panely: Plesk, cPanel a podobné panely spravujú PHP sčasti vlastnými balíkmi a mechanizmami.
- Hlavné verzie: prechod napríklad z PHP 8.2, ktoré 31. 12. 2026 dosiahne koniec podpory, na novšiu verziu nenastane automaticky.
- Aplikácie: CMS, pluginy a závislosti Composer majú vlastné cesty aktualizácií.
- Kontrola: niekto musí čítať protokoly a chybové hlásenia automatiky. Potichu zlyhávajúci beh je horší než žiadny, pretože predstiera bezpečnosť.
Ako tieto časti zrastú do procesu, opisuje Správa záplat ako proces namiesto hasenia požiarov.
Záver: automatika áno, slepá dôvera nie
Automatické bezpečnostné aktualizácie patria na každý server Linux, ktorý je dostupný z internetu. PHP2Shell ukázal, aký stiesnený môže byť čas: podľa správ médií sa prvý pokus o útok pozoroval už 17. októbra, štyri dni pred záplatami. Kto potom ešte čaká na ručné okno údržby, stráca cenný čas.
Automatika vám však odoberá len nasadzovanie. Reštart služieb, doklad stavu záplat, kontajnery, panely a včasný prechod na podporované verzie zostávajú úlohami, za ktoré musí byť niekto zodpovedný. Túto zodpovednosť určte písomne a vzorkovo kontrolujte, či sa protokoly automatiky skutočne čítajú. Až kombinácia automatiky a kontroly robí aktualizácie spoľahlivými.
Ako konkrétne pomáha PHP SOS?
- Nastaviť: unattended-upgrades alebo dnf-automatic nakonfigurujeme podľa vašich serverov, vrátane uvoľnených zdrojov tretích strán.
- Zabezpečiť reštarty: zriadime needrestart alebo zodpovedajúce kontroly a po aktualizáciách PHP kontrolujeme časy spustenia procesov.
- Uzavrieť medzery: kontajnery, panely a zmeny hlavných verzií zaradíme do pevného postupu údržby.
- Kontrolovať: v rámci zmluvy o bezpečnostnej údržbe kontrolujeme protokoly automatiky a hlásime nápadnosti.
Časté otázky
Nie sú automatické aktualizácie na produkčných serveroch príliš riskantné?
Obmedzené na bezpečnostné aktualizácie distribúcie je riziko spravidla menšie než riziko otvorenej zraniteľnosti. Tieto aktualizácie nemajú prinášať nové funkcie, ale opravovať chyby. Pri kritických systémoch patria k tomu zálohy, monitoring a testovací systém.
Reštartuje unattended-upgrades PHP-FPM po aktualizácii?
Nie nevyhnutne sám. Pod Ubuntu od verzie 24.04 nástroj needrestart štandardne automaticky reštartuje dotknuté služby, vyňaté služby však bežia ďalej so starými súbormi. Po každej aktualizácii PHP skontrolujte čas spustenia všetkých procesov PHP.
Aktualizujú sa balíky zo sury.org alebo iných zdrojov tretích strán automaticky?
Len ak zdroj výslovne uvoľníte. Podľa dokumentácie Ubuntu nestačí pridať repozitár; musí byť navyše v zozname povolených pôvodov unattended-upgrades.
Zvýši automatika aj PHP 8.2 na 8.3?
Nie. Automatické bezpečnostné aktualizácie zostávajú v rámci nainštalovaných verzií balíkov. Zmena hlavnej verzie PHP, napríklad pred koncom podpory PHP 8.2 dňa 31. 12. 2026, ostáva plánovaným projektom s testami.
Čo s kontajnermi Docker?
Aktualizácie na hostiteľovi neaktualizujú verziu PHP v kontajneroch. Obrazy kontajnerov sa musia zostaviť znova alebo stiahnuť znova a kontajnery vytvoriť odznova.