# Kontrola odchádzajúcich spojení servera

> Kontrola odchádzajúcich spojení servera: priradiť procesy pomocou ss a lsof, vyhodnotiť neznáme ciele a obmedziť únik dát výstupným filtrom.

Zdroj: https://phpsos.de/sk/blog/ausgehende-verbindungen-pruefen/  
Stav: 25.10.2026  
Poskytovateľ: PHP SOS, Núdzová pomoc pri PHP a bezpečnosť serverov. Okamžitá pomoc cez WhatsApp: https://wa.me/491736494914?text=Dobr%C3%BD%20de%C5%88%2C%20PHP%20SOS%2C%20potrebujeme%20pomoc%20s%20na%C5%A1%C3%ADm%20serverom%20s%20PHP.%20Spolo%C4%8Dnos%C5%A5%3A%20%E2%80%A6%20Web%3A%20%E2%80%A6

**Stručne:** Odchádzajúce spojenia servera skontrolujete pomocou `ss -tunap` alebo `lsof -i`, ktoré priradia každé spojenie procesu. Normálne sú spojenia na databázu, poštový server, aktualizačné servery a známe rozhrania. Spojenia procesov PHP alebo webového servera na neznáme ciele, neobvyklé porty a trvalé spojenia bez príčiny sú varovné signály diaľkového ovládania alebo úniku dát. Trvalo pomáha výstupné filtrovanie, ktoré povoľuje len potrebné ciele.

## Prečo pohľad von toľko prezrádza

Pri hľadaní vlámania sa väčšina pozerá na súbory. Útočník však chce so svojím prístupom niečo začať: doťahovať nástroje, prijímať príkazy, vyvážať dáta alebo využívať server na spam či útoky na iných. To všetko potrebuje spojenia smerom von.

