# Provjeriti odlazne veze poslužitelja

> Provjerite odlazne veze poslužitelja: pomoću ss i lsof pridružite procese, procijenite nepoznata odredišta i ograničite odljev podataka.

Izvor: https://phpsos.de/hr/blog/ausgehende-verbindungen-pruefen/  
Stanje: 25.10.2026  
Pružatelj: PHP SOS, PHP hitna pomoć i sigurnost poslužitelja. Hitna pomoć putem WhatsAppa: https://wa.me/491736494914?text=Pozdrav%20PHP%20SOS%2C%20trebamo%20pomo%C4%87%20s%20na%C5%A1im%20PHP%20poslu%C5%BEiteljem.%20Tvrtka%3A%20%E2%80%A6%20Web-stranica%3A%20%E2%80%A6

**Ukratko:** Odlazne veze poslužitelja provjeravate naredbama `ss -tunap` ili `lsof -i`, koje svaku vezu pridružuju procesu. Normalne su veze prema bazi podataka, poslužitelju e-pošte, poslužiteljima za ažuriranje i poznatim sučeljima. Veze PHP procesa ili procesa web-poslužitelja prema nepoznatim odredištima, neuobičajeni portovi i trajne veze bez povoda znakovi su upozorenja na daljinsko upravljanje ili odljev podataka. Trajno pomaže filtriranje izlaza koje dopušta samo potrebna odredišta.

## Zašto pogled prema van toliko otkriva

Pri traženju provale većina gleda datoteke. No napadač sa svojim pristupom želi nešto postići: dohvatiti alate, primati naredbe, iznijeti podatke ili poslužitelj koristiti za spam ili napade na druge. Sve to traži veze prema van.

