V síti je port zajímavou funkcí. Je to způsob, jak síťový provoz identifikuje cílovou aplikaci nebo službu. Každý proces / služba získá svůj jedinečný port. Port bude vždy spojen s IP adresou hostitele spolu s protokolem.
Toto je moje oblíbená metafora, která popisuje, co je to port. Představte si loď naloženou nákladem, která se vydá do vzdálené země. Jaké informace jsou potřebné k správnému dosažení cíle? Pro jednoduchost řekněme, že potřebuje zemi (IP adresu) a přístav loď zakotví.
V této příručce se podívejte, jak vypsat seznam otevřených portů v systému Linux.
Porty na Linuxu
Porty fungují jako koncový bod komunikace. Je to 16bitové číslo (0 až 65535 v desítkové soustavě). I když je rozsah velký, pro snadné použití jsou porty rozděleny do tří kategorií. Každá kategorie je označena jako rozsah hodnoty portu:
- 0 až 1023: Jedná se o „dobře známé“ porty, známé také jako „systémové“ porty, které jsou vyhrazeny pro systémové procesy, které nabízejí širokou škálu síťových služeb. Chcete-li vytvořit vazbu se „dobře známým“ portem, musí mít proces oprávnění superuživatele.
- 1024 až 49151: Jedná se o „registrované“ porty, známé také jako „uživatelské“ porty, které IANA určuje pro konkrétní služby. Na požádání k nim může mít přístup přístup. V případě většiny systémů nevyžaduje použití těchto portů žádné oprávnění superuživatele.
- 49152 až 65535: Jedná se o „dynamické“ porty, známé také jako „soukromé“ porty. Tyto porty nelze zaregistrovat u IANA. Tyto porty jsou otevřené pro použití pro soukromé nebo přizpůsobené služby a mohou být také automaticky přiděleny jako pomíjivé porty (krátkodobé porty používané IP).
V systému Linux existuje několik způsobů kontroly otevřených portů. Ve výchozím nastavení zůstane jakýkoli port zavřený, pokud ho aplikace nepoužívá. Pokud je port otevřený, musí být přiřazen ke službě / procesu.
Seznam otevřených portů
Je snazší určit, které porty se používají, než které porty jsou otevřené. Proto v následující části budou uvedeny metody pro seznam všech portů, které se aktuálně používají. V systému Linux existuje pro tuto úlohu více nástrojů. Většina z nich je zabudována v jakékoli linuxové distribuci.
Zjištění, které porty jsou aktuálně otevřené, může být užitečné v různých scénářích. Je možné nakonfigurovat vyhrazený port pro určitou aplikaci. Otevřený port může být také silnou známkou narušení sítě.
Následující metody jsou demonstrovány na Ubuntu 20.04.1 LTS.
Seznam protokolů a otevřených portů z / etc / services
Soubor / etc / services obsahuje informace o aktuálně spuštěných službách. Je to velký soubor, takže můžete být ohromeni.
$ cat / etc / services | méně
Seznam otevřených portů pomocí netstat
Nástroj netstat je nástroj pro zobrazení síťových připojení pro TCP, směrovací tabulky a různá síťová rozhraní. Nabízí také statistiky síťového protokolu. Pomocí netstatu můžeme vypsat všechny otevřené porty systému.
Spusťte následující příkaz netstat:
$ netstat -atu
Pojďme rychle rozdělit všechny příznaky, které jsme použili v tomto příkazu.
- A: Řekne netstatu, aby zobrazil všechny zásuvky
- t: Řekne netstatu, aby vypsal porty TCP
- u: Řekne netstatu, aby vypsal porty UDP
Zde je další variace příkazu netstat:
$ netstat -lntu
V příkazu jsou použity dva nové příznaky. Co tím myslí?
- l: Řekne netstat, aby tiskl pouze poslechové zásuvky
- n: Řekne netstatu, aby zobrazil číslo portu
Chcete-li zobrazit PID procesu, který používá port, použijte příznak „-p“:
$ netstat -lntup
Seznam otevřených portů pomocí ss
Nástroj ss je nástroj pro vyšetřování soketu. Jeho použití je podobné jako netstat.
Chcete-li zobrazit seznam otevřených portů, spusťte následující příkaz ss:
$ ss -lntu
Příznaky jsou podobné jako netstat. Funkce, které popisují, jsou také docela podobné.
- l: Řekne ss, aby zobrazila poslechové zásuvky
- n: Říká SS, aby se nepokoušela vyřešit názvy služeb
- t: Řekne ss, aby zobrazovala zásuvky TCP
- u: Řekne ss, aby zobrazovala UDP zásuvky
Seznam otevřených portů pomocí lsof
Příkaz lsof je seznam otevřených souborů. Lze jej však také použít k zobrazení otevřených portů.
Spusťte následující příkaz lsof:
$ lsof -i
Chcete-li získat otevřené porty konkrétního protokolu (TCP, UDP atd.) poté jej definujte za příznakem „-i“, použijte:
$ lsof -i
Seznam otevřených portů pomocí nmap
Nástroj nmap je výkonný nástroj pro průzkum sítě a zabezpečení / skenování portů. Může hlásit všechny otevřené porty v systému.
Chcete-li zobrazit seznam otevřených portů TCP, spusťte následující příkaz nmap. Zde je adresa IP hostitelského počítače:
$ sudo nmap -sT -p- localhost
Zde jsou dvě části argumentu příkazu.
- -Svatý: Tato část říká nmap, aby vyhledával porty TCP.
- -p- : Toto říká nmap, aby vyhledal všech 65535 portů. Pokud není použit, pak nmap ve výchozím nastavení prohledá pouze 1000 portů.
Pokud potřebujete zobrazit seznam otevřených portů UDP, spusťte následující příkaz nmap:
$ sudo nmap -sU -p- localhost
Chcete-li získat otevřené porty TCP i UDP, použijte následující příkaz:
$ sudo nmap -n -PN -sT -sU -p- localhostSeznam otevřených portů pomocí netcat
Nástroj netcat je nástroj příkazového řádku pro čtení a zápis dat přes síťová připojení přes protokoly TCP a UDP. Tento nástroj lze také použít pro výpis otevřených portů. Může provádět testy na konkrétním portu nebo na řadě portů.
Následující příkaz netcat prohledá port od 1 do 1000. Ve výchozím nastavení provede příkaz netcat kontrolu protokolu TCP:
$ nc -z -v localhost 1-1000
Lze jej také rozšířit na celý seznam možných portů:
$ nc -z -v localhost 1-65535
Pojďme rychle rozdělit vlajky.
- z: Řekne netcat, aby vyhledával pouze otevřené porty bez odesílání dat
- proti: Říká netcat, aby běžel v podrobném režimu
Chcete-li získat pouze otevřené porty z tohoto seznamu, filtrujte výstup pomocí grep pro výraz „uspěl“.
$ nc -z -v localhost 0-65535 2> & 1 | grep uspělChcete-li provést skenování na protokolu UDP, přidejte příznak „-u“.
$ nc -z -v -u localhost 0-65535 2> & 1 | grep uspělZávěrečné myšlenky
Jak bylo prokázáno, v systému Linux existuje spousta způsobů, jak vyhledat otevřené porty. Navrhuji vyzkoušet všechny metody, než se rozhodnete, kterou z nich zvládnete. Pokud pravidelně používáte určitý nástroj, jako je netcat nebo nmap, bude nejpřínosnější zvládnutí přidružených metod.
Šťastný výpočetní výkon!