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
- Serveryje:
ss -tulpn | grep :PRIEVADAS— ar tarnyba klauso? - Jei neklauso — paleiskite arba sukonfigūruokite tarnybą.
- Jei klauso, bet iš išorės nepasiekiama — patikrinkite ugniasienę (
ufw status,iptables -L). - Iš išorės:
nmap -p PRIEVADAS IP— būsenafilteredrodo 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ą.