# Vlastní zabezpečení root serveru a vServeru

> Zabezpečení vServeru po PHP2Shell: zkontrolujte balíčky PHP, rozpoznejte backporty, restartujte workery a root server trvale zpevněte. Kroky pro adminy.

Zdroj: https://phpsos.de/cs/server/root-server-vserver/  
Stav: 25.10.2026  
Poskytovatel: PHP SOS, Nouzová pomoc pro PHP a bezpečnost serverů. Okamžitá pomoc přes WhatsApp: https://wa.me/491736494914?text=Dobr%C3%BD%20den%2C%20PHP%20SOS%2C%20pot%C5%99ebujeme%20pomoc%20s%20na%C5%A1%C3%ADm%20PHP%20serverem.%20Firma%3A%20%E2%80%A6%20Web%3A%20%E2%80%A6

**Stručně:** Kdo spravuje root server nebo vServer sám, musí ho po PHP2Shell také sám zabezpečit: dostat balíčky PHP na opravený stav, restartovat všechny procesy PHP a výsledek zkontrolovat. Provozovatel datového centra se zpravidla stará jen o hardware, virtualizaci a síť. Poté se vyplatí server trvale zpevnit.

## Vaše odpovědnost u vlastního serveru

U nespravovaného root serveru nebo vServeru si pronajímáte výpočetní výkon, nikoli péči. Operační systém, webový server, PHP, databáze, firewall, zálohy a monitoring jsou ve vašich rukou. Pro vedení a majitele to znamená: pokud tyto úkoly výslovně nepřevzal nikdo ve firmě nebo externí poskytovatel, nedělá je nikdo.

PHP2Shell to zviditelňuje. Obě zranitelnosti CVE-2026-109618 a CVE-2026-109619 sídlí v samotném PHP a umožňují spuštění kódu bez přihlášení. Projekt PHP vydal dne 21. 10. 2026 verze 8.5.12, 8.4.27, 8.3.36 a 8.2.35. BSI (německý Spolkový úřad pro informační bezpečnost) doporučuje okamžitou aktualizaci a, pokud to nejde, webový server dočasně odpojit od sítě.

## Zabezpečení vServeru: zkontrolovat stav a balíčky

Nejdřív si udělejte přehled, jaké verze PHP jsou nainstalovány a z jakého zdroje pocházejí. Mnoho serverů používá vedle balíčků distribuce další zdroje balíčků. Následující příkazy jen čtou. Názvy balíčků jsou příklady.

```bash
# Debian/Ubuntu: nainstalované balíčky PHP a jejich původ
apt list --installed 'php*' 2>/dev/null
apt-cache policy php8.3-fpm

# AlmaLinux/Rocky/RHEL
dnf list installed 'php*'

# Jaké binárky PHP vůbec existují?
ls /usr/bin/php* /usr/sbin/php-fpm* 2>/dev/null
```

Samotné číslo verze nestačí. Distribuce často dodávají bezpečnostní opravy jako backport, zobrazené číslo pak zůstává starší. Rozhodující je changelog balíčku.

```bash
# Debian/Ubuntu (název balíčku jako příklad)
apt changelog php8.3-fpm 2>/dev/null | grep -iE 'CVE-2026-1096(18|19)'

# Rodina RHEL (název balíčku jako příklad)
rpm -q --changelog php-fpm | grep -iE 'CVE-2026-1096(18|19)'
```

