Atvērto portu pārbaude: ss, netstat, nmap, telnet

Atvērtos portus pārbauda no divām pusēm: lokāli — kuri servisi klausās (ss -tulpn, netstat -tulpn), un no ārpuses — kuri reāli ir pieejami caur ugunsmūri (nmap, telnet). Atšķirība ir svarīga: ports serverī var klausīties, bet būt slēgts ugunsmūrī. Zemāk — precīzas komandas abām pārbaudēm.

Lokālā pārbaude: ko klausās serveris

ss — mūsdienīgais rīks

Parādīt visus klausošos TCP un UDP portus ar procesiem:

ss -tulpn

Karodziņu skaidrojums:

Karodziņš Nozīme
-t TCP soketi
-u UDP soketi
-l tikai klausošie (listening)
-p parādīt procesu
-n skaitliski porti bez vārdu atpazīšanas

Atrast, kas aizņēmis konkrētu portu:

ss -tulpn | grep :443

netstat — klasiskais variants

Ja instalēta pakotne net-tools:

netstat -tulpn

Ārējā pārbaude: kas pieejams no ārpuses

Lokālā pārbaude neņem vērā ugunsmūri. Lai uzzinātu, vai ports ir pieejams no interneta, skenējiet serveri no cita resursdatora.

nmap

Pārbaudīt populārāko portu kopu:

nmap 203.0.113.10

Pārbaudīt konkrētu portu:

nmap -p 443 203.0.113.10

Skenēt diapazonu un noteikt servisus:

nmap -p 1-1000 -sV 203.0.113.10

Portu stāvokļi nmap izvadē:

Stāvoklis Ko nozīmē
open ports klausās un ir pieejams
closed pieejams, bet neviens neklausās
filtered paketes bloķē ugunsmūris

telnet — ātra viena porta pārbaude

telnet 203.0.113.10 443

Ja savienojums izveidots, ports ir atvērts. Ja parādās «Connection refused» — ports ir slēgts vai neklausās, bet iestrēgšana parasti nozīmē ugunsmūra bloķēšanu.

Analogs PowerShell vidē bez telnet:

Test-NetConnection -ComputerName 203.0.113.10 -Port 443

Pārbaude ar nc (netcat):

nc -zv 203.0.113.10 443

Kas un kur ir pieslēdzies: aktīvie savienojumi

Bez klausošajiem portiem noderīgi redzēt arī izveidotos savienojumus — piemēram, lai saprastu, kas šobrīd ir pieslēdzies serverim:

ss -tnp state established

Saskaitīt savienojumu skaitu pa katru attālo IP adresi (vienkārša anomāliju kontrole):

ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn

Windows vidē līdzīgu ainu sniedz:

Get-NetTCPConnection -State Established | Sort-Object RemoteAddress

Populāro servisu standarta porti

Diagnostikā noder atcerēties, kuri porti pēc noklusējuma piešķirti kuriem servisiem:

Ports Serviss
22 SSH
80 HTTP
443 HTTPS
3306 MySQL/MariaDB
5432 PostgreSQL
3389 RDP

Ja uz porta klausās nevis tas serviss, kuru gaidījāt, tas ir iemesls pārbaudīt konfigurāciju vai sistēmu uz svešiem procesiem.

Tipiska diagnostikas secība

  1. Serverī: ss -tulpn | grep :PORTS — vai serviss klausās?
  2. Ja neklausās, palaidiet vai konfigurējiet servisu.
  3. Ja klausās, bet no ārpuses nav pieejams, pārbaudiet ugunsmūri (ufw status, iptables -L).
  4. No ārpuses: nmap -p PORTS IP — stāvoklis filtered norāda uz ugunsmūri.

Biežākie jautājumi

ss rāda portu, bet no ārpuses tas nav pieejams — kāpēc? Serviss klausās, bet ienākošo datu plūsmu griež ugunsmūris. Pārbaudiet ufw status vai iptables noteikumus un atveriet vajadzīgo portu.

Ar ko ss ir labāks par netstat? ss ir ātrāks un ietilpst aktuālajā iproute2 pakotnē. netstat ir novecojis un bieži nav instalēts pēc noklusējuma.

nmap rāda filtered — ko tas nozīmē? Paketes līdz portam nenonāk ugunsmūra dēļ (serverī vai pakalpojumu sniedzēja tīklā). Ports nav «slēgts», bet filtrēts.

Vai drīkst skenēt svešu serveri? Skenējiet tikai savas sistēmas vai ar īpašnieka skaidru atļauju — citādi tas var pārkāpt noteikumus un likumu.

Kā pārbaudīt portu, neinstalējot nmap? Izmantojiet telnet IP PORTS, nc -zv IP PORTS vai Test-NetConnection PowerShell vidē.

Nepieciešams serveris ar pilnu kontroli pār portiem un ugunsmūri? Izvietojiet VPS ar Linux sadaļā VPS noma vai pasūtiet serveru administrēšanu.

Kristaps Bērziņš