Jak zkontrolovat, zda je port otevřený
Zda je port otevřený zvenčí, zjistíte jedině tak, že ho otestujete zvenčí: jediný výsledek, který něco znamená, je pokus o spojení z jiné sítě. Port, který odpovídá z vašeho vlastního počítače, může být přesto zablokovaný firewallem, bezpečnostní skupinou nebo hostingovým poskytovatelem dřív, než se k němu dostane jakýkoli vnější návštěvník.
Rychlý způsob: test zvenčí vaší sítě
Zadejte název hostitele nebo IP adresu a číslo portu do nástroje pro kontrolu portu a nechte ho otevřít spojení ze stroje někde jinde na internetu. Zda daná služba běží, je jiná otázka. Potřebujete vědět, zda se k ní odněkud dostane kdokoli, a test ze stejného serveru nebo ze stejné kancelářské sítě přesně přeskočí ty vrstvy, které problém obvykle způsobují.
Ruční způsob: nc, nmap a telnet
Z jakéhokoli jiného stroje v jiné síti tuto práci zvládnou tři nástroje:
nc -zv example.com 443 # single port, zero-I/O scan, verbose
nmap -Pn -p 22,80,443 example.com # several ports, reports open/closed/filtered
telnet example.com 25 # old but universal; Ctrl+] then "quit" to exit
nc (netcat) je nejjednodušší: -z znamená připojit se a hned se odpojit bez odesílání dat, -v vypíše výsledek. Odpoví "succeeded" nebo "refused / timed out" a nic víc. Sáhněte po nmap, když na rozdílu záleží, protože je to jediný ze tří nástrojů, který spolehlivě odliší odmítnuté spojení od zahozeného, a -Pn mu řekne, aby přeskočil vlastní ping sondu a otestoval port i tehdy, když hostitel na pingy neodpovídá. telnet je nainstalovaný téměř všude, a u textových protokolů jako SMTP nebo HTTP vám navíc ukáže uvítací hlášku, kterou služba posílá.
Zjistit, co poslouchá přímo na daném stroji, což je jiná otázka, umožní ss -tulpn na Linuxu nebo netstat -ano na Windows. Pokud port na stroji poslouchá, ale zvenčí je zavřený, blokace je někde mezi tím: firewall hostitele, cloudová bezpečnostní skupina, nebo poskytovatel.
Open, closed a filtered jsou tři různé odpovědi
- Open. Něco dokončilo TCP handshake. Služba poslouchá a spojení přijala.
- Closed. Hostitel odpověděl, ale odmítnutím (TCP reset). Stroj je dostupný a na daném portu nic neposlouchá. Jde o rychlou, jednoznačnou odpověď.
- Filtered. Nepřišlo vůbec nic. Firewall paket zahodil bez odpovědi, takže sonda vyprší časovým limitem. Jde o pomalou odpověď a znamená, že v cestě stojí firewall, ne že je služba nedostupná.
Closed ukazuje na konfiguraci služby. Filtered ukazuje na pravidlo firewallu, bezpečnostní skupinu nebo poskytovatele internetu blokujícího port. Řada poskytovatelů ve výchozím stavu blokuje odchozí port 25 a někteří blokují i 445 a další často zneužívané porty, což vytvoří výsledek filtered, který žádná konfigurace na straně serveru nezmění.
UDP je zvláštní případ. UDP nemá handshake, takže skener často nedokáže rozlišit otevřený port od filtrovaného, a ticho je validní odpovědí i od zdravé UDP služby. Berte výsledky UDP jako podstatně slabší důkaz než výsledky TCP.
Proč otevřený port neznamená fungující službu
Otevřený port dokazuje, že se dá navázat TCP spojení. O tom, co se stane dál, neříká nic. Všechny následující příklady jsou otevřené porty s rozbitou službou:
- Webový server přijímá spojení na 443, ale vrací 502, protože aplikace za ním spadla.
- Databáze poslouchá na svém portu, ale odmítá každé přihlášení.
- Poštovní server dokončí handshake a pak relaci ukončí dřív, než přijme zprávu.
- Služba, jejíž TLS certifikát včera v noci vypršel. Port se otevře a každý klient spojení odmítne.
- Port přesměrovaný na nesprávný vnitřní stroj, který přijímá spojení, ale neodpovídá ničím užitečným.
Kontrola portu je tedy první krok diagnózy, ne celá diagnóza. Jakmile port odpoví, zkontrolujte protokol: vyžádejte si stránku a přečtěte stavový kód, spusťte skutečné přihlášení, nebo odešlete testovací zprávu. Na pořadí záleží, protože kontrola portu rychle vyloučí celou síťovou vrstvu a umožní vám tam přestat hledat.
Krátký kontrolní seznam, když se port neotevře
- Ověřte, že služba na stroji skutečně poslouchá, a na správném rozhraní. Služba navázaná na
127.0.0.1je odkudkoli jinud nedostupná, a to je velmi častá příčina. - Zkontrolujte firewall hostitele (
ufw,firewalld, nebo firewall Windows). - Zkontrolujte cloudovou bezpečnostní skupinu nebo síťové ACL, což je samostatná vrstva odlišná od firewallu hostitele a často se na ni zapomíná.
- Zkontrolujte přesměrování portů na routeru nebo NAT, pokud stroj není přímo na veřejné adrese.
- Ověřte, že poskytovatel daný port neblokuje, zejména u poštovních portů.
- Otestujte to znovu z třetí sítě, abyste vyloučili vlastní odchozí filtrování.
Opakovaná kontrola podle plánu
Kontrola portu vám řekne stav právě teď, odkudkoli sonda běžela. Porty se samy od sebe obvykle nezavírají. Pravidla firewallu se mění, bezpečnostní skupiny se zpřísňují, certifikáty vyprší a služby po restartu přestanou znovu naskakovat, a nic z toho se samo neohlásí. Plánovaný monitoring portů se v intervalech znovu připojuje z více lokalit a upozorní, jakmile spojení přestane fungovat, což zachytí i případ, kdy je port dostupný z jednoho regionu a filtrovaný z jiného. Otestujte port hned teď pomocí nástroje pro kontrolu portu. Pokud se port otevře, ale TLS selže, pokračujte návodem jak zkontrolovat vypršení certifikátu.