Podrobný návod najdete na stránce [Kontrola verze PHP a stavu záplat](https://phpsos.de/cs/php2shell/php-version-pruefen/).

## Nasadit aktualizaci a obnovit všechny procesy

Aktualizace nasaďte přes správu balíčků a poté restartujte každou službu, která načítá PHP. Podle uspořádání je to PHP-FPM, Apache s mod_php, LiteSpeed nebo aplikační server. Nové soubory na disku nestačí, dokud staré procesy běží v paměti.

```bash
# Najít služby s PHP
systemctl list-units --type=service | grep -iE 'php|apache2|httpd|lsws'

# Zobrazit procesy s časem spuštění
ps -eo pid,lstart,cmd | grep -E 'php|apache2|httpd' | grep -v grep

# Debian/Ubuntu: rozpoznat programy se zastaralými knihovnami (je-li nainstalováno)
needrestart -r l
```

Každý relevantní proces by měl být spuštěn po aktualizaci. Užitečný je nástroj `needrestart` na systémech Debian, který zobrazí služby se zastaralými knihovnami. Podrobnosti o restartu popisuje stránka [Restart PHP-FPM a všech workerů](https://phpsos.de/cs/php2shell/php-fpm-neustart/).

> **Důležité:**
> Záplata neodstraní škodlivý software zavlečený před aktualizací. Uchovejte logy webového serveru od 20. 10. 2026 a zkontrolujte server, zda nenese stopy, dříve než ho označíte za čistý.

Pro první hledání stop se nabízí několik kontrol, které nic nemění. Hledejte soubory PHP, které byly od 17. 10. 2026 nově vytvořeny nebo změněny ve webových adresářích, neznámé záznamy v crontabech všech uživatelů, nové systémové uživatele a klíče SSH i procesy uživatele webového serveru, které drží odchozí spojení.

```bash
# Soubory PHP změněné od 17. 10. 2026 (cesta jako příklad)
find /var/www -type f -name '*.php' -newermt '2026-10-17' -ls

# Síťová spojení s příslušným procesem
ss -tupn
```

Žádná z těchto kontrol sama o sobě neprokazuje průnik a prázdný výsledek neprokazuje opak. Ukazují ale, zda je nutné hlubší vyšetřování. Pracujte na kopiích logů a podezřelé soubory neměňte, dokud není stav zajištěn. Při nálezech je bezpečnou cestou řádné vyšetření. V takovém případě server jednoduše nevypínejte a ihned ho nezakládejte znovu, protože tím zaniknou stopy důležité pro posouzení oznamovacích povinností a pro možné trestní oznámení.

## Server trvale zpevnit

Po akutní záplatě následuje základní zabezpečení. Nezabrání každé zranitelnosti, ale omezí škody a zkrátí dobu reakce příště. Osvědčily se tyto body:

- **Přístupy:** SSH jen s klíčem, žádné přímé přihlášení roota, administrační rozhraní dosažitelná jen ze známých sítí.
- **Firewall:** otevřít jen porty, které jsou skutečně potřeba, odchozí spojení webového serveru omezit.
- **Konfigurace PHP:** vypnout nebezpečné funkce, `open_basedir` pro každý web, vlastní pooly a uživatele pro každou aplikaci.
- **Oprávnění k souborům:** webový server nesmí zapisovat do programového kódu, adresáře pro nahrávání nespouštějí PHP.
- **Aktualizace:** bezpečnostní aktualizace nasazovat automaticky, restart a kontrolu pevně naplánovat.
- **Zálohy:** zálohy podle pravidla 3-2-1, alespoň jedna kopie mimo server a chráněná před změnou.
- **Protokoly:** logy shromažďovat centrálně a uchovávat dostatečně dlouho.

Jak vypadá spolehlivá záloha, popisuje stránka [Zálohy podle pravidla 3-2-1](https://phpsos.de/cs/ratgeber/backups-3-2-1/). Jako rámec pro firmy se hodí IT-Grundschutz (německý standard základní ochrany IT) od BSI.

## Kdy je lepší spravovaný server

Vlastní server se vyplatí, pokud péči spolehlivě převezme někdo: sledovat aktualizace, posuzovat situace jako PHP2Shell, umět reagovat i v noci. Pokud tato kapacita chybí, je rozumný buď spravovaný server (Managed Server), nebo pevná smlouva o údržbě. V obou případech je důležité zodpovědnosti zaznamenat písemně. Více na stránce [Spravovaný server: vyjasnit odpovědnost](https://phpsos.de/cs/server/managed-server/).

## Jak konkrétně pomáhá PHP SOS?

- Zmapujeme všechny instalace PHP, zdroje balíčků a služby vašeho serveru a ohodnotíme skutečný stav záplat.
- Nasadíme aktualizace, restartujeme všechny procesy a výsledek zdokumentujeme.
- Zkontrolujeme server na stopy kompromitace a zajistíme logy pro pozdější vyhodnocení.
- V rámci našeho [zpevnění serveru](https://phpsos.de/cs/leistungen/server-haertung/) čistě nastavíme přístupy, firewall, pooly PHP a oprávnění.
- Na přání převezmeme průběžnou péči prostřednictvím [smlouvy o bezpečnostní údržbě](https://phpsos.de/cs/leistungen/security-wartungsvertrag/).


## Časté dotazy

**Záplatuje moje datové centrum vServer automaticky?**  
U nespravovaných root serverů a vServerů zpravidla ne. Poskytovatel zajišťuje hardware nebo virtualizaci a síť, operační systém a všechny služby na něm spravujete sami. V případě pochybností zkontrolujte svou smlouvu.

**Stačí automatické bezpečnostní aktualizace?**  
Pomáhají, ale kontrolu nenahrazují. Automatické aktualizace ne vždy restartují běžící procesy PHP a často nepokrývají balíčky z cizích zdrojů. Po každé bezpečnostní aktualizaci zkontrolujte stav balíčků a časy spuštění procesů.

**Jak zjistím, zda můj balíček obsahuje backport?**  
V changelogu balíčku a v bezpečnostních oznámeních vaší distribuce. Pokud je tam uvedeno číslo CVE, oprava je obsažena, i když číslo verze působí starší. Pokud záznam chybí, vyjasněte stav dříve, než server označíte za záplatovaný.

**Co dělat, když pro mou verzi PHP záplata nevyjde?**  
PHP 8.1 a starší už oficiální aktualizace nedostávají. Nastavte přechodná opatření podle php.net, rychle naplánujte přechod na podporovanou verzi a podle doporučení BSI server v nouzi dočasně odpojte od sítě.

## Zdroje

- [php.net: bezpečnostní oznámení](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [php.net: podporované verze](https://www.php.net/supported-versions.php)
- [BSI IT-Grundschutz](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
