Tri opsega portova
- 0–1023, dobro poznati: IANA ih dodeljuje standardnim servisima. Na Unixu na njima može da sluša samo root (ili proces sa CAP_NET_BIND_SERVICE).
- 1024–49151, registrovani: dodeljuju se na zahtev proizvođačima i projektima (3306 MySQL, 5432 PostgreSQL, 6379 Redis). Svaki korisnik može da ih veže.
- 49152–65535, dinamički / efemerni: koriste se za klijentsku stranu konekcija. Linux zapravo podrazumevano koristi 32768–60999 (
net.ipv4.ip_local_port_range).
Portovi koji nikad ne smeju biti okrenuti internetu
Redis (6379), Memcached (11211), MongoDB (27017), Elasticsearch (9200), Docker API (2375), etcd (2379) i većina baza podataka dolaze bez autentifikacije ili sa slabim podrazumevanim podešavanjima, i neprekidno se skeniraju. Vežite ih za 127.0.0.1 ili privatni interfejs, stavite ih iza VPN-a ili firewall pravila, i nikad se ne oslanjajte na to da ih niko neće naći. Shodan ih sve indeksira u roku od nekoliko sati.
Kako saznati šta sluša
ss -tulpn # Linux: TCP/UDP soketi koji slušaju, sa imenima procesa
sudo lsof -i :8080 # koji proces drži port 8080
nc -zv host 22 # da li je udaljeni port otvoren? Port koji je „otvoren“ u ss, ali nedostupan spolja, obično blokira firewall (ufw, nftables, cloud security group, ili Cloudflare koji proksira samo 80/443).
Pitanja
Koja je razlika između TCP i UDP portova?
To su odvojeni prostori imena: TCP 53 i UDP 53 su različiti soketi, iako DNS koristi oba. Servis može da sluša na jednom, drugom ili oba.
Zašto ne mogu da vežem port 80 bez root-a?
Portovi ispod 1024 su privilegovani na Unixu. Pokrenite servis na visokom portu iza reverse proxy-ja, dodelite binarnom fajlu CAP_NET_BIND_SERVICE (setcap), ili koristite systemd socket aktivaciju.
Šta znači „address already in use“?
Drugi proces već sluša na tom portu (ss -tulpn pokazuje koji), ili je nedavno zatvoreni soket još u TIME_WAIT. SO_REUSEADDR, ili čekanje od minut, rešava ovo drugo.
Koje portove koristi HTTP/3?
UDP 443. HTTP/3 radi preko QUIC-a, koji je zasnovan na UDP-u; pregledači ga otkrivaju kroz Alt-Svc zaglavlje ili HTTPS DNS zapis.