De flesta lyckade serverintrång sker inte genom raffinerade exploits utan genom en sårbarhet vars patch kom för flera månader sedan. Orsaken är sällan lättja: att uppdatera för hand känns riskabelt, eftersom apt upgrade på en produktionsserver ibland startar om sådant man inte bett den starta om. Automatiska uppdateringar löser frågan, men de har dåligt rykte — förtjänat precis i den mån de ställs in i hast.
Låt oss gå igenom en uppsättning där säkerhetspatchar kommer in av sig själva medan PHP-versionen inte byts under natten.
Installation
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
Dialogen skapar /etc/apt/apt.conf.d/20auto-upgrades. Kontrollera vad som hamnade där:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Ettorna betyder ”dagligen”. Allt detta startas av en systemd-timer, inte av klassisk cron:
systemctl list-timers | grep apt
Det viktigaste: bara säkerhet
Huvudfilen är /etc/apt/apt.conf.d/50unattended-upgrades. Där finns listan Allowed-Origins (på Debian Origins-Pattern), och som standard är enbart säkerhetsförrådet påslaget. Låt det förbli så.
Frestelsen att avkommentera raden med -updates är stor — ”låt allt uppdateras”. Gör det inte: uppdateringsförrådet levererar nya versioner och inte bara rättelser, och det är just därifrån nattens överraskningar kommer. Säkerhet och färskhet är olika uppgifter, och den andra sköts bäst för hand när du sitter vid tangentbordet.
Om något paket inte får uppdateras automatiskt finns en svartlista:
Unattended-Upgrade::Package-Blacklist {
"mariadb-server";
"php8.3-fpm";
};
Använd den medvetet: varje rad här betyder ”det här paketet uppdaterar jag själv” — och det löftet måste hållas.
Omstarter
Nyckelraden:
Unattended-Upgrade::Automatic-Reboot "false";
Att lämna false är rätt för en server med en sajt: en omstart klockan tre på natten utan förvarning är värre än en kärnpatch som skjuts upp ett dygn. Men det beslutet har en obligatorisk andra halva som man glömmer.
När kärnan, libc eller openssl uppdateras skapar systemet filen /var/run/reboot-required. Så länge omstarten inte skett ligger den rättade versionen på disken medan den gamla kör i minnet — sårbarheten finns alltså kvar trots att paketet räknas som uppdaterat. Det behöver kontrolleras uttryckligen:
ls -l /var/run/reboot-required
cat /var/run/reboot-required.pkgs
Den andra filen räknar upp exakt vad omstarten beror på. Regeln är enkel: ser du flaggan — planera ett fönster inom ett eller två dygn, inte ”någon gång”.
Ett särskilt fall är bibliotek. openssl uppdateras medan nginx och PHP-FPM fortsätter köra den gamla versionen i minnet, och någon omstartsflagga dyker inte upp. Vem som faktiskt behöver startas om visar needrestart:
sudo apt install needrestart
sudo needrestart -b
Ställ bara om den till läget ”visa, inte fråga” — annars börjar den ställa frågor mitt i en icke-interaktiv installation och låser den. Till det lägger man i /etc/needrestart/conf.d/ en fil med raden $nrconf{restart} = 'l';.
Kontrollera att det alls fungerar
En provkörning utan installation:
sudo unattended-upgrade --dry-run --debug
I utdatan syns vilka paket som passar reglerna och vilka som förkastats och varför. Vad som faktiskt hände står i loggarna:
sudo tail -50 /var/log/unattended-upgrades/unattended-upgrades.log
Hur många uppdateringar som väntar just nu:
apt list --upgradable 2>/dev/null | grep -i security
Det sista kommandot är det nyttigaste av alla. Inställda automatiska uppdateringar har för vana att gå sönder tyst: utrymmet på /boot tog slut, förrådet bytte nyckel, timern stängdes av efter någon manuell ändring. Utåt är allt i ordning, och patchar installeras inte på månader.
Utrymmet på /boot
En klassiker: gamla kärnor raderas inte, partitionen /boot fylls, installationen av den nya kärnan misslyckas och uppdateringarna stannar helt. Var tredje eller fjärde månad är det värt att titta:
df -h /boot
sudo apt autoremove --purge
Eller slå på automatisk rensning i samma 50unattended-upgrades: Remove-Unused-Kernel-Packages "true" och Remove-Unused-Dependencies "true".
Vad som blir kvar åt människan
Automatiska uppdateringar tar bort rutinen men inte behovet av att titta. Två frågor du ska kunna svara på när som helst: hur många säkerhetsuppdateringar som väntar och om omstartsflaggan är satt. Båda svaren är en rad på en sida, och hela poängen är att den raden ska hamna framför ögonen av sig själv och inte på ditt eget initiativ en gång per kvartal.