# Hardening serveru pro webové servery s PHP

> Hardening serveru pro PHP: oddělíme weby, bezpečně nastavíme php.ini, oprávnění a přístupy a zdokumentujeme každou změnu. Pro vaše webové servery.

Zdroj: https://phpsos.de/cs/leistungen/server-haertung/  
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 chce provést hardening serveru pro PHP, dbá na to, aby jedna zranitelnost neotevřela celý server. Weby od sebe oddělíme, PHP a webový server bezpečně nastavíme, omezíme oprávnění a přístupy a každou změnu zdokumentujeme. Škody pak zůstanou menší, i kdyby se něco přece stalo.

## Proč je hardening po PHP2Shell důležitější

PHP2Shell ukázal, jak rychle se zranitelnost přímo v PHP stane problémem pro všechny weby na serveru. S CVE-2026-109618 a CVE-2026-109619 mohou útočníci spouštět kód bez přihlášení. Záplata tyto dveře zavře. Hardening odpovídá na jinou otázku: co může udělat ten, kdo se přesto dostane dovnitř, ať touto, nebo příští zranitelností?

Na nezabezpečeném serveru často všechny weby běží pod stejným uživatelem, PHP smí spouštět systémové příkazy a přístupové údaje leží čitelné pro všechny procesy. Průnik do malého vedlejšího webu pak dosáhne až k e-shopu. Dobrý hardening tyto oblasti odděluje. Není to jednorázová akce, ale základní stav, který se musí zachovat při každém novém webu a každé změně verze.

## Hardening serveru pro PHP: co konkrétně upravujeme

### Izolace každého webu

