Porty jsou jedním z hlavních důvodů, proč se datové pakety dostanou na požadované místo určení. Slouží jako rozhraní mezi počítači a systémovými službami nebo programy a používají je síťové protokoly TCP a UDP. Spolu s IP adresou jsou operační systémy schopny zjistit, na který počítač a do které aplikace mají data odeslat.

Co je to skenování portů? Stručné vysvětlení

Skenování portů označuje cílený proces kontroly otevřených portů v počítačovém systému pomocí speciálních nástrojů. Než se pustíme do vysvětlování, co je to skenování portů, možná by bylo dobré nejprve se podívat na to, co jsou porty. Porty slouží jako rozhraní mezi aktivními programy a internetem. Používají se k směrování příchozích a odchozích datových paketů do správných aplikací a spravují je operační systémy.

Poznámka

Aby aplikace mohla komunikovat přes port, musí být tento port otevřený. Otevření portů však představuje riziko. Pokud má některá z aplikací, které port používají, bezpečnostní chyby, může port sloužit jako potenciální vstupní bod pro útočníky. Abyste minimalizovali riziko útoku, měli byste vždy vědět, které porty jsou ve vašem systému otevřené a které aplikace jsou s nimi spojené.

K provedení skenování portů v cílovém systému není nutné být v něm přihlášen. Stačí být k němu připojen prostřednictvím místní sítě nebo internetu. Pomocí skenerů portů můžete odesílat speciální datové pakety jako testy na různé porty. Poté obdržíte odpovědi nebo chybové zprávy, které analyzuje nástroj, který používáte. V závislosti na rozsahu funkcí skenovacího programu můžete získat informace o tom, které porty jsou otevřené a které uzavřené. Můžete také obdržet data o tom, které služby a/nebo aplikace příslušné porty používají.

Skenování portů nabízí správcům systémů velmi účinný prostředek pro monitorování datového provozu v síti. Pomocí skenování portů lze odfiltrovat potenciální slabiny a snížit tak zranitelnost systému. V některých případech může správcům pomoci vyřešit konkrétní problémy v síti. Navíc tyto nástroje nemají žádný znatelný vliv na výkon systémů, které skenují. Díky tomu je lze použít pro bezpečnostní opatření, aniž by bylo nutné se obávat nechtěných účinků na výkon systému.

Skenery portů jsou užitečné i pro domácí počítače. Jakmile začnete používat aplikace, které vyžadují připojení k internetu, porty se automaticky otevřou, pokud jim v tom nezabrání váš firewall. Skenování portů vám pomůže udržet si přehled a ukáže vám porty, které již nejsou potřebné. Ty pak můžete uzavřít, abyste snížili bezpečnostní rizika.

Jak funguje skenování portů?

Port scannery nabízejí mnoho různých metod. Většina z nich však využívá protokol TCP orientovaný na připojení. Abychom pochopili základní procesy, které se odehrávají během port scanningu, je užitečné podívat se na obecnou strukturu TCP připojení:

  • Tento proces, známý také jako třícestný handshake, začíná tím, že klient odešle paket SYN (synchronizace) do cílového portu.
  • Jakmile paket dorazí do aplikace, klient obdrží kombinovaný paket SYN/ACK (synchronizace/potvrzení), který potvrzuje, že bylo navázáno spojení.
  • Ve třetím a posledním kroku klient odešle paket ACK (potvrzení), který naváže spojení a umožní zahájení výměny dat.

Pokud je kontaktován uzavřený port, klient obdrží během druhého kroku paket RST (reset), čímž se handshake ukončí.

Vzhledem k tomu, že výměna dat s různými typy aplikací by byla obtížná a časově náročná, je skenování portů omezeno na jednoduché pokusy o navázání spojení, jak ukazují následující metody skenování.

TCP-SYN skenování

Cílem skenování TCP-SYN není navázání úplného TCP připojení. Proto se tento typ skenování běžně označuje jako skenování polootevřených portů. Pomocí skeneru portů tato metoda odesílá typické pakety SYN na jednotlivé porty a čeká na odpověď od cílového hostitele. Pokud hostitel odešle zpět paket SYN/ACK, signalizuje to, že příslušný port je otevřený a je možné navázat připojení. Pokud je odpovědí paket RST, znamená to, že port je uzavřen. Pokud není žádná odpověď, lze to pravděpodobně vysledovat zpět k paketovému filtru (např. firewallu), který se nachází proti proudu.

