Aktuální situace: PHP2Shell. Dvě kritické zranitelnosti PHP (CVSS 9.2) umožňují spustit škodlivý kód bez přihlášení. Záplaty od 21. 10. 2026.Co nyní udělat →

Kontrola odchozích spojení serveru

Webový server především odpovídá na požadavky. Naváže-li sám spojení na neznámé cíle, může to znamenat řízení útočníkem nebo odliv dat. Jak odchozí provoz zkontrolovat a omezit.

Stav 5 min čteníDetekce a forenzní analýza

Stručně: Odchozí spojení serveru zkontrolujete pomocí ss -tunap nebo lsof -i, které každé spojení přiřadí k procesu. Normální jsou spojení s databází, poštovním serverem, aktualizačními servery a známými rozhraními. Spojení procesů PHP nebo webového serveru na neznámé cíle, neobvyklé porty a trvalá spojení bez příčiny jsou varovnými signály dálkového ovládání nebo odlivu dat. Trvale pomáhá filtrování odchozího provozu, které povoluje jen potřebné cíle.

Proč pohled ven tolik prozradí

Při hledání průniku se většina dívá na soubory. Útočník ale chce se svým přístupem něco podniknout: stáhnout nástroje, přijímat příkazy, dostat ven data nebo využít server pro spam či útoky na jiné. To vše vyžaduje spojení směrem ven.

Webový server sám od sebe naváže jen málo spojení a většina z nich je předvídatelná: dotazuje databázi, předává poštu, volá platební nebo přepravní rozhraní a stahuje aktualizace. Cizí spojení tu proto zvlášť vyniknou. Podle zpráv, které máme k dispozici, patří odchozí spojení k obecným varovným signálům po průniku; potvrzené indikátory kompromitace (Indicators of Compromise) speciálně pro PHP2Shell neexistují. Další příznaky shrnuje článek Jsem už kompromitován?.

Odchozí spojení vypsat a přiřadit procesům

Následující příkazy jen čtou. Spouštějte je jako root, jinak chybí údaje o procesech.

# Všechna navázaná spojení TCP s procesem
ss -tnp state established

# TCP a UDP včetně naslouchajících služeb
ss -tunap

# Spojení podle programu a uživatele, bez překladu jmen
lsof -i -n -P | grep -v LISTEN

# Jen spojení procesů uživatelů webového serveru
lsof -i -n -P -u www-data 2>/dev/null

Ve výstupu dávejte pozor na tři sloupce: proces, cílovou adresu s portem a uživatele. Spojení php-fpm s databází na portu 3306 je normální. Spojení programu s neznámým názvem z /tmp na cizí adresu na neobvyklém portu normální není. Pod jakým uživatelem PHP běží, závisí na distribuci a panelu.

Normální, nebo podezřelé? Zařazení

Pozorování Spíše normální Spíše podezřelé
Cíl vlastní databáze, poštovní server, známá API, aktualizační servery neznámé adresy bez vztahu k aplikaci
Proces php-fpm, webový server, poštovní a aktualizační služby neznámé programy, procesy z /tmp nebo /dev/shm
Port 443, 3306, 5432, 587 neobvyklé vysoké porty, porty typické pro IRC
Délka krátká, odpovídá požadavkům trvale otevřené, i v noci bez návštěvníků
Množství malé a rovnoměrné náhlé špičky odchozího objemu dat
Poštovní provoz odesílání přes určený poštovní server mnoho přímých spojení na portu 25

Mnoho spojení na portu 25 ukazuje na rozesílání spamu; k tomu existuje samostatný článek, Server rozesílá spam.

Neznámý cíl posoudit

Cizí adresa v seznamu ještě není důkaz. Než se rozhodnete, zjistěte, kam spojení vede a kdo je navázal. I tyto kroky nic nemění:

  1. Určit proces: Vzít PID z ss a pomocí ls -l /proc/PID/exe a příkazové řádky zkontrolovat, který program za tím stojí.
  2. Dohledat cíl: Pomocí dig -x <IP> zjistit název a pomocí whois <IP> provozovatele sítě.
  3. Porovnat s aplikací: Zeptejte se vývojáře nebo dodavatele, zda vaše aplikace tuto službu používá.
  4. Zkontrolovat průběh: Protokoly firewallu a sítě ukazují, od kdy spojení existuje a kolik dat proteklo.
  5. Zajistit výsledky: Výstupy uložit s časem dřív, než cokoli ukončíte nebo zablokujete.

Počítejte s nejednoznačnými výsledky. Mnoho legitimních služeb běží u velkých poskytovatelů cloudu a CDN, jejichž adresy neumožňují usuzovat na zákazníka. Naopak i útočníci používají pronajaté cloudové servery. Známý provozovatel sítě tedy není ani odvoláním poplachu, ani důkazem; rozhoduje, zda proces a účel odpovídají vaší aplikaci.

