# Serveri väljaminevate ühenduste kontroll

> Serveri väljaminevate ühenduste kontroll: seostage protsessid käskudega ss ja lsof, hinnake tundmatuid sihtkohti ja piirake andmevoolu väljundfiltriga.

Allikas: https://phpsos.de/et/blog/ausgehende-verbindungen-pruefen/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** Serveri väljaminevaid ühendusi kontrollite käsuga `ss -tunap` või `lsof -i`, mis seovad iga ühenduse protsessiga. Normaalsed on ühendused andmebaasi, meiliserveri, uuendusserverite ja tuntud liidestega. PHP või veebiserveri protsesside ühendused tundmatutesse sihtkohtadesse, ebatavalised pordid ja põhjuseta püsivad ühendused on hoiatusmärgid kaugjuhtimise või andmevoolu kohta. Püsivalt aitab väljundfiltreerimine, mis lubab ainult vajalikke sihtkohti.

## Miks pilk väljapoole nii palju reedab

Sissemurdmise otsimisel vaatavad enamik faile. Ründaja tahab oma ligipääsuga aga midagi ette võtta: tööriistu juurde laadida, käske vastu võtta, andmeid välja viia või kasutada serverit spämmiks või rünnakuteks teiste vastu. See kõik vajab väljaminevaid ühendusi.