Skenování TCP-SYN není viditelné pro aplikace, které jsou hodnoceny, a z tohoto důvodu nevytváří žádná data protokolu. Proto se jim také říká skryté skenování.

Skenování TCP připojení

Pokud provedete skenování připojení pomocí skeneru portů, ve skutečnosti sami nevytváříte a neodesíláte datový paket. Místo toho používáte systémové volání connect. To je k dispozici téměř na všech operačních systémech. Pokud je pokus o připojení úspěšný, znamená to, že port je otevřený. Pokud pokus o připojení selže, znamená to, že port je uzavřený. Pokud bylo připojení úspěšně navázáno (tj. port byl otevřený), uvidíte v logových souborech aplikace, že byla použita tato technika skenování. Informace o použitých filtračních programech však nebudou poskytnuty. Pokud nemáte práva k odesílání surových datových paketů, může být TCP connect scan užitečnou alternativou k SYN skenům.

TCP-FIN, Xmas a Null skeny

Tyto tři metody skenování portů také umožňují rozlišovat mezi otevřenými a uzavřenými porty. Zde se používají dva základní pojmy, které jsou popsány v RFC 793„):

  1. Uzavřené porty by měly vždy odpovídat na pakety (pokud se nejedná o pakety RST) vlastním paketem RST.
  2. Otevřené porty by měly ignorovat všechny pakety, které nejsou označeny jako SYN, RST nebo ACK.

Při skenování systémů kompatibilních s RCF tyto skenovací metody využívají tyto principy pomocí vlastních paketů:

  • Null scan nepoužívá žádné speciální značky.
  • Při skenování FIN portový skener odesílá pakety FIN (finish).
  • Xmas skenování používá kombinaci značek FIN, PSH (push) a URG (urgent), díky čemuž pakety svítí jako vánoční stromeček.

Všechny tři metody skenování fungují stejným způsobem. Díky pravidlům RCF zajišťují testovací pakety, že uzavřené porty odpovídají pakety RST a otevřené porty neodpovídají vůbec. Ne všechny směrovače odesílají chybové zprávy, pokud je port filtrován, což může znamenat, že pokud se žádná zpráva neobjeví, jedná se o filtrovaný port (kromě možnosti, že se může jednat o otevřený port). Ačkoli je tato metoda mnohem diskrétnější než skenování SYN, nemusí fungovat správně, pokud systémy nedodržují RFC 793 dokonale. Výrazným příkladem je Windows.

UDP skenování

Při skenování UPD se prázdné hlavičky UDP bez dat odesílají na všechny prázdné porty. Pokud služba odpoví paketem UDP, je příslušný port otevřený. Pokud skener portů obdrží od routeru chybovou zprávu „Port nedosažitelný“ (typ 3, kód 3), rozpozná port jako uzavřený. Ostatní chybové zprávy slouží k informování uživatelů, že za blokování portů jsou zodpovědné filtry paketů. Problémem testování portů UDP je obrovské množství času, které vyžaduje. Důvodem je, že u mnoha systémů může z bezpečnostních důvodů trvat dlouho, než se zobrazí chybové zprávy. Navíc mnoho z těchto systémů odpovídá na porty pouze sporadicky. Jádro Linuxu omezuje počet zpráv za sekundu, což znamená, že úplné skenování 65 535 portů by trvalo přibližně 18 hodin.

Jaké port skenery existují?

Existuje mnoho různých skenerů, které se liší rozsahem nabízených funkcí. Většina z těchto nástrojů je k dispozici jako freeware nebo open-source. Mnohé z nich obsahují klasické programy příkazového řádku, které lze používat prostřednictvím samostatných grafických rozhraní. Navíc existuje mnoho online řešení, která uživatelům umožňují skenovat porty přímo v prohlížeči. Služby jako skener portů od DNS tools jsou omezené co do svých funkcí a nabízejí pouze možnost kontroly jednotlivých portů. Z tohoto důvodu jsou vhodnou volbou pro provádění rychlých kontrol na osobních počítačích.

Netcat

Netcat (zkratka: nc) byl vydán anonymním vývojářem známým jako „Hobbit“ v roce 1996. Původně byl napsán pro platformy Unix, ale nyní existuje mnoho možností portování pro systémy jako Windows, stejně jako další rozšíření jako GNU Netcat, OpenBSD Netcat, Cryptcat a Netcat6 (podporuje také IPv6), které jsou ve výchozím nastavení zahrnuty v mnoha distribucích Linuxu. Základní verze příkazového řádku je primárně určena k odesílání nebo čtení dat prostřednictvím síťových připojení TCP a UDP. Lze ji však použít i pro jednoduché úkoly skenování portů. To umožňuje uživatelům zkontrolovat stav portů 20 až 30 na určeném systému pomocí jednoduchých příkazů, jako je:

