# Automaattiset tietoturvapäivitykset Linux-palvelimilla

> unattended-upgrades ja dnf-automatic käyttöön: tietoturvapäivitykset automaattisesti, palvelujen uudelleenkäynnistys ja kolmannen osapuolen lähteet.

Lähde: https://phpsos.de/fi/blog/automatische-sicherheitsupdates/  
Tilanne: 25.10.2026  
Palveluntarjoaja: PHP SOS, PHP-hätäapu ja palvelimen tietoturva. Pikaapu WhatsAppilla: https://wa.me/491736494914?text=Hei%20PHP%20SOS%2C%20tarvitsemme%20apua%20PHP-palvelimemme%20kanssa.%20Yritys%3A%20%E2%80%A6%20Verkkosivusto%3A%20%E2%80%A6

**Lyhyesti:** Työkalulla `unattended-upgrades` Debianilla ja Ubuntulla sekä `dnf-automatic` RHEL-perheessä Linux-palvelimet asentavat tietoturvapäivitykset itsenäisesti. Jotta päivitys tehoaa, vaikutuksen alaisten palvelujen kuten PHP-FPM:n on käynnistyttävä sen jälkeen uudelleen; tarkistakaa se needrestartilla tai prosessien käynnistysajoilla. Kolmannen osapuolen lähteet kuten sury.org on sallittava nimenomaisesti, kontteja ja pääversioiden vaihtoja automatiikka ei kata.

## Korjauksesta palvelimelle: automatiikka säästää aikaa

Kun php.net julkaisi 21. lokakuuta 2026 klo 16.00 Saksan aikaa korjaukset PHP2Shelliä vastaan, ylläpitäjille alkoi kilpajuoksu. Raporttien mukaan jakelut toimittivat backporttinsa osin saman päivän aikana. Automaattisilla tietoturvapäivityksillä varustetut palvelimet pystyivät asentamaan uudet paketit seuraavassa aikataulutetussa ajossa ilman, että kenenkään tarvitsi puuttua asiaan.

Se on hyvä uutinen. Vähemmän hyvä: asennettu ei tarkoita tehokasta. PHP-FPM-palvelu, joka on pyörinyt viikkoja, jatkaa vanhalla koodilla muistissa, kunnes se käynnistetään uudelleen. Ja kolmannen osapuolen lähteiden paketit, kontit tai hosting-paneelit omalla PHP-hallinnallaan jäävät automatiikalta usein koskematta.

Tämä kirjoitus näyttää, miten otatte automaattiset tietoturvapäivitykset käyttöön ja täydennätte niitä niin, että ne todella suojaavat hätätilanteessa.

## unattended-upgrades Debianilla ja Ubuntulla

Ubuntulla paketti `unattended-upgrades` on oletuksena asennettu ja asentaa tietoturvapäivitykset. Debianilla asennatte sen tarvittaessa jälkikäteen. Sitä ohjataan kahdella tiedostolla hakemistossa `/etc/apt/apt.conf.d/`.

```bash
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
```

Tiedosto `20auto-upgrades` määrää, päivitetäänkö pakettiluetteloita ja asennetaanko päivityksiä ja kuinka usein. Arvo on päivien lukumäärä, `"1"` tarkoittaa päivittäin:

```text
// /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
```