Každý web dostane vlastního systémového uživatele a vlastní pool PHP-FPM. Pomocí `open_basedir` a vhodných oprávnění k souborům vidí aplikace jen svůj vlastní adresář. Více najdete na stránce [open_basedir a izolace každého webu](https://phpsos.de/cs/ratgeber/open-basedir/).

### Bezpečná konfigurace PHP

Soubor php.ini a konfiguraci poolu nastavíme tak, aby aplikace nemohly bezpečnostně důležité hodnoty samy přepsat. Ukázka, jak to může vypadat v poolu FPM:

```ini
; Hodnoty v poolu FPM pevně zadat, nelze je měnit přes ini_set()
php_admin_flag[expose_php] = off
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[open_basedir] = /var/www/kunde1/:/tmp/
php_admin_flag[session.upload_progress.enabled] = off
php_admin_flag[allow_url_include] = off
```

Které funkce lze navíc zablokovat, závisí na aplikaci. Pokyny najdete na stránkách [Bezpečná konfigurace php.ini](https://phpsos.de/cs/ratgeber/php-ini-sicher-konfigurieren/) a [Správné použití disable_functions](https://phpsos.de/cs/ratgeber/disable-functions/).

### Oprávnění k souborům a zápis

Webový server smí zapisovat jen tam, kde je to nutné, například do složky s nahranými soubory. Ve složkách s nahranými soubory se zakáže spouštění PHP. Programový kód patří jinému uživateli, než pod kterým běží PHP. Zásady vysvětluje stránka [Oprávnění k souborům na webovém serveru](https://phpsos.de/cs/ratgeber/dateirechte-webserver/).

### Přístupy, služby a protokoly

SSH jen s klíčem, administrátorská rozhraní s dvoufázovým ověřením, nepotřebné služby a porty zavřené. Logy se uchovávají a zálohují tak, aby po incidentu stále existovaly. Zálohy kontrolujeme z hlediska možnosti obnovy.

### Webový server a bezpečnostní hlavičky

K hardeningu patří i samotný webový server: skrýt údaje o verzích, vypnout výpisy adresářů, zablokovat přístup ke konfiguračním souborům, zálohám a souborům správy verzí a administrátorské oblasti navíc zabezpečit, například povolením jen určitých IP adres. Bezpečnostní hlavičky, jako je Content-Security-Policy nebo HSTS, chrání návštěvníky vašeho webu v prohlížeči.

## Co při inventuře často nacházíme

Mnoho slabin se opakuje server od serveru. Typické je více webů pod společným uživatelem, veřejně dostupná rozhraní databází, staré testovací instalace v podsložkách, zapomenuté verze PHP vedle aktuální a zálohy uložené ve webovém adresáři, které lze stáhnout. Často také chybí jakékoli protokolování přihlášení, nebo se logy po několika dnech mažou.

Žádný z těchto bodů sám o sobě není pozoruhodný. Dohromady ale rozhodují o tom, zda průnik zůstane omezen na jeden web, nebo zasáhne celý server.

## Jak konkrétně pomáhá PHP SOS?

1. **Inventura:** Zjistíme operační systém, webový server, verze PHP, weby, uživatele, otevřené služby a existující zálohy.
2. **Plán opatření:** Obdržíte prioritizovaný seznam s náročností a možnými dopady u každého bodu. Vy rozhodnete, co se provede.
3. **Provedení po krocích:** Konfigurace měníme po dohodě, po každém kroku testujeme weby a zaznamenáváme, jak lze každou změnu vrátit zpět.
4. **Kontrola:** Po provedení ověříme účinek, například zda web opravdu už nemůže číst cizí adresáře.
5. **Předání:** Obdržíte dokumentaci nového stavu, kterou pochopí i váš poskytovatel hostingu nebo agentura.

## Co získáte a co potřebujeme

Získáte zprávu o hardeningu s výchozí situací, provedenými opatřeními, vědomě ponechanými otevřenými body s odůvodněním a doporučením pro pravidelnou kontrolu. Změny v konfiguračních souborech jsou dohledatelně zdokumentovány.

Od vás potřebujeme:

- **přístup root nebo administrátora** k serveru, u panelů navíc přístup do panelu
- **seznam aplikací** a jejich zvláštností, například nahrávání souborů, rozhraní, cron úlohy
- **technickou kontaktní osobu**, která po změnách potvrdí funkce
- **servisní okna** pro restarty
- **aktuální zálohu** nebo zadání, aby se předtím vytvořila

## Co neslibujeme

Hardening neučiní server nenapadnutelným. Zmenšuje plochu pro útok a omezuje škody, ale nenahrazuje aktualizace ani sledování. Nezáplatovaná verze PHP zůstává zranitelná, bez ohledu na to, jak dobře je nastaveno vše ostatní. Proto hardening spojujeme se [službou záplatování PHP](https://phpsos.de/cs/leistungen/php-patch-service/) a poté doporučujeme průběžnou péči prostřednictvím [smlouvy o bezpečnostní údržbě](https://phpsos.de/cs/leistungen/security-wartungsvertrag/).

U sdíleného hostingu lze mnoho věcí jen těžko nastavit, protože konfiguraci určuje poskytovatel hostingu. Ukážeme vám pak, co je v rámci vašeho balíčku možné a kde by dával smysl přechod na vlastní nebo spravovaný server.


## Časté dotazy

**Co znamená provést hardening serveru?**  
Hardening znamená vypnout nebo omezit vše, co není pro provoz nutné. Patří k tomu nadbytečné služby, příliš široká oprávnění, otevřené porty a nebezpečná výchozí nastavení. Cílem je, aby jedna chyba neotevřela hned celý server.

**Zabránil by hardening zranitelnosti PHP2Shell?**  
Ne, proti zranitelnosti přímo v PHP pomáhá jen záplata. Hardening ale omezuje, čeho může útočník po úspěšném průniku dosáhnout, například zda se dostane k jiným webům nebo přístupovým údajům.

**Nerozbije hardening můj web?**  
Riziko existuje, pokud se nastavení mění bez testu. Změny nasazujeme postupně, po každém kroku ověřujeme funkce a zaznamenáváme, jak lze každou změnu vrátit zpět.

**Jak často by se měl hardening přezkoumat?**  
Nejpozději po větších aktualizacích, při změně verze PHP nebo při nových aplikacích na serveru. Rozumná je pravidelná kontrola v rámci průběžné údržby.

## Zdroje

- [BSI IT-Grundschutz](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [php.net: bezpečnostní oznámení](https://www.php.net/)
