Kort sagt: Med unattended-upgrades under Debian och Ubuntu samt dnf-automatic i RHEL-familjen installerar Linux-servrar säkerhetsuppdateringar på egen hand. För att en uppdatering också ska verka måste berörda tjänster som PHP-FPM därefter startas om; kontrollera det med needrestart eller processernas starttider. Tredjepartskällor som sury.org måste uttryckligen frisläppas, containrar och byten av huvudversion täcker inte automatiken.
Från patch till server: automatik sparar tid
När php.net den 21 oktober 2026 klockan 16 tysk tid publicerade patcharna mot PHP2Shell började ett lopp för administratörerna. Enligt rapporter levererade distributioner sina backports delvis samma dag. Servrar med automatiska säkerhetsuppdateringar kunde installera de nya paketen vid nästa schemalagda körning utan att någon behövde ingripa.
Det är de goda nyheterna. De mindre goda: installerat betyder inte verksamt. En PHP-FPM-tjänst som har körts i veckor fortsätter att arbeta med den gamla koden i minnet tills den startas om. Och paket från tredjepartskällor, containrar eller webbhotellspaneler med egen PHP-hantering förblir ofta orörda av automatiken.
Det här inlägget visar hur ni ställer in automatiska säkerhetsuppdateringar och kompletterar dem så att de verkligen skyddar i skarpt läge.
unattended-upgrades under Debian och Ubuntu
Under Ubuntu är paketet unattended-upgrades installerat som standard och installerar säkerhetsuppdateringar. Under Debian installerar ni det vid behov. Det styrs via två filer under /etc/apt/apt.conf.d/.
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
Filen 20auto-upgrades anger om och hur ofta paketlistor uppdateras och uppdateringar installeras. Värdet är antalet dagar, "1" betyder dagligen:
// /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
I 50unattended-upgrades står från vilka källor uppdateringar får komma, om omstart sker därefter och vem som får ett meddelande. Som standard är bara distributionens officiella säkerhetskällor frisläppta. Enligt Ubuntu-dokumentationen räcker det inte att lägga in ytterligare ett repository: det måste dessutom stå i den här listan, annars ignoreras det av automatiken. Det gäller till exempel tredjepartsrepositoryt sury.org, som enligt rapporter har tillhandahållit PHP-byggen för alla grenar från 5.6 till 8.5. Bakgrund finns i inlägget Repositoryt sury.org.
Om allt stämmer visar en provkörning som inte ändrar något:
sudo unattended-upgrade -v --dry-run
# Loggar från de riktiga körningarna
ls -l /var/log/unattended-upgrades/
dnf-automatic på RHEL, AlmaLinux och Rocky Linux
I RHEL-familjen tar dnf-automatic över samma uppgift. Konfigurationen ligger i /etc/dnf/automatic.conf. Enligt dokumentationen kontrollerar upgrade_type = security bara uppdateringar med säkerhetsmeddelande, och apply_updates är som standard avstängd.
# /etc/dnf/automatic.conf (utdrag)
[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*'
Vid sidan av dnf-automatic.timer, som följer konfigurationsfilen, finns timers som bara rapporterar, bara hämtar eller alltid installerar. Till att börja med är timern med konfigurationsfil lättast att följa.
Den underskattade delen: starta om tjänster
Pakethanteraren ersätter filer på disken. Pågående processer behåller den gamla koden i minnet. För PHP betyder det: så länge PHP-FPM eller Apache med mod_php inte har startats om förblir sårbarheten öppen.
| Verktyg | System | Vad det gör |
|---|---|---|
| needrestart | Debian, Ubuntu | känner igen tjänster med föråldrade filer; startar under Ubuntu från 24.04 som standard automatiskt om dem |
dnf needs-restarting -s |
RHEL-familjen | listar tjänster som bör startas om |
Automatic-Reboot |
unattended-upgrades | startar om servern när en uppdatering kräver det; som standard av |
reboot |
dnf-automatic | never, when-changed eller when-needed |
Enligt Ubuntu-dokumentationen fortsätter tjänster som är undantagna från needrestart att köra med gamla filer fram till manuell omstart. Kontrollera därför efter varje PHP-uppdatering processernas starttid, som beskrivs i Starta om PHP-FPM och alla workers.
Vid backports förblir det visade PHP-versionsnumret ofta detsamma. Patchen belägger ni via paketets changelog med CVE-numren, till exempel med apt-get changelog eller rpm -q --changelog. Hur det går till i detalj visar Debian och Ubuntu: är mitt PHP-paket patchat?.
Vad automatiken inte täcker
Automatiska uppdateringar är en byggsten, inte en fullständig patchhantering. Vissa områden behöver egna rutiner:
- Containrar: PHP i Docker-images uppdateras inte av värduppdateringar. Bygg om images, skapa om containrar.
- Webbhotellspaneler: Plesk, cPanel och liknande paneler hanterar PHP delvis via egna paket och mekanismer.
- Huvudversioner: Bytet från till exempel PHP 8.2, som når slutet på supporten den 31 december 2026, till en nyare version sker inte automatiskt.
- Applikationer: CMS, tillägg och Composer-beroenden har egna uppdateringsvägar.
- Kontroll: Någon måste läsa automatikens loggar och felmeddelanden. En körning som tyst misslyckas är värre än ingen, eftersom den vilseleder om säkerheten.
Hur dessa delar växer ihop till en process beskriver Patchhantering som process i stället för brandkår.
Slutsats: automatik ja, blint förtroende nej
Automatiska säkerhetsuppdateringar hör hemma på varje Linux-server som är nåbar från internet. PHP2Shell har visat hur knapp tiden kan bli: enligt mediarapporter observerades ett första angreppsförsök redan den 17 oktober, fyra dagar före patcharna. Den som därefter fortfarande väntar på ett manuellt underhållsfönster förlorar värdefull tid.
Automatiken tar dock bara över själva installationen. Omstart av tjänsterna, belägg för patchnivån, containrar, paneler och det rättidiga bytet till stödda versioner förblir uppgifter som någon måste vara ansvarig för. Fastställ det ansvaret skriftligen och kontrollera stickprovsvis att automatikens loggar verkligen läses. Först kombinationen av automatik och kontroll gör uppdateringar tillförlitliga.
Hur hjälper PHP SOS konkret?
- Ställa in: Vi konfigurerar unattended-upgrades eller dnf-automatic anpassat till era servrar, inklusive frisläppta tredjepartskällor.
- Säkra omstarter: Vi inrättar needrestart eller motsvarande kontroller och kontrollerar processernas starttider efter PHP-uppdateringar.
- Stänga luckor: Containrar, paneler och byten av huvudversion tar vi in i ett fast underhållsförlopp.
- Kontrollera: Inom ramen för säkerhetsunderhållsavtalet granskar vi automatikens loggar och rapporterar avvikelser.
Vanliga frågor
Är automatiska uppdateringar inte för riskabla på produktionsservrar?
Begränsade till distributionens säkerhetsuppdateringar är risken oftast mindre än den med en öppen sårbarhet. Dessa uppdateringar ska inte ge nya funktioner utan rätta fel. För kritiska system hör säkerhetskopior, övervakning och ett testsystem dit.
Startar unattended-upgrades om PHP-FPM efter en uppdatering?
Inte nödvändigtvis själv. Under Ubuntu startar från och med version 24.04 verktyget needrestart som standard automatiskt om berörda tjänster, men undantagna tjänster fortsätter att köra med gamla filer. Kontrollera efter varje PHP-uppdatering starttiden för alla PHP-processer.
Uppdateras paket från sury.org eller andra tredjepartskällor automatiskt?
Bara om ni uttryckligen frisläpper källan. Enligt Ubuntu-dokumentationen räcker det inte att lägga till ett repository; det måste dessutom stå i listan över tillåtna ursprung för unattended-upgrades.
Höjer automatiken också PHP 8.2 till 8.3?
Nej. Automatiska säkerhetsuppdateringar stannar inom de installerade paketversionerna. Ett byte av PHP-huvudversion, till exempel före slutet på supporten för PHP 8.2 den 31 december 2026, förblir ett planerat projekt med tester.
Hur är det med Docker-containrar?
Uppdateringar på värden uppdaterar inte PHP-versionen i containrar. Container-images måste byggas om eller hämtas på nytt och containrarna skapas om.