Накратко ще опишем портовете в компютърната мрежа и по-нататък ще говорим за това как можем да изброим всеки отворен порт в Linux.
Портът може да се дефинира като логическа единица в термините на компютърната мрежа и софтуера.
Той действа като комуникационна крайна точка за идентифициране на даден процес или приложение на Linux операционна система . Пристанището е a 16-битов (от до 65535) номер, който отличава едно приложение от други в различни крайни системи.
Два от най-известните интернет транспортни протоколи, Протокол за потребителска дейтаграма (UDP) и Протокол за контрол на предаването (TCP) и други протоколи прилагат номера на портове за много сесии на комуникация (номера на порт на местоназначение и източник във връзка с IP адреси на местоназначение и източник).
Комбинация от протокол, порт и IP адрес като TCP/UDP се нарича a гнездо. Необходимо е всички услуги да имат конкретен сокет.
10 степен на 6
Категории порт
Тези портове са разделени на три категории за по-лесно използване, тъй като разнообразието от портове е голямо. Всички категории са обозначени като диапазон на стойността на порта:
0-1023: Тези портове са всеизвестен и се обади 'Система' пристанища. Те са запазени за процесите на системата, които предоставят огромен набор от мрежови услуги. Процесът трябва да има привилегиите на суперпотребител за обвързване с всеки 'Всеизвестен' порт.
1024-49151: Тези портове са 'Регистриран' и се обади на 'Потребител' пристанища. Те са обозначени чрез IANA за уникални услуги. Процесът може да има удостоверяване за тях при поискване. Не се нуждае от привилегия на суперпотребител за използване на тези портове в повечето системни случаи.
49152-65535: Тези портове са 'Динамичен' и се обади на 'Лично' пристанища. Те не могат да бъдат регистрирани IANA. Тези типове портове са отворени за използване за персонализирани и частни услуги и могат също да бъдат разпределени като ефимерни портове (известни като краткотраен портове, прилагани от IP) автоматично.
Има толкова много начини за проверка на отворени портове в Linux. По подразбиране порт ще се затвори, освен ако някое приложение не го прилага. Портът трябва да бъде присвоен на процес или услуга, ако е отворен.
Отворете списъка с портове
По-лесно е да разберете кой порт се използва вместо кой порт е отворен. Следователно разделът по-долу ще предостави методи за изброяване на всеки порт, който се използва в момента.
В Linux има няколко инструмента за тази задача. Повечето от тях налични вградена в Linux дистрибуция.
Научаването кой порт е отворен в момента може да бъде полезно в много сценарии. Възможно е да се определи специален порт за гарантирано приложение. Отворен порт може да е сериозна индикация за проникване в мрежата.
Методите се използват върху Ubuntu 20.04 LTS които са споменати по-долу.
Избройте отворените портове и протоколи, като използвате файла /etc/services
Файлът, т.е. /etc/services съдържа подробности за работещите услуги (в момента). Това е голям файл.
$cat /etc/services | less
Избройте отворените портове с netstat
The netstat може да се опише като помощна програма за показване на мрежови връзки за таблици за маршрутизиране, TCP и няколко мрежови интерфейса. Освен това улеснява статистиката на мрежовия протокол. Можем да изброим всеки отворен порт на система с помощта на инструмента netstat.
Можем да изпълним командата по-долу:
$ netstat -atu
Нека бързо обясним разбивката на всеки флаг, който използвахме в горната команда:
1. а: Този флаг информира netstat за показване на всеки сокет.
2. т: Този флаг информира netstat за изброяване на TCP портове.
3. в: Този флаг информира netstat за изброяване на UDP портове.
The netstat командата има друг вариант, който е споменат по-долу:
$ netstat -lntu
Два флага са нови в горната команда, което е обяснено по следния начин:
1. л: Този флаг информира netstat за отпечатване само на слушащите сокети.
base64 декодиране в js
2. n: Този флаг информира netstat за показване на номера на порта.
Можем да използваме флаг, т.е. '-p' за да покаже PID на процеса, който използва произволен порт.
$ netstat -lntup
Проверете отворените портове локално
Командата netstat е достъпна на всяка компютърна операционна система за наблюдение на мрежовите връзки. Командата по-долу прилага netstat за показване на всеки слушащ порт с TCP протокола:
netstat -lt
Нека накратко дефинираме флаговете, които присъстват в горната команда:
1. -l: Той изброява портовете за слушане.
2. -t: Той определя TCP протокола.
Резултатът е добре подреден в колони, показващи протокола, удобни за хората, изпратени и получени пакети, състояние на порта, отдалечени и локални IP адреси.
Ако променим TCP протокола за UDP протокол, изходът ще показва само отворени портове. Резултатът ще се покаже без описание на състоянието поради противоречие с TCP протокола.
netstat -lu
Можем да игнорираме описващите протоколи и да приложим само опцията --listen или -l за получаване на подробности за всеки порт, слушащ свободно протокола:
netstat --listen
Горната опция ще покаже подробностите за Unix, UDP и TCP сокет протоколите.
Всеки пример по-горе показва как да отпечатате подробностите през слушащи портове без разрешени връзки. Командите по-долу показват как да се показват слушащи портове и разрешени връзки.
netstat -vatn
Където:
1. -във: Използва се за многословие.
2. -а: Той показва активни връзки.
3. -t: Той показва tcp връзки.
4. -n: Показва портове (числова стойност).
Да кажем, че разпознаваме подозрителен процес в нашата система и искаме да проверим свързаните с него портове. Можем да използваме командата lsof, която се използва за изброяване на отворени файлове, свързани с процеси.
lsof -i 4 -a -p
Където,
1. -и: Той изброява файловете, които си сътрудничат с интернет, the 6 съществува опция за IPv6, и на 4 опцията дава инструкции само за печат IPv4.
2. -а: Той инструктира резултата да бъде Ти даде.
3. -p: Той указва PID номера на процеса, който искаме да проверим.
Избройте отворените портове с ss
The ss инструментът може да бъде определен като помощна програма за изследване на сокета. Използването на този инструмент е същото като netstat команда.
Можем да изпълним командата по-долу за изброяване на отворените портове:
$ ss -lntu
Горните флагове са същите като netstat команда. Функциите, които са описани от инструмента ss, също са същите.
1. л: Този флаг информира ss за показване на слушащите гнезда.
2. n: Този флаг информира ss да не се опитва да заключи имена на услуги.
3. t: Този флаг информира ss за показване на TCP сокети.
4. в: Този флаг информира ss за показване на UDP сокети.
Избройте отворените портове с lsof
Командата lsof може да се използва за изброяване на отворени файлове. Но може да се използва и за показване на отворените портове.
Можем да изпълним следната команда:
$ lsof -i
За да получите отворените портове на конкретен протокол (UDP, TCP и т.н.), след това го посочете, след като използвате '-i' флаг, можем да изпълним следната команда:
$ lsof -i
Избройте отворените портове с nmap
Командата nmap може да се определи като силна за сканиране на порт/сигурност и изследване на мрежата. Може също така да докладва всеки отворен порт в системата.
Можем да изпълним следната команда за изброяване на отворените TCP портове.
$ sudo nmap -sT -p- localhost
Има два раздела на тази команда, която е спомената по-горе:
1. -sT: Той информира инструмента nmap за сканиране TCP пристанища.
2. -p-: Той информира инструмента nmap за сканиране на всеки 65535 пристанища. Инструментът nmap ще сканира 1000 портове само по подразбиране, ако не се използват.
Ако искаме да изброим отворените портове на UDP, тогава можем да изпълним следната команда:
$ sudo nmap -sU -p- localhost
Можем също да изпълним следната команда за получаване както на UDP, така и на TCP портовете:
$ sudo nmap -n -PN -sT -sU -p- localhost
Избройте отворени портове с netcat
Инструментът netcat може да се опише като помощна програма от командния ред за четене и запис на данни през много мрежови връзки по UDP и TCP протоколите. Също така може да се използва за изброяване на отворени портове. Този инструмент може да изпълнява тестове върху определен порт или множество портове.
Командата netcat по-долу се използва за сканиране на порта от 1-1000. По подразбиране ще реализира сканирането по TCP протокол:
$ nc -z -v localhost 1-1000
Освен това може да се разшири до целия списък с определени портове:
$ nc -z -v localhost 1-65535
Нека бързо да направим разбивка на тези флагове.
1. от: Той информира командата netcat за сканиране само на отворени портове, без прехвърляне на данни.
2. в: Той информира командата netcat за изпълнение в подробен режим.
mysql уникален ключ
Можем да филтрираме резултата с помощта на grep за термин 'успели' за получаване само на отворените портове през този списък.
$ nc -z -v 127.0.0.1 20-80 | grep succeeded
Ако искаме да приложим сканирането през UDP протокол, Можем да включим '-in' знаме.
$ nc -z -v -u localhost 0-65535 2>&1 | grep succeeded