Web-poslužitelj sam od sebe uspostavlja samo nekoliko veza, a većina je predvidljiva: upituje bazu podataka, predaje poštu, poziva sučelja plaćanja ili dostave i dohvaća ažuriranja. Zato strane veze ovdje osobito upadaju u oči. Prema izvješćima koja su nam dostupna odlazne veze spadaju među opće znakove upozorenja nakon provale; potvrđenih Indicators of Compromise posebno za PHP2Shell nema. Daljnje znakove sažima članak [Jesam li već kompromitiran?](https://phpsos.de/hr/php2shell/bin-ich-gehackt-anzeichen/).

## Popisati odlazne veze i pridružiti ih procesima

Sljedeće naredbe samo čitaju. Izvedite ih kao root, inače nedostaju podaci o procesima.

```bash
# Sve uspostavljene TCP veze s procesom
ss -tnp state established

# TCP i UDP uključujući usluge koje osluškuju
ss -tunap

# Veze po programu i korisniku, bez razrješavanja imena
lsof -i -n -P | grep -v LISTEN

# Samo veze procesa korisnika web-poslužitelja
lsof -i -n -P -u www-data 2>/dev/null
```

U ispisu pazite na tri stupca: proces, odredišnu adresu s portom i korisnika. Veza `php-fpm` prema bazi podataka na portu 3306 je normalna. Veza programa nepoznatog imena iz `/tmp` prema stranoj adresi na neuobičajenom portu nije. Pod kojim korisnikom PHP radi, ovisi o distribuciji i panelu.

## Normalno ili sumnjivo? Razvrstavanje

| Opažanje | Prije normalno | Prije sumnjivo |
|---|---|---|
| Odredište | vlastita baza podataka, poslužitelj e-pošte, poznati API-ji, poslužitelji za ažuriranje | nepoznate adrese bez veze s aplikacijom |
| Proces | php-fpm, web-poslužitelj, usluge pošte i ažuriranja | nepoznati programi, procesi iz `/tmp` ili `/dev/shm` |
| Port | 443, 3306, 5432, 587 | neuobičajeni visoki portovi, portovi tipični za IRC |
| Trajanje | kratko, u skladu sa zahtjevima | trajno otvorena, i noću bez posjetitelja |
| Količina | mala i ujednačena | iznenadni skokovi u odlaznom volumenu podataka |
| Promet e-pošte | slanje preko predviđenog poslužitelja e-pošte | mnogo izravnih veza na port 25 |

Mnogo veza na portu 25 upućuje na slanje spama; za to postoji zaseban članak, [Poslužitelj šalje spam](https://phpsos.de/hr/blog/server-verschickt-spam/).

## Procijeniti nepoznato odredište

Strana adresa na popisu još nije dokaz. Prije odluke razjasnite kamo veza vodi i tko ju je uspostavio. I ti koraci ništa ne mijenjaju:

1. **Odrediti proces:** Uzeti PID iz `ss` i pomoću `ls -l /proc/PID/exe` i naredbenog retka provjeriti koji program stoji iza.
2. **Potražiti odredište:** Pomoću `dig -x <IP>` utvrditi naziv, a pomoću `whois <IP>` operatera mreže.
3. **Uskladiti s aplikacijom:** Pitajte razvojnog programera ili pružatelja usluge koristi li Vaša aplikacija tu uslugu.
4. **Provjeriti tijek:** Zapisnici vatrozida i mreže pokazuju otkad veza postoji i koliko je podataka teklo.
5. **Osigurati rezultate:** Ispise spremiti s vremenom prije nego što išta prekinete ili blokirate.

Računajte s višeznačnim rezultatima. Mnoge legitimne usluge rade kod velikih cloud i CDN pružatelja, čije adrese ne dopuštaju zaključak o klijentu. Obrnuto, i napadači koriste unajmljene cloud poslužitelje. Poznati operater mreže stoga nije ni otkaz uzbune ni dokaz; odlučuje odgovaraju li proces i svrha Vašoj aplikaciji.

Trenutna snimka naredbom `ss` pokazuje samo ono što je upravo otvoreno. Kratke veze koje se uspostavljaju u minutnom taktu vidite samo u zapisnicima. Zato su zapisnici vatrozida ili tokova za pitanje odljeva podataka često važniji od pogleda na sam poslužitelj.

> **Važno:**
> Ako su podaci možda napustili Vaš poslužitelj i pogođeni su osobni podaci, može postojati obveza prijave prema GDPR-u, u pravilu u roku od 72 sata. Razjasnite to rano sa službenikom za zaštitu podataka; pozadinu donosi članak [Obveza prijave prema GDPR-u u 72 sata](https://phpsos.de/hr/compliance/dsgvo-meldepflicht-72-stunden/). Ovo nije pravni savjet.

## Ne zaboraviti DNS i kontejnere

Ne treba svaki odljev podataka vidljivu vezu prema stranoj adresi. Razrješavanja imena putem DNS-a idu prema resolveru Vašeg podatkovnog centra i u popisu naredbe `ss` jedva upadaju u oči. Napadači mogu podatke pakirati u duge poddomene naizgled slučajnog izgleda i tako ih iznositi putem DNS upita. Naznake daju zapisnici resolvera: neobično mnogo upita prema istoj stranoj domeni, vrlo dugi nazivi ili upiti u vrijeme kad nitko ne koristi web-stranicu.

Ako Vaše aplikacije rade u kontejnerima, host veze kontejnera često vidi samo kao promet mreže kontejnera. Tada provjerite u svakom kontejneru zasebno, ako su alati tamo dostupni, ili analizirajte veze na razini hosta i vatrozida.

```bash
# Veze unutar kontejnera (ako je ss sadržan u image-u)
docker exec <container> ss -tnp 2>/dev/null

# Na hostu: veze koje prati jezgra, ako je conntrack instaliran
sudo conntrack -L 2>/dev/null | head -50
```

## Trajno ograničiti odlazni promet

Najučinkovitija prevencija je filtriranje izlaza: poslužitelj smije doseći samo odredišta koja doista treba, sve ostalo se blokira i bilježi. Napadačima je time znatno teže dohvaćati alate ili izvlačiti podatke, čak i ako mogu izvršavati kod.

Put do toga počinje popisom potrebnih odredišta koji izvodite iz gore prikupljenih veza. Zatim slijedi faza u kojoj se blokirane veze samo bilježe, prije nego se blokada aktivira. Usluge plaćanja, poslužitelji za ažuriranje i sučelja s promjenjivim adresama traže pritom osobitu pažnju. Kako se vatrozid za web-poslužitelje gradi u cjelini, opisuje članak [Vatrozid za web-poslužitelje: otvoriti samo potrebne portove](https://phpsos.de/hr/blog/firewall-fuer-webserver/).

## Kako PHP SOS konkretno pomaže?

- **Provjeriti veze:** Sve aktivne veze pridružujemo procesima i svrhama te procjenjujemo nepoznata odredišta.
- **Procijeniti odljev podataka:** Analiziramo zapisnike vatrozida i mreže i razjašnjavamo jesu li i kada podaci preneseni.
- **Ograničiti izlaz:** S Vama izrađujemo popis dopuštenih odredišta i postupno uvodimo filtriranje izlaza.
- **Trajno nadzirati:** Uz [sigurnosni nadzor](https://phpsos.de/hr/leistungen/security-monitoring/) javljamo nove ili neobične veze.


## Česta pitanja

**Koje su odlazne veze kod web-poslužitelja normalne?**  
Tipične su veze prema bazi podataka, poslužitelju e-pošte, uslugama plaćanja i dostave, poslužiteljima za ažuriranje i poznatim sučeljima aplikacije. Sve što se ne može pridružiti nekoj od tih svrha zaslužuje pomniji pogled.

**Kako vidim koji je proces uspostavio vezu?**  
Naredbom ss -tunap ili lsof -i -n -P kao root. Obje uz svaku vezu prikazuju ID procesa i naziv programa. Tako prepoznajete potječe li veza od PHP-a, web-poslužitelja ili stranog programa.

**Znači li nepoznata veza da su podaci iscurili?**  
Nužno ne. No to je naznaka koju treba razjasniti. Jesu li i koji podaci preneseni, često se može odgovoriti samo zapisnicima vatrozida ili mreže. Ako su pogođeni osobni podaci, mogu postojati obveze prijave.

**Smije li web-poslužitelj uopće imati odlazne veze?**  
Samo prema odredištima koja mu trebaju. Filtriranje izlaza koje blokira sve ostalo napadačima znatno otežava dohvaćanje alata i odljev podataka. No mora se pažljivo testirati.

## Izvori

- [BSI: Savezni ured za informacijsku sigurnost (Njemačka)](https://www.bsi.bund.de/)
- [GDPR čl. 33: prijava nadzornom tijelu](https://dsgvo-gesetz.de/art-33-dsgvo/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