Momentka pomocí ss ukazuje jen to, co je právě otevřené. Krátká spojení navazovaná v minutovém taktu uvidíte jen v protokolech. Proto jsou protokoly firewallu nebo toků pro otázku odlivu dat často důležitější než pohled na samotný server.

Důležité

Mohla-li data váš server opustit a jsou dotčeny osobní údaje, může zpravidla existovat oznamovací povinnost podle GDPR do 72 hodin. Ujasněte si to včas s pověřencem pro ochranu osobních údajů; souvislosti v článku Oznamovací povinnost podle GDPR do 72 hodin. Nejde o právní poradenství.

Nezapomenout na DNS a kontejnery

Ne každý odliv dat vyžaduje viditelné spojení na cizí adresu. Překlady jmen přes DNS jdou na resolver vašeho datacentra a v seznamu ss sotva upoutají pozornost. Útočníci mohou data zabalit do dlouhých, náhodně vypadajících subdomén a vynášet je tak pomocí dotazů DNS. Vodítka poskytují protokoly resolveru: neobvykle mnoho dotazů na tutéž cizí doménu, velmi dlouhé názvy nebo dotazy v dobách, kdy web nikdo nepoužívá.

Běží-li vaše aplikace v kontejnerech, vidí hostitel spojení kontejnerů často jen jako provoz sítě kontejnerů. Pak zkontrolujte každý kontejner zvlášť, pokud jsou tam nástroje k dispozici, nebo vyhodnoťte spojení na úrovni hostitele a firewallu.

# Spojení uvnitř kontejneru (pokud je ss obsaženo v image)
docker exec <container> ss -tnp 2>/dev/null

# Na hostiteli: spojení sledovaná jádrem, pokud je nainstalován conntrack
sudo conntrack -L 2>/dev/null | head -50

Odchozí provoz trvale omezit

Nejúčinnější prevencí je filtrování odchozího provozu: Server smí dosáhnout jen cílů, které skutečně potřebuje, vše ostatní se zablokuje a zaprotokoluje. Pro útočníky je tím výrazně těžší stahovat nástroje nebo odčerpávat data, i když mohou spouštět kód.

Cesta k tomu začíná seznamem potřebných cílů, který odvodíte z výše shromážděných spojení. Poté následuje fáze, kdy se zablokovaná spojení jen protokolují, než se zákaz zostří. Platební služby, aktualizační servery a rozhraní s proměnnými adresami vyžadují zvláštní péči. Jak se firewall pro webové servery celkově staví, popisuje Firewall pro webové servery: otevírat jen nutné porty.

Jak konkrétně pomáhá PHP SOS?

  • Zkontrolovat spojení: Všechna aktivní spojení přiřazujeme procesům a účelům a neznámé cíle posuzujeme.
  • Odhadnout odliv dat: Vyhodnocujeme protokoly firewallu a sítě a objasňujeme, zda a kdy byla data přenesena.
  • Omezit odchozí provoz: S vámi sestavíme seznam povolených cílů a filtrování odchozího provozu zavádíme postupně.
  • Trvale sledovat: S Security Monitoring hlásíme nová nebo neobvyklá spojení.

Časté dotazy

Která odchozí spojení jsou u webového serveru normální?

Typická jsou spojení s databází, poštovním serverem, platebními a přepravními službami, aktualizačními servery a známými rozhraními aplikace. Vše, co nelze přiřadit žádnému z těchto účelů, zaslouží bližší pohled.

Jak zjistím, který proces spojení navázal?

Pomocí ss -tunap nebo lsof -i -n -P jako root. Oba ukazují u každého spojení ID procesu a název programu. Poznáte tak, zda spojení pochází z PHP, webového serveru nebo cizího programu.

Znamená neznámé spojení, že data unikla?

Nutně ne. Je to ale vodítko, které je nutné objasnit. Zda a jaká data byla přenesena, lze často zodpovědět jen protokoly firewallu nebo sítě. Jsou-li dotčeny osobní údaje, mohou existovat oznamovací povinnosti.

Měl by webový server vůbec smět odchozí spojení?

Jen na cíle, které potřebuje. Filtrování odchozího provozu, které vše ostatní zablokuje, útočníkům podstatně ztěžuje stahování nástrojů a odliv dat. Musí se ale pečlivě otestovat.

Zdroje

Okamžitý kontakt

Každá hodina se počítá. Napište nám hned.

Stručně popište systém, verzi PHP a pozorování. Ozveme se, vyjasníme situaci a budeme pracovat na dálku, dokud nebude incident uzavřen a zdokumentován.

Okamžitá pomoc