Как да изброя отворените портове в Linux?

How List Open Ports Linux



В мрежата портът е интересна функция. Това е начин мрежовият трафик да идентифицира приложението или услугата дестинация. Всеки процес/услуга получава своя уникален порт. Портът винаги ще бъде свързан с IP адреса на хоста заедно с протокола.

Това е любимата ми метафора, за да опиша какво е пристанището. Представете си кораб, натоварен с товар, който ще пътува до далечна земя. Каква информация е необходима за правилното достигане до дестинацията? За простота, да речем, че се нуждае от държавата (IP адреса) и пристанище корабът ще акостира.







В това ръководство проверете как да изброите отворените портове в Linux.



Портове в Linux

Пристанищата действат като крайна точка на комуникация. Това е 16-битово число (от 0 до 65535 в десетичен знак). Докато обхватът е голям, за по -лесно използване, портовете са категоризирани в три категории. Всяка категория е означена като диапазон на стойността на порта:



  • 0 до 1023: Това са добре познатите портове, известни още като системни портове, които са запазени за системни процеси, които предлагат голямо разнообразие от мрежови услуги. За да се свърже с добре познат порт, процесът трябва да има привилегии на суперпотребител.
  • 1024 до 49151: Това са регистрираните портове, известни още като потребителски портове, определени от IANA за специфични услуги. При поискване процесът може да има достъп до тях. В случая на повечето системи не се изискват привилегии на суперпотребител, за да се използват тези портове.
  • 49152 до 65535: Това са динамичните портове, известни още като частни портове. Тези портове не могат да бъдат регистрирани в IANA. Тези портове са отворени за използване за частни или персонализирани услуги и могат също така да бъдат автоматично разпределени като ефемерни портове (краткотрайни портове, използвани от IP).

В Linux има няколко начина за проверка на отворените портове. По подразбиране всеки порт ще остане затворен, освен ако приложение го използва. Ако даден порт е отворен, той трябва да бъде присвоен на услуга/процес.





Списък отворени портове

По -лесно е да определите кои портове се използват, отколкото кои портове са отворени. Ето защо следващият раздел ще включва методи за изброяване на всички портове, които се използват в момента. В Linux има множество инструменти, достъпни за задачата. Повечето от тях са вградени във всеки дистрибутор на Linux.

Научаването кои портове са отворени в момента може да бъде полезно в различни сценарии. Възможно е да се конфигурира специален порт за определено приложение. Отвореният порт също може да бъде силен индикатор за проникване в мрежата.



Следните методи са демонстрирани на Ubuntu 20.04.1 LTS.

Избройте протоколи и отворени портове от /etc /services

Файлът /etc /services съдържа информация за текущо изпълняваните услуги. Това е голям файл, така че е готов да бъде претоварен.

$котка /и т.н./услуги| по-малко

Избройте отворените портове, използвайки netstat

Инструментът netstat е помощна програма за показване на мрежови връзки за TCP, таблици за маршрутизиране и различни мрежови интерфейси. Той също така предлага статистика на мрежовия протокол. Използвайки netstat, можем да изброим всички отворени портове на системата.

Изпълнете следната команда netstat:

$netstat -atu

Нека имаме бърза разбивка на всички флагове, които използвахме в тази команда.

  • да се : Казва на netstat да показва всички гнезда
  • T : Казва на netstat да изброява TCP портове
  • ти : Казва на netstat да изброява UDP портове

Ето още един вариант на командата netstat:

$netstat -lntu

В командата се използват два нови флага. Какво имат предвид?

  • на : Казва на netstat да отпечатва само слушалките
  • н : Казва на netstat да показва номера на порта

За да покажете PID на процеса, който използва порт, използвайте флага -p:

$netstat -Вътре

Избройте отворените портове, като използвате ss

Инструментът ss е помощна програма за изследване на сокет. Използването му е подобно на netstat.

За да изброите отворените портове, изпълнете следната команда ss:

$ss-lntu

Знамената са подобни на netstat. Функциите, които описват, също са доста сходни.

  • на : Казва на ss да показва гнезда за слушане
  • н : Казва на ss да не се опитва да разрешава имената на услуги
  • T : Казва на ss да показва TCP сокети
  • ти : Казва на ss да показва UDP гнезда

Избройте отворените портове, използвайки lsof

Командата lsof е за изброяване на отворени файлове. Той обаче може да се използва и за показване на отворените портове.

Изпълнете следната команда lsof:

$lsof

За да получите отворените портове на конкретен протокол (TCP, UDP и т.н.) след това го дефинирайте след флага -i, използвайте:

$lsof <протокол>

Избройте отворените портове, използвайки nmap

Инструментът nmap е мощен инструмент за проучване на мрежата и сигурност/сканиране на портове. Той може да отчита всички отворени портове в системата.

За да изброите отворените TCP портове, изпълнете следната команда nmap. Тук IP адресът е на хост компютъра:

$sudo nmap -sT -p-localhost

Тук има две части на командния аргумент.

  • -sT : Този раздел казва на nmap да сканира за TCP портове.
  • -p- : Това казва на nmap да сканира за всички 65535 портове. Ако не се използва, тогава nmap ще сканира само 1000 порта по подразбиране.

Ако трябва да изброите отворените UDP портове, изпълнете следната команда nmap:

$sudo nmap -него -p-localhost

За да получите както отворените TCP, така и UDP портовете, използвайте следната команда:

$sudo nmap -PN -sT -него -p-localhost

Избройте отворените портове, използвайки netcat

Инструментът netcat е помощна програма за командния ред за четене и запис на данни през мрежови връзки през TCP и UDP протоколи. Този инструмент може да се използва и за изброяване на отворени портове. Той може да извършва тестове на конкретен порт или набор от портове.

Следващата команда netcat ще сканира порта от 1 до 1000. Командата netcat ще извърши сканирането по TCP протокол по подразбиране:

$nc -vlocalhost1-1000

Той може също да бъде разширен до целия списък с възможни портове:

$nc -vlocalhost1-65535

Нека имаме бърза разбивка на флаговете.

  • С : Казва на netcat да сканира само за отворени портове, без да изпраща никакви данни
  • v : Казва на netcat да работи в подробен режим

За да получите само отворените портове от този списък, филтрирайте изхода с grep за термина успешен.

$nc -vlocalhost0-65535 2> &1 | захващанеуспял

Ако искате да извършите сканирането по UDP протокол, добавете флага -u.

$nc -v -ulocalhost0-65535 2> &1 | захващанеуспял

Заключителни мисли

Както беше показано, има много начини за сканиране за отворени портове в Linux. Предлагам да изпробвате всички методи, преди да решите кой от тях да овладеете. Ако редовно използвате определен инструмент като netcat или nmap, овладяването на свързаните методи ще бъде най -полезно.

Честит компютър!