Atvirų prievadų tikrinimas: ss, netstat, nmap, telnet

Atviri prievadai (portai) tikrinami iš dviejų pusių: vietoje — kurios tarnybos klauso (ss -tulpn, netstat -tulpn), ir iš išorės — kurie iš tikrųjų pasiekiami pro ugniasienę (nmap, telnet). Skirtumas svarbus: prievadas gali būti klausomas serveryje, bet uždarytas ugniasienės. Toliau — tikslios komandos abiem patikroms.

Vietinė patikra: ko klauso serveris

ss — šiuolaikinis įrankis

Parodyti visus klausomus TCP ir UDP prievadus su procesais:

ss -tulpn

Vėliavėlių reikšmės:

Vėliavėlė Reikšmė
-t TCP lizdai
-u UDP lizdai
-l tik klausantys (listening)
-p rodyti procesą
-n skaitiniai prievadai be vardų sprendimo

Rasti, kas užėmė konkretų prievadą:

ss -tulpn | grep :443

netstat — klasikinis variantas

Jei įdiegtas paketas net-tools:

netstat -tulpn

Išorinė patikra: kas pasiekiama iš išorės

Vietinė patikra neatsižvelgia į ugniasienę. Kad sužinotumėte, ar prievadas pasiekiamas iš interneto, skenuokite serverį iš kito kompiuterio.

nmap

Patikrinti populiarių prievadų rinkinį:

nmap 203.0.113.10

Patikrinti konkretų prievadą:

nmap -p 443 203.0.113.10

Skenuoti diapazoną ir nustatyti tarnybas:

nmap -p 1-1000 -sV 203.0.113.10

Prievadų būsenos nmap išvestyje:

Būsena Ką reiškia
open prievadas klauso ir pasiekiamas
closed pasiekiamas, bet niekas neklauso
filtered paketus blokuoja ugniasienė

telnet — greita vieno prievado patikra

telnet 203.0.113.10 443

Jei ryšys užmegztas — prievadas atviras. Jei „Connection refused“ — uždarytas arba niekas neklauso, o užstrigimas paprastai reiškia ugniasienės blokavimą.

Atitikmuo PowerShell aplinkoje be telnet:

Test-NetConnection -ComputerName 203.0.113.10 -Port 443

Patikra su nc (netcat):

nc -zv 203.0.113.10 443

Kas ir kur prisijungęs: aktyvūs ryšiai

Be klausomų prievadų naudinga matyti užmegztus ryšius — pavyzdžiui, kad suprastumėte, kas prisijungęs prie serverio dabar:

ss -tnp state established

Suskaičiuoti ryšių kiekį pagal kiekvieną nutolusį IP (paprasta anomalijų patikra):

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

Windows sistemoje panašų vaizdą duoda:

Get-NetTCPConnection -State Established | Sort-Object RemoteAddress

Standartiniai populiarių tarnybų prievadai

Diagnozuojant naudinga prisiminti, kurie prievadai pagal numatymą priskirti kurioms paslaugoms:

Prievadas Tarnyba
22 SSH
80 HTTP
443 HTTPS
3306 MySQL/MariaDB
5432 PostgreSQL
3389 RDP

Jei prievade klauso ne ta tarnyba, kurios tikitės, — verta patikrinti konfigūraciją arba sistemą dėl pašalinių procesų.

Tipinė diagnostikos eiga

  1. Serveryje: ss -tulpn | grep :PRIEVADAS — ar tarnyba klauso?
  2. Jei neklauso — paleiskite arba sukonfigūruokite tarnybą.
  3. Jei klauso, bet iš išorės nepasiekiama — patikrinkite ugniasienę (ufw status, iptables -L).
  4. Iš išorės: nmap -p PRIEVADAS IP — būsena filtered rodo ugniasienę.

Dažni klausimai

ss rodo prievadą, o iš išorės jis nepasiekiamas — kodėl? Tarnyba klauso, bet gaunamąjį srautą blokuoja ugniasienė. Patikrinkite ufw status arba iptables taisykles ir atidarykite reikiamą prievadą.

Kuo ss geresnis už netstat? ss greitesnis ir įeina į aktualų paketą iproute2. netstat pasenęs ir dažnai nebūna įdiegtas pagal numatymą.

nmap rodo filtered — ką tai reiškia? Paketai prievado nepasiekia dėl ugniasienės (serveryje arba tiekėjo tinkle). Prievadas ne „uždarytas“, o filtruojamas.

Ar galima skenuoti svetimą serverį? Skenuokite tik savo sistemas arba turėdami aiškų savininko leidimą — kitaip galite pažeisti taisykles ir įstatymus.

Kaip patikrinti prievadą neįdiegus nmap? Naudokite telnet IP PRIEVADAS, nc -zv IP PRIEVADAS arba Test-NetConnection PowerShell aplinkoje.

Reikia serverio su visiška prievadų ir ugniasienės kontrole? Paleiskite VPS su Linux skiltyje VPS nuoma arba užsakykite Serverių administravimą.

Kristaps Bērziņš