Какво означава Open Port?
Преди да се задълбочим в проверката на отворените портове, нека първо знаем какво означават отворените портове. Отворен порт или порт за прослушване е портът, в който се изпълнява дадено приложение. Работещото приложение слуша на някакъв порт и ние можем да комуникираме с това приложение през този порт за слушане. Ако приложението се изпълнява на порт и ние се опитваме да стартираме друго приложение на същия порт, ядрото ще изведе грешка. Това е една от многото причини да проверяваме за отворени портове, преди да стартираме приложения.
Списък на отворените портове с помощта на nmap
Network Mapper, известен като nmap, е безплатен инструмент с отворен код, който се използва за сканиране на портове в системата. Използва се за намиране на уязвимости, откриване на мрежи и откриване на отворени портове. В този раздел ще използваме nmap, за да получим списък с отворени портове в системата. На първо място, актуализирайте кеша на Ubuntu, преди да инсталирате nmap:
[имейл защитен]: ~ $ sudo apt-get update -yNmap може да бъде инсталиран чрез следната команда в терминала:
[имейл защитен]: ~ $ sudo apt-get install nmap -yСлед като инсталирате nmap, проверете инсталацията, като проверите версията на nmap:
[имейл защитен]: ~ $ nmap --version
Ако дава версията на nmap, тя е инсталирана перфектно, в противен случай опитайте отново горните команди, за да инсталирате nmap правилно. Nmap се използва за извършване на няколко свързани с мрежи, а сканирането на портове е една от тези задачи. Инструментът nmap се използва заедно с много опции. Можем да получим списъка с всички налични опции, като използваме следната команда:
[имейл защитен]: ~ $ man nmapТака че, за да сканирате вашия localhost, използвайте задържаната команда по-долу:
[имейл защитен]: ~ $ sudo nmap localhost
Той ще изброи всички отворени портове на localhost, както е показано на горното изображение. Също така можем да използваме nmap за сканиране на отдалечени хостове:
[имейл защитен]: ~ $ sudo nmap 93.184.216.34Също така можем да използваме името на хоста на отдалечения сървър вместо IP адрес:
[имейл защитен]: ~ $ sudo nmap www.пример.comКомандата nmap може да се използва и за сканиране на набор от IP адреси. Посочете обхвата на IP адресите в командата, както в командата по-долу:
[имейл защитен]: ~ $ sudo nmap 192.168.1.1-10Горната команда ще сканира всички IP адреси от 192.168.1.1 до 192.168.1.10 и ще покаже резултата в терминала. За да сканираме портове в подмрежа, можем да използваме nmap, както следва:
[имейл защитен]: ~ $ sudo nmap 192.168.1.1/24Горната команда ще сканира всички хостове с IP адреси в подмрежата, дефинирана в командата.
Понякога трябва да сканирате портове на произволни хостове, които са в различни подмрежи и не са в последователност, тогава най-доброто решение е да напишете файл на хостове, в който са записани всички имена на хостове, разделени с едно или повече интервали, раздели или нови линии. Този файл може да се използва с nmap, както следва:
[имейл защитен]: ~ $ sudo nmap -iL хостове.текст
Можем да използваме nmap, за да сканираме един-единствен порт в системата, като посочим порта, използвайки флага '-p', заедно с nmap, както в следната команда:
[имейл защитен]: ~ $ sudo nmap -p 80 localhost
Обхват на портове може също да бъде сканиран на система с помощта на nmap по следния начин:
[имейл защитен]: ~ $ sudo nmap -p 80-85 localhost
Можем да сканираме всички портове на системата с помощта на nmap:
[имейл защитен]: ~ $ sudo nmap -p- localhost
За да получите списък с най-често отворените портове на вашата система, можете да използвате командата nmap с флага '-F':
[имейл защитен]: ~ $ sudo nmap -F localhost
TCP портовете могат да бъдат сканирани в системата с помощта на nmap, като просто добавите флага '-T', заедно с командата nmap:
[имейл защитен]: ~ $ sudo nmap -sT localhost
По същия начин, за UDP портовете, можете да използвате флага '-U' с командата nmap:
[имейл защитен]: ~ $ sudo nmap -sU localhost
Списък на отворените портове с помощта на lsof
Командата lsof, известна също като „списък на отворените файлове“, се използва за получаване на информация за отворени файлове, използвани от различни процеси в UNIX и LINUX като операционни системи. За повечето дистрибуции на Linux този инструмент се предлага предварително инсталиран. Можем да проверим инсталирането на lsof, като просто проверим неговата версия:
[имейл защитен]: ~ $ lsof -v
Ако не показва версията, тогава lsof не е инсталиран по подразбиране. Все още можем да го инсталираме, като използваме следните команди в терминала:
[имейл защитен]: ~ $ sudo apt-get update -y[имейл защитен]: ~ $ sudo apt-get install lsof
Можем да използваме командата lsof заедно с различни опции. Списъкът с всички налични опции може да се покаже чрез следната команда в терминала:
[имейл защитен]: ~ $ man lsofСега в този раздел ще използваме lsof, за да покажем портове на системата по различни начини:
[имейл защитен]: ~ $ sudo lsof -i
Горната команда показа всички отворени портове. Също така можем да използваме командата lsof, за да покажем всички отворени сокети:
[имейл защитен]: ~ $ sudo lsof -n -P | grep СЛУШАЙ
Можем да изброим филтрирани портове въз основа на протокол, използвайки lsof. Изпълнете командата, дадена по-долу, за да изброите всички видове TCP връзка:
[имейл защитен]: ~ $ sudo lsof -i tcp
По същия начин можем да изброим всички типове UDP връзка, използвайки lsof по следния начин:
[имейл защитен]: ~ $ sudo lsof -i udp
Списък на отворените портове с помощта на netstat
Netstat, известен също като мрежова статистика, е програма за команден ред, използвана за показване на подробна информация за мрежите. Той показва както входящи, така и изходящи TCP връзки, маршрутни таблици, мрежови интерфейси и т.н. В този раздел ще използваме netstat за изброяване на отворени портове в системата. Инструментът netstat може да бъде инсталиран чрез изпълнение на следните команди:
[имейл защитен]: ~ $ sudo apt-get update -y[имейл защитен]: ~ $ sudo apt-get install net-tools -y
След като изпълните горните команди, можете да проверите инсталацията, като проверите версията на netstat:
[имейл защитен]: ~ $ netstat --version
Ако показва версията на net-tools, тогава инсталацията е наред, в противен случай изпълнете командите за инсталиране отново. За да получите преглед на всички налични опции, които могат да се използват, заедно с командата netstat, изпълнете следната команда:
[имейл защитен]: ~ $ man netstatМожем да получим списък на всички портове за слушане, като използваме командата netstat в Ubuntu, като изпълним следната команда:
[имейл защитен]: ~ $ sudo netstat -l
Командата netstat може да се използва и за филтриране на прослушването на TCP и UDP портове, като просто добавите флаг заедно с командата. За прослушване на TCP портовете:
[имейл защитен]: ~ $ sudo netstat -lt
За да слушате UDP портовете, използвайте следната команда:
[имейл защитен]: ~ $ sudo netstat -lu
За да получите списъка с всички слушащи UNIX портове, можете да изпълните следната команда в терминала:
[имейл защитен]: ~ $ sudo netstat -lx
Списък на отворените портове с помощта на ss
Командата ss се използва за показване на информация за сокети в Linux система. Той показва по-подробна информация за сокетите, отколкото командата netstat. Командата ss е предварително инсталирана за повечето дистрибуции на Linux, така че не е необходимо да я инсталирате, преди да я използвате. Можете да получите списък с всички опции, които могат да се използват заедно с ss командата, като стартирате командата 'man' с ss:
[имейл защитен]: ~ $ man ssЗа да получите списък на всички връзки, независимо от състоянието им, използвайте ss командата без никакъв флаг:
[имейл защитен]: ~ $ sudo ss
За да получите списък на всички портове за слушане, използвайте ss командата с флага '-l'. Флагът -l се използва за показване само на прослушващи портове:
[имейл защитен]: ~ $ sudo ss -l
За да получим всички прослушващи TCP портове, можем да използваме флага '-t' и '-l' заедно с командата ss:
[имейл защитен]: ~ $ sudo ss -lt
По същия начин можем да получим списък на всички слушащи UDP портове, като използваме ss командата заедно с флага '-u' и '-l':
[имейл защитен]: ~ $ sudo ss -lu
Командата ss може да се използва и за получаване на списък на всички връзки с източника или порта на местоназначение. В следващия пример ще получим списъка с всички връзки с дестинацията или източника порт 22:
[имейл защитен]: ~ $ sudo ss -at '(dport =: 22 или sport =: 22)'
Ще получите списък на всички входящи и изходящи връзки, ако сте се свързали с отдалечена система с помощта на ssh.
Заключение
За системните администратори, специалистите по сигурността и други свързани с ИТ лица е важно да са наясно с отворените портове на сървърите. Linux е богат на инструментите, използвани за диагностика на мрежи и предоставя много инструменти, които могат да бъдат полезни за различни видове мрежови дейности. В този урок използвахме някои инструменти като netstat, ss, lsof и nmap, за да проверим за отворени портове в Ubuntu. След като преминете през тази статия, ще можете лесно да изброите всички портове за слушане на вашия Linux сървър по много начини.