Veebiserver loob ise vaid vähe ühendusi ja enamik neist on ettemääratavad: ta teeb päringuid andmebaasile, edastab kirju, kutsub makse- või saatmisliideseid ja toob uuendusi. Seetõttu jäävad võõrad ühendused siin eriti silma. Meie käsutuses olevate aruannete kohaselt kuuluvad väljaminevad ühendused sissemurdmise järgsete üldiste hoiatusmärkide hulka; spetsiaalselt PHP2Shelli jaoks kinnitatud kompromiteerimistunnuseid (Indicators of Compromise) ei ole. Täiendavaid tunnuseid võtab kokku [Kas olen juba kompromiteeritud?](https://phpsos.de/et/php2shell/bin-ich-gehackt-anzeichen/).

## Väljaminevate ühenduste loetlemine ja protsessidega seostamine

Järgmised käsud ainult loevad. Käivitage need root-na, muidu puuduvad protsessiandmed.

```bash
# Kõik loodud TCP-ühendused koos protsessiga
ss -tnp state established

# TCP ja UDP, kaasa arvatud kuulavad teenused
ss -tunap

# Ühendused programmi ja kasutaja kaupa, ilma nimelahenduseta
lsof -i -n -P | grep -v LISTEN

# Ainult veebiserveri kasutajate protsesside ühendused
lsof -i -n -P -u www-data 2>/dev/null
```

Jälgige väljundis kolme veergu: protsess, sihtaadress koos pordiga ja kasutaja. Ühendus `php-fpm`-ilt andmebaasi porti 3306 on normaalne. Tundmatu nimega programmi ühendus kataloogist `/tmp` võõra aadressi ebatavalisele pordile ei ole. Millise kasutaja all PHP töötab, sõltub distributsioonist ja paneelist.

## Normaalne või kahtlane? Liigitus

| Tähelepanek | Pigem normaalne | Pigem kahtlane |
|---|---|---|
| Sihtkoht | oma andmebaas, meiliserver, tuntud API-d, uuendusserverid | tundmatud aadressid ilma seoseta rakendusega |
| Protsess | php-fpm, veebiserver, meili- ja uuendusteenused | tundmatud programmid, protsessid kataloogidest `/tmp` või `/dev/shm` |
| Port | 443, 3306, 5432, 587 | ebatavalised kõrged pordid, IRC-le omased pordid |
| Kestus | lühike, päringutega kooskõlas | püsivalt avatud, ka öösel külastajateta |
| Maht | väike ja ühtlane | äkilised tipud väljamineva andmemahu puhul |
| Meililiiklus | saatmine ettenähtud meiliserveri kaudu | palju otseühendusi pordile 25 |

Palju ühendusi pordile 25 viitab spämmi saatmisele; selle kohta on eraldi artikkel, [Server saadab spämmi](https://phpsos.de/et/blog/server-verschickt-spam/).

## Tundmatu sihtkoha hindamine

Võõras aadress nimekirjas ei ole veel tõend. Enne otsustamist selgitage, kuhu ühendus viib ja kes selle lõi. Needki sammud ei muuda midagi:

1. **Määrake protsess:** võtke `ss`-ist PID ja kontrollige käsuga `ls -l /proc/PID/exe` ning käsureaga, milline programm selle taga on.
2. **Otsige sihtkohta:** käsuga `dig -x <IP>` nimi ja käsuga `whois <IP>` võrguoperaator.
3. **Võrrelge rakendusega:** küsige arendajatelt või teenusepakkujalt, kas teie rakendus seda teenust kasutab.
4. **Kontrollige kulgu:** tulemüüri- ja võrguprotokollid näitavad, alates millest ühendus eksisteerib ja kui palju andmeid on liikunud.
5. **Kindlustage tulemused:** salvestage väljundid kellaajaga enne, kui midagi lõpetate või blokeerite.

Arvestage mitmetähenduslike tulemustega. Paljud legitiimsed teenused töötavad suurte pilve- ja CDN-pakkujate juures, kelle aadressid ei võimalda kliendi kohta järeldusi teha. Vastupidi kasutavad ka ründajad renditud pilveservereid. Tuntud võrguoperaator ei ole seega ei andestus ega tõend; otsustav on, kas protsess ja eesmärk sobivad teie rakendusega.

Hetktõmmis käsuga `ss` näitab ainult seda, mis parajasti avatud on. Lühikesi ühendusi, mis luuakse minutitempos, näete ainult protokollides. Seetõttu on tulemüüri- või voo (flow) protokollid andmevoolu küsimuses sageli olulisemad kui pilk serverile endale.

> **Oluline:**
> Kui andmed võisid teie serverist lahkuda ja on mõjutatud isikuandmed, võib IKÜM-i kohane teavitamiskohustus üldjuhul 72 tunni jooksul kehtida. Selgitage see varakult välja oma andmekaitsespetsialistiga; taust lehel [IKÜM-i teavitamiskohustus 72 tunni jooksul](https://phpsos.de/et/compliance/dsgvo-meldepflicht-72-stunden/). See ei ole õigusnõu.

## DNS-i ja konteinereid ärge unustage

Mitte iga andmevoog ei vaja nähtavat ühendust võõra aadressiga. DNS-i kaudu toimuvad nimelahendused lähevad teie andmekeskuse resolverisse ja jäävad käsu `ss` nimekirjas vaevu silma. Ründajad võivad andmed pakkida pikkadesse, juhuslikuna näivatesse alamdomeenidesse ja viia need nii DNS-päringutega välja. Vihjeid sellele annavad resolveri protokollid: ebatavaliselt palju päringuid samale võõrale domeenile, väga pikad nimed või päringud ajal, mil keegi veebisaiti ei kasuta.

Kui teie rakendused töötavad konteinerites, näeb host konteinerite ühendusi sageli ainult konteinerivõrgu liiklusena. Kontrollige siis igat konteinerit eraldi, niivõrd kui tööriistad seal olemas on, või hinnake ühendusi hosti ja tulemüüri tasemel.

```bash
# Ühendused konteineri sees (kui ss on pildis olemas)
docker exec <container> ss -tnp 2>/dev/null

# Hostis: tuuma poolt jälgitavad ühendused, kui conntrack on paigaldatud
sudo conntrack -L 2>/dev/null | head -50
```

## Väljamineva liikluse püsiv piiramine

Kõige tõhusam ennetus on väljundfiltreerimine: server tohib jõuda ainult nende sihtkohtadeni, mida ta tõesti vajab, kõik muu blokeeritakse ja logitakse. Ründajatel on seeläbi oluliselt raskem tööriistu juurde laadida või andmeid välja tõmmata, isegi kui nad suudavad koodi käivitada.

Tee sinna algab vajalike sihtkohtade nimekirjast, mille tuletate ülal kogutud ühendustest. Seejärel järgneb faas, milles blokeeritud ühendusi ainult logitakse, enne kui blokeering teravaks lülitatakse. Makseteenused, uuendusserverid ja muutuvate aadressidega liidesed vajavad seejuures erilist hoolt. Kuidas veebiserverite tulemüür tervikuna üles ehitatakse, kirjeldab [Veebiserveri tulemüür: avage ainult vajalikud pordid](https://phpsos.de/et/blog/firewall-fuer-webserver/).

## Kuidas PHP SOS konkreetselt aitab?

- **Ühenduste kontroll:** Seome kõik aktiivsed ühendused protsesside ja eesmärkidega ning hindame tundmatuid sihtkohti.
- **Andmevoolu hindamine:** Hindame tulemüüri- ja võrguprotokolle ning selgitame, kas ja millal andmeid edastati.
- **Väljundi piiramine:** Koostame koos teiega lubatud sihtkohtade nimekirja ja seadistame väljundfiltreerimise etapiviisiliselt.
- **Püsiv jälgimine:** [Turvaseirega](https://phpsos.de/et/leistungen/security-monitoring/) teatame uutest või ebatavalistest ühendustest.


## Korduma kippuvad küsimused

**Millised väljaminevad ühendused on veebiserveri puhul normaalsed?**  
Tüüpilised on ühendused andmebaasiga, meiliserveriga, makse- ja saatmisteenustega, uuendusserveritega ja rakenduse tuntud liidestega. Kõik, mida ei saa ühegi sellise eesmärgiga seostada, väärib täpsemat pilku.

**Kuidas näen, milline protsess ühenduse lõi?**  
Käsuga ss -tunap või lsof -i -n -P root-na. Mõlemad näitavad iga ühenduse juures protsessi ID-d ja programmi nime. Nii tunnete ära, kas ühendus pärineb PHP-st, veebiserverist või võõrast programmist.

**Kas tundmatu ühendus tähendab, et andmeid on välja voolanud?**  
Mitte tingimata. See on aga vihje, mis tuleb selgitada. Kas ja milliseid andmeid edastati, saab sageli vastata ainult tulemüüri- või võrguprotokollide abil. Kui on mõjutatud isikuandmed, võivad kehtida teavitamiskohustused.

**Kas veebiserver peaks üldse väljaminevaid ühendusi tegema tohtima?**  
Ainult nendesse sihtkohtadesse, mida ta vajab. Väljundfiltreerimine, mis blokeerib kõik muu, raskendab ründajatel tööriistade juurdelaadimist ja andmete väljavoolu oluliselt. Seda tuleb aga hoolikalt testida.

## Allikad

- [BSI: Saksamaa föderaalne infoturbeamet](https://www.bsi.bund.de/)
- [IKÜM art 33: teavitamine järelevalveasutusele](https://dsgvo-gesetz.de/art-33-dsgvo/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