Tiedostossa `50unattended-upgrades` määritellään, mistä lähteistä päivityksiä saa tulla, käynnistetäänkö sen jälkeen uudelleen ja kuka saa ilmoituksen. Oletuksena vain jakelun viralliset tietoturvalähteet on sallittu. Ubuntun dokumentaation mukaan ei riitä, että liitätte toisen repositorion: sen on oltava lisäksi tässä listassa, muuten automatiikka ohittaa sen. Se koskee esimerkiksi kolmannen osapuolen repositoriota sury.org, joka on raporttien mukaan tarjonnut PHP-versioita kaikille haaroille 5.6:sta 8.5:een. Taustat ovat kirjoituksessa [sury.org-repositorio](https://phpsos.de/fi/blog/sury-repository-php/).

Toimiiko kaikki oikein, näyttää koeajo, joka ei muuta mitään:

```bash
sudo unattended-upgrade -v --dry-run
# Varsinaisten ajojen lokit
ls -l /var/log/unattended-upgrades/
```

## dnf-automatic RHEL:llä, AlmaLinuxilla ja Rocky Linuxilla

RHEL-perheessä `dnf-automatic` hoitaa saman tehtävän. Asetukset ovat tiedostossa `/etc/dnf/automatic.conf`. Dokumentaation mukaan `upgrade_type = security` tarkistaa vain päivitykset, joihin liittyy tietoturvailmoitus, ja `apply_updates` on oletuksena pois päältä.

```ini
# /etc/dnf/automatic.conf (ote)
[commands]
upgrade_type = security
download_updates = yes
apply_updates = yes
reboot = never
```

```bash
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
systemctl list-timers 'dnf-automatic*'
```

Asetustiedostoa noudattavan `dnf-automatic.timer`-ajastimen lisäksi on ajastimia, jotka vain ilmoittavat, vain lataavat tai asentavat aina. Alkuun asetustiedostolla varustettu ajastin on helpoimmin jäljitettävissä.

## Aliarvostettu osa: palvelujen uudelleenkäynnistys

Pakettienhallinta korvaa tiedostoja levyllä. Käynnissä olevat prosessit säilyttävät vanhan koodin muistissa. PHP:n kohdalla se tarkoittaa: niin kauan kuin PHP-FPM tai Apache mod_php:n kanssa ei ole käynnistetty uudelleen, aukko pysyy auki.

| Työkalu | Järjestelmä | Mitä se tekee |
|---|---|---|
| needrestart | Debian, Ubuntu | tunnistaa palvelut vanhentuneilla tiedostoilla; käynnistää ne Ubuntulla versiosta 24.04 alkaen oletuksena automaattisesti uudelleen |
| `dnf needs-restarting -s` | RHEL-perhe | luettelee palvelut, jotka pitäisi käynnistää uudelleen |
| `Automatic-Reboot` | unattended-upgrades | käynnistää palvelimen uudelleen, jos päivitys sitä vaatii; oletuksena pois |
| `reboot` | dnf-automatic | `never`, `when-changed` tai `when-needed` |

Ubuntun dokumentaation mukaan palvelut, jotka needrestart on rajannut pois, jatkavat vanhoilla tiedostoilla käsin tehtyyn uudelleenkäynnistykseen asti. Tarkistakaa siksi jokaisen PHP-päivityksen jälkeen prosessien käynnistysaika, kuten kuvataan kohdassa [PHP-FPM ja kaikkien workerien uudelleenkäynnistys](https://phpsos.de/fi/php2shell/php-fpm-neustart/).

> **Tärkeää:**
> Backporttien kohdalla näytetty PHP-versionumero pysyy usein samana. Korjauksen todistatte paketin muutoslokista CVE-numeroineen, esimerkiksi komennolla `apt-get changelog` tai `rpm -q --changelog`. Miten se tehdään yksityiskohtaisesti, näyttää [Debian ja Ubuntu: onko PHP-pakettini korjattu?](https://phpsos.de/fi/blog/debian-ubuntu-paket-gepatcht/).

## Mitä automatiikka ei kata

Automaattiset päivitykset ovat rakennuspalikka, eivät täydellistä päivityshallintaa. Jotkin alueet tarvitsevat omat kulkunsa:

1. **Kontit:** Docker-imagejen PHP:tä ei päivitetä isännän päivityksillä. Rakentakaa imaget uudelleen, luokaa kontit uudelleen.
2. **Hosting-paneelit:** Plesk, cPanel ja vastaavat paneelit hallinnoivat PHP:tä osin omilla paketeillaan ja mekanismeillaan.
3. **Pääversiot:** Siirtyminen esimerkiksi PHP 8.2:sta, jonka tuki päättyy 31.12.2026, uudempaan versioon ei tapahdu automaattisesti.
4. **Sovellukset:** CMS:illä, liitännäisillä ja Composer-riippuvuuksilla on omat päivitystiensä.
5. **Valvonta:** Jonkun on luettava automatiikan lokit ja virheilmoitukset. Hiljaa epäonnistuva ajo on pahempi kuin ei ajoa lainkaan, koska se luo näennäisen turvallisuuden.

Miten nämä osat kasvavat prosessiksi, kuvaa [Päivityshallinta prosessina palokunnan sijaan](https://phpsos.de/fi/blog/patch-management-prozess/).

## Yhteenveto: automatiikka kyllä, sokea luottamus ei

Automaattisten tietoturvapäivitysten kuuluu olla jokaisella internetistä tavoitettavissa olevalla Linux-palvelimella. PHP2Shell on osoittanut, kuinka niukaksi aika voi käydä: mediaraporttien mukaan ensimmäinen hyökkäysyritys havaittiin jo 17. lokakuuta, neljä päivää ennen korjauksia. Joka odottaa sen jälkeen vielä käsin tehtävää huoltoikkunaa, menettää arvokasta aikaa.

Automatiikka ottaa kuitenkin hoitaakseen vain asentamisen. Palvelujen uudelleenkäynnistys, päivitystilan todistaminen, kontit, paneelit ja ajoissa tehtävä siirtyminen tuettuihin versioihin ovat tehtäviä, joista jonkun on oltava vastuussa. Määrittäkää vastuu kirjallisesti ja tarkistakaa otantana, luetaanko automatiikan lokeja todella. Vasta automatiikan ja valvonnan yhdistelmä tekee päivityksistä luotettavia.

## Miten PHP SOS auttaa konkreettisesti?

- **Käyttöönotto:** Määritämme unattended-upgradesin tai dnf-automaticin palvelimiinne sopivaksi, sallitut kolmannen osapuolen lähteet mukaan lukien.
- **Uudelleenkäynnistysten varmistus:** Perustamme needrestartin tai vastaavat tarkistukset ja valvomme PHP-päivitysten jälkeen prosessien käynnistysaikoja.
- **Aukkojen sulkeminen:** Liitämme kontit, paneelit ja pääversioiden vaihdot kiinteään huoltokulkuun.
- **Valvonta:** [Tietoturvahuoltosopimuksessa](https://phpsos.de/fi/leistungen/security-wartungsvertrag/) tarkistamme automatiikan lokit ja ilmoitamme poikkeamista.


## Usein kysytyt kysymykset

**Eivätkö automaattiset päivitykset ole liian riskialttiita tuotantopalvelimilla?**  
Jakelun tietoturvapäivityksiin rajattuna riski on yleensä pienempi kuin avoimen aukon riski. Näiden päivitysten ei ole tarkoitus tuoda uusia toimintoja vaan korjata virheitä. Kriittisissä järjestelmissä kuuluvat mukaan varmuuskopiot, valvonta ja testijärjestelmä.

**Käynnistääkö unattended-upgrades PHP-FPM:n uudelleen päivityksen jälkeen?**  
Ei välttämättä itse. Ubuntussa versiosta 24.04 alkaen needrestart-työkalu käynnistää vaikutuksen alaiset palvelut oletuksena automaattisesti uudelleen, mutta poissuljetut palvelut jatkavat vanhoilla tiedostoilla. Tarkistakaa jokaisen PHP-päivityksen jälkeen kaikkien PHP-prosessien käynnistysaika.

**Päivittyvätkö sury.org-lähteen tai muiden kolmannen osapuolen lähteiden paketit automaattisesti?**  
Vain jos sallitte lähteen nimenomaisesti. Ubuntun dokumentaation mukaan ei riitä, että repositorio lisätään; sen on oltava lisäksi unattended-upgrades-työkalun sallittujen lähteiden listalla.

**Nostaako automatiikka myös PHP 8.2:n versioon 8.3?**  
Ei. Automaattiset tietoturvapäivitykset pysyvät asennettujen pakettiversioiden sisällä. PHP:n pääversion vaihto, esimerkiksi ennen PHP 8.2:n tuen päättymistä 31.12.2026, pysyy suunniteltuna projektina testeineen.

**Entä Docker-kontit?**  
Isännän päivitykset eivät päivitä konttien PHP-versiota. Konttikuvat on rakennettava tai haettava uudelleen ja kontit luotava uudelleen.

## Lähteet

- [Ubuntu Server: automaattiset päivitykset](https://ubuntu.com/server/docs/how-to/software/automatic-updates/)
- [DNF Automatic](https://dnf.readthedocs.io/en/latest/automatic.html)
- [Debian Security Tracker](https://security-tracker.debian.org/)
- [Ubuntu Security Notices](https://ubuntu.com/security/notices)