nc -zv localhost 20-30
bash

Kontrola portů UDP vyžaduje dodatečný parametr*-u*. Místo localhost můžete také použít název hostitele nebo IP adresu externího systému (pokud ji znáte).

Nmap

Podstatně výkonnějším nástrojem, který je zvláště užitečný pro skenování portů, je Network Mapper, často nazývaný Nmap. Nmap je navržen pro unixové systémy, je licencován pod GPL a od roku 2000 je k dispozici i pro systémy Windows (i když s omezeními). To znamená, že skenování TCP Connect zabere neúměrně mnoho času a skenování portů vlastního systému je možné pouze pomocí nepřímých cest. Obecně lze Nmap ovládat pomocí příkazového řádku. Zenmap naproti tomu disponuje vysoce výkonným grafickým rozhraním, které uživatelům umožňuje snadné používání tohoto síťového nástroje.

Za další vývoj programu a jeho funkcí pro skenování portů odpovídá tvůrce programu Nmap Gordon Lyon a tým vývojářů Nmap. Zejména technologie jako OS fingerprinting (tj. rozpoznávání operačního systému cílového hostitele) a čtení služeb, které se skrývají za porty, činí z programu Nmap jedno z nejpopulárnějších řešení pro skenování portů. Následující tabulka zobrazuje různé metody, které tento program nabízí:

Metody skenování portů Příkaz Nmap Popis
TCP connect-scan nmap -sT host Klasická kontrola pro neadministrátory
TCP Syn scan nmap -sS host Rychlé, nepozorované metody kontroly pro administrátory.
TCP FIN-/XMAS-/Null scan nmap -sF host nmap -sX host nmap -sN host Metody, které dokážou obejít firewally
TCP ping scan nmap -sP host Pro tradiční skenování portů; pomáhá zkontrolovat dostupnost hostitele.
TCP ACK skenování nmap -sA host Určuje doručené porty, ale nerozlišuje mezi otevřenými a uzavřenými porty.
Skenování TCP Window nmap -sW host Srovnatelné se skenováním ACK; umožňuje ověřit některé otevřené a uzavřené porty.
Skenování TCP Maimon nmap -sM host Kombinace skenování FIN a ACK.
TCP idle skenování nmap -sI zombie host host Nejméně nápadná, nejkomplexnější a tudíž nejpomalejší metoda skenování; probíhá přes třetí počítač, který je Nmap označen jako „zombie“.
Skenování UDP nmap -sU host Metody skenování pro bezpřipojové porty UDP
SCTP init skenování nmap -sY host Skenování portů pomocí SCTP, alternativy k TCP a UDP
Skenování IP protokolu nmap -sO host Žádné skenování portů; kontroluje, který protokol založený na IP je podporován v cílovém systému

Nmap i rozhraní Zenmap si můžete stáhnout pro svůj operační systém na oficiálních stránkách Nmap. K dispozici je jak aktuální (stabilní) verze, tak beta verze (vývojová).

Proč skenování portů není vždy legální

Kontrola portů není vždy legální. Jakmile dojde k pokusu oexploit (termín používaný odborníky na kybernetickou bezpečnost k označení činu, při kterém je zneužita bezpečnostní chyba nebo mezera), může osoba nebo skupina odpovědná za tento čin čelit potenciálním právním důsledkům.

Méně jasná je však právní situace v případě, kdy dojde k zastavení počítačového systému v důsledku intenzivního skenování portů. Vzhledem k vysoké frekvenci požadavků na připojení mohou takové metody monitorování představovat pro cílový systém výzvu, která někdy vede k jeho selhání. Správci cílového systému navíc mohou před selháním systému zaznamenat aktivity útočníků a interpretovat je jako první kroky útoku.

V takových případech je důležité nevylučovat právní důsledky. Pokud je cílový systém úmyslně přetížen, může to být považováno za DDoS útok, což může vést k tomu, že oběť útoku podnikne právní kroky.

Vždy byste se měli ujistit, že máte oprávnění provádět skenování portů v systému, a tuto techniku používat pouze z bezpečnostních důvodů, nikoli pouze z důvodu uspokojení své zvědavosti. Zde popsané metody skenování portů zdůrazňují, jak důležité je sledovat porty vlastního systému a počítačů v síti, stejně jako služby, které k nim přistupují.

Přejít do hlavního menu