Webový server nadväzuje sám od seba len málo spojení a väčšina z nich je predvídateľná: dopytuje databázu, odovzdáva poštu, volá platobné alebo prepravné rozhrania a sťahuje aktualizácie. Cudzie spojenia tu preto obzvlášť upútajú. Podľa správ, ktoré máme k dispozícii, patria odchádzajúce spojenia medzi všeobecné varovné signály po vlámaní; potvrdené indikátory kompromitácie (Indicators of Compromise) špeciálne pre PHP2Shell neexistujú. Ďalšie príznaky zhŕňa [Som už kompromitovaný?](https://phpsos.de/sk/php2shell/bin-ich-gehackt-anzeichen/).

## Vypísať odchádzajúce spojenia a priradiť ich procesom

Nasledujúce príkazy len čítajú. Spúšťajte ich ako root, inak chýbajú údaje o procesoch.

```bash
# Všetky nadviazané spojenia TCP s procesom
ss -tnp state established

# TCP a UDP vrátane počúvajúcich služieb
ss -tunap

# Spojenia podľa programu a používateľa, bez prekladu mien
lsof -i -n -P | grep -v LISTEN

# Len spojenia procesov používateľov webového servera
lsof -i -n -P -u www-data 2>/dev/null
```

Vo výstupe sledujte tri stĺpce: proces, cieľovú adresu s portom a používateľa. Spojenie `php-fpm` na databázu na porte 3306 je normálne. Spojenie programu s neznámym názvom z `/tmp` na cudziu adresu na neobvyklom porte nie je. Pod akým používateľom PHP beží, závisí od distribúcie a panela.

## Normálne alebo podozrivé? Zaradenie

| Pozorovanie | Skôr normálne | Skôr podozrivé |
|---|---|---|
| Cieľ | vlastná databáza, poštový server, známe API, aktualizačný server | neznáme adresy bez vzťahu k aplikácii |
| Proces | php-fpm, webový server, poštové a aktualizačné služby | neznáme programy, procesy z `/tmp` alebo `/dev/shm` |
| Port | 443, 3306, 5432, 587 | neobvyklé vysoké porty, porty typické pre IRC |
| Trvanie | krátke, zodpovedá požiadavkám | trvalo otvorené, aj v noci bez návštevníkov |
| Objem | malý a rovnomerný | náhle špičky v odchádzajúcom objeme dát |
| Poštová prevádzka | odosielanie cez určený poštový server | mnoho priamych spojení na port 25 |

Mnoho spojení na porte 25 naznačuje odosielanie spamu; k tomu je samostatný článok, [Server rozosiela spam](https://phpsos.de/sk/blog/server-verschickt-spam/).

## Vyhodnotiť neznámy cieľ

Cudzia adresa v zozname ešte nie je dôkaz. Skôr než sa rozhodnete, objasnite, kam spojenie vedie a kto ho nadviazal. Ani tieto kroky nič nemenia:

1. **Určiť proces:** Vziať PID zo `ss` a pomocou `ls -l /proc/PID/exe` a príkazového riadka skontrolovať, aký program za tým stojí.
2. **Vyhľadať cieľ:** Pomocou `dig -x <IP>` zistiť názov a pomocou `whois <IP>` prevádzkovateľa siete.
3. **Porovnať s aplikáciou:** Opýtajte sa vývojára alebo dodávateľa, či vaša aplikácia túto službu používa.
4. **Skontrolovať priebeh:** Protokoly firewallu a siete ukážu, odkedy spojenie existuje a koľko dát sa prenieslo.
5. **Zabezpečiť výsledky:** Uložiť výstupy s časom skôr, než niečo ukončíte alebo zablokujete.

Počítajte s nejednoznačnými výsledkami. Mnohé legitímne služby bežia u veľkých poskytovateľov cloudu a CDN, ktorých adresy nedovoľujú vyvodiť záver o zákazníkovi. Naopak, aj útočníci používajú prenajaté servery v cloude. Známy prevádzkovateľ siete teda nie je ani odvolaním poplachu, ani dôkazom; rozhodujúce je, či proces a účel zodpovedajú vašej aplikácii.

Momentka pomocou `ss` ukazuje len to, čo je práve otvorené. Krátke spojenia, ktoré sa nadväzujú v minútovom takte, uvidíte iba v protokoloch. Preto sú protokoly firewallu alebo flow pri otázke úniku dát často dôležitejšie než pohľad na samotný server.

> **Dôležité:**
> Ak dáta mohli váš server opustiť a sú dotknuté osobné údaje, môže existovať oznamovacia povinnosť podľa GDPR, spravidla do 72 hodín. Vyjasnite to včas so svojím zodpovedným pracovníkom pre ochranu údajov; súvislosti v časti [Oznamovacia povinnosť podľa GDPR do 72 hodín](https://phpsos.de/sk/compliance/dsgvo-meldepflicht-72-stunden/). Nejde o právne poradenstvo.

## Nezabudnite na DNS a kontajnery

Nie každý únik dát potrebuje viditeľné spojenie na cudziu adresu. Preklady mien cez DNS idú na resolver vášho dátového centra a v zozname `ss` sotva upútajú. Útočníci môžu zabaliť dáta do dlhých, náhodne pôsobiacich subdomén a tak ich vyniesť cez dopyty DNS. Náznaky poskytujú protokoly resolvera: nezvyčajne mnoho dopytov na tú istú cudziu doménu, veľmi dlhé mená alebo dopyty v čase, keď web nikto nepoužíva.

Ak vaše aplikácie bežia v kontajneroch, hostiteľ vidí spojenia kontajnerov často len ako prevádzku siete kontajnerov. Skontrolujte potom každý kontajner osobitne, pokiaľ sú tam nástroje k dispozícii, alebo vyhodnoťte spojenia na úrovni hostiteľa a firewallu.

```bash
# Spojenia v rámci kontajnera (ak je ss súčasťou obrazu)
docker exec <container> ss -tnp 2>/dev/null

# Na hostiteľovi: spojenia sledované jadrom, ak je nainštalovaný conntrack
sudo conntrack -L 2>/dev/null | head -50
```

## Odchádzajúcu prevádzku trvalo obmedziť

Najúčinnejšou prevenciou je výstupné filtrovanie: server smie dosiahnuť len ciele, ktoré skutočne potrebuje, všetko ostatné sa zablokuje a zaprotokoluje. Pre útočníkov je tak výrazne ťažšie doťahovať nástroje alebo sťahovať dáta, aj keď môžu vykonávať kód.

Cesta k tomu začína zoznamom potrebných cieľov, ktorý odvodíte z vyššie zozbieraných spojení. Potom nasleduje fáza, v ktorej sa zablokované spojenia len protokolujú, a až potom sa blokovanie spustí naostro. Platobné služby, aktualizačné servery a rozhrania s meniacimi sa adresami vyžadujú pritom obzvlášť starostlivosť. Ako sa firewall pre webové servery buduje ako celok, opisuje [Firewall pre webové servery: otvárajte len potrebné porty](https://phpsos.de/sk/blog/firewall-fuer-webserver/).

## Ako konkrétne pomáha PHP SOS?

- **Skontrolovať spojenia:** Všetky aktívne spojenia priradíme procesom a účelom a neznáme ciele vyhodnotíme.
- **Odhadnúť únik dát:** Vyhodnotíme protokoly firewallu a siete a objasníme, či a kedy sa dáta preniesli.
- **Obmedziť výstup:** S vami vypracujeme zoznam povolených cieľov a výstupné filtrovanie zavedieme postupne.
- **Sledovať trvalo:** Prostredníctvom [bezpečnostného monitoringu](https://phpsos.de/sk/leistungen/security-monitoring/) hlásime nové alebo neobvyklé spojenia.


## Časté otázky

**Ktoré odchádzajúce spojenia sú pri webovom serveri normálne?**  
Typické sú spojenia na databázu, poštový server, platobné a prepravné služby, aktualizačné servery a známe rozhrania aplikácie. Všetko, čo sa nedá priradiť k žiadnemu z týchto účelov, si zaslúži bližší pohľad.

**Ako vidím, ktorý proces spojenie nadviazal?**  
Pomocou ss -tunap alebo lsof -i -n -P ako root. Oba ukazujú ku každému spojeniu ID procesu a názov programu. Tak rozpoznáte, či spojenie pochádza od PHP, webového servera alebo cudzieho programu.

**Znamená neznáme spojenie, že unikli dáta?**  
Nie nevyhnutne. Je to však náznak, ktorý treba objasniť. Či a aké dáta sa preniesli, sa dá často zodpovedať len pomocou protokolov firewallu alebo siete. Ak sú dotknuté osobné údaje, môžu existovať oznamovacie povinnosti.

**Mal by webový server vôbec smieť nadväzovať odchádzajúce spojenia?**  
Len na ciele, ktoré potrebuje. Výstupné filtrovanie, ktoré blokuje všetko ostatné, výrazne sťažuje útočníkom doťahovanie nástrojov a únik dát. Treba ho však starostlivo otestovať.

## Zdroje

- [BSI: nemecký Spolkový úrad pre informačnú bezpečnosť](https://www.bsi.bund.de/)
- [GDPR čl. 33: oznámenie dozornému orgánu](https://dsgvo-gesetz.de/art-33-dsgvo/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
