Сетевые порты — это механизм, с помощью которого операционная система определяет какой именно программе необходимо передать сетевой пакет. Здесь можно привести пример с домом. Например, почтальону необходимо доставить посылку. Он доставляет посылку к дому, это IP адрес компьютера. А дальше в самом доме уже должны разобраться в какую квартиру направить эту посылку.
Номер квартиры — это уже порт.
Если порт открыт это означает, что какая либо программа, обычно сервис, использует его для связи с другой программой через интернет или в локальной системе. Чтобы посмотреть какие порты открыты в вашей системе Linux можно использовать множество различных утилит. В этой статье мы рассмотрим самые популярные способы посмотреть открытые порты Linux.
Как посмотреть открытые порты linux
1. netstat
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:
Как посмотреть открытые порты в Linux / какие прослушиваются порты в Linux
sudo netstat -tulpn
Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:
Можно вывести только процессы, работающие на 80-том порту:
sudo ss -tulpn | grep :80
3. lsof
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:
Ещё один пример, смотрим какие процессы работают с портом 80:
sudo lsof -i -P | grep :80
4. Nmap
Программа Nmap — мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:
2. Как узнать какие порты открыты в Linux ? / Порты / Linux / Netstat / ss / lsof / Nmap
sudo apt install nmap
Затем можно использовать:
Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.
Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
Дальше запускаем сканирование:
В результате мы видим, что открыт порт 80 веб-сервера и 22 — порт службы ssh, я их не открывал, эти порты открыты роутером, 80 — для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.
5. Zenmap
Программа Zenmap — это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:
sudo apt install zenmap
Запустить программу можно из главного меню или командой:
Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:
После завершения сканирования утилита вывела список открытых портов Linux.
Выводы
В этой статье мы рассмотрели инструменты, которые вы можете использовать для того чтобы узнать узнать открытые порты linux. Инструментов не так много как для просмотра информации об оперативной памяти или процессоре, но их вполне хватает. А какими программами пользуетесь вы? Напишите в комментариях!
3 способа узнать, какой процесс прослушивает определенный порт
Порт — логический объект, который представляет собой конечную точку связи и связан с данным процессом или службой в операционной системе. В предыдущих статьях мы объяснили, как узнать список всех открытых портов в Linux и как проверить доступность удаленных портов с помощью команды «nc».
В этой статье мы покажем три разных способа поиска процесса, прослушивающего конкретный порт в Linux.
1. Использование команды netstat
Команда netstat (network statistics) используется для отображения информации о сетевых подключениях, таблицах маршрутизации, статистике интерфейса и за ее пределами. Она доступна во всех Unix-подобных операционных системах, включая Linux, а также в ОС Windows.
Если netstat не установлен у вас по умолчанию, используйте следующую команду для его установки:
После установки вы можете использовать его с командой grep, чтобы найти процесс, прослушивающий конкретный порт в Linux, следующим образом:
В приведенной выше команде используются следующие опции:
- l — указывает netstat, — на то, что необходимо показывать только прослушивающие сокеты.
- t — указывает на отображение tcp-соединений.
- n — указывает на то, что необходимо показывать ip-адреса.
- p — позволяет показывать идентификатор процесса и имя процесса.
- grep -w — показывает соответствие точной строки (‘:80’).
2. Используя команду lsof
Команда lsof (LiSt Open Files) используется для отображения всех открытых файлов в системе Linux. Чтобы установить её в свою систему, введите команду, приведенную ниже.
Чтобы найти процесс, прослушивающий конкретный порт, введите:
3. Использование команды fuser
fuser показывает PID процессов с использованием указанных файлов или файловых систем в Linux.
Вы можете установить его следующим образом:
Вы можете найти процесс, прослушивающий конкретный порт, выполнив приведенную ниже команду:
Затем найдите имя процесса с использованием номера PID, с командой ps — таким образом:
Вопросы по статье задавайте в комментариях ниже.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Источник: onecomp.ru
Как посмотреть открытые порты Linux
Visitors have accessed this post 52979 times.
Во время устранения неполадок служб, работающих на ОС Linux, просмотр открытых портов является одной из задач, которую должен выполнять любой пользователь или администратор. Если служба должна по идее работать, но по какой-то причине она не работает, то, скорее всего, порт этой службы закрыт и его нужно открыть.
В этом туториале мы покажем, как в Linux посмотреть порты, которые открыты, из командной строки.
1) Посмотреть открытые порты с помощью команды ss
Команда Linux ss предоставляет подробную информацию об открытых портах и прослушиваемых сокетах. Она извлекает информацию из ядра Linux и она более популярна, чем команда netstat, которая уже устарела.
Чтобы отобразить прослушиваемые TCP-соединения, выполните команду
$ ss -tl
Пример вывода
l — показывает прослушиваемые сокеты
t — означает порт TCP
Чтобы посмотреть прослушиваемые UDP-соединения, введите команду
$ ss -lu
Пример вывода
u — означает порт UDP.
Или для того, чтобы отобразить tcp и udp одновременно, введите имя процесса
$ ss -lntup
p — выдает список имен процессов, которые открыли сокеты.
Чтобы вывести все соединения между сокетами, просто используйте команду ss в ее формате по умолчанию
$ ss
Пример вывода

2) Посмотреть открытые порты с помощью команды netstat
Команда netstat — это инструмент командной строки, который используется для проверки открытых портов TCP и UDP вместе с другими атрибутами. Чтобы в Linux проверить открытые порты, введите команду:
$ netstat -pnltu
Пример вывода
Давайте подробнее рассмотрим параметры команды:
p — показывает идентификатор услуги или название программы;
n — отображает числовой номер запущенного порта, например, 3306 для mysqld и 22 для sshd;
l — показывает прослушиваемые сокеты;
t — показывает TCP-соединения;
u — показывает UDP-соединения.
3) Посмотреть открытые порты Linux с помощью команды lsof
Команда lsof — это сетевой инструмент, который также можно использовать, чтобы проверить открытые порты Linux. Для этого введите команду
$ lsof -i
Пример вывода
Чтобы посмотреть открытые сокеты, используйте команду lsof и перенаправьте вывод в grep, как показано ниже:
$ lsof -n -P | grep LISTEN
Пример вывода

Для просмотра всех TCP-соединений выполните следующую команду:
$ lsof -i tcp
Пример вывода

Чтобы посмотреть все UDP-соединения, выполните команду:
$ lsof -i udp
Пример вывода

4) Посмотреть открытые порты Linux с помощью утилиты Nmap
Nmap — это бесплатный инструмент с открытым исходным кодом для сканирования сети, обычно используется для обнаружения открытых портов удаленных систем. По умолчанию Nmap не установлен в ОС Linux. Чтобы установить Nmap, введите команду:
$ sudo apt install nmap (для Debian/ Ubuntu)
$ sudo yum install nmap (для RedHat/ CentOS)
$ sudo dnf install nmap (для Fedora)
$ pacman -S nmap (ArchLinux)
Чтобы найти открытые порты TCP, выполните команду:
$ nmap -sT -O localhost
Пример вывода
Чтобы найти открытые порты UDP, выполните команду:
$ nmap -sU localhost
Пример вывода

Каждую неделю мы в live режиме решаем кейсы на наших открытых онлайн-практикумах, присоединяйтесь к нашему каналу в Телеграм, вся информация там.
Если вы хотите освоить функционал системного администратора Linux на практике, приглашаем на наш практикум Linux by Rebrain.
Источник: rebrainme.com
netstat — проверка открытых портов в Linux
Проверка открытых портов на Ubuntu может понадобиться, чтобы убедиться, что в системе не запущены лишние службы. Если вы помните, порт это число, которое приложение будет использовать для связи с другой программой, предоставлять сервис и т.д. Чтобы получить представление о том, какие службы работают в системе, необходимо проверить открытые порты системы.
Часто мы устанавливаем программу, которая является сервисом, а потом забываем о ней, поэтому наша машина может прослушивать порты в ожидании соединения. Злоумышленники любят, когда порты открыты, так как приложения, прослушивающие эти порты, являются простыми целями. Чтобы обеспечить нашей системе Ubuntu Linux (или любой другой системе в этом отношении) максимальную безопасность, мы должны знать о том, какие порты открыты и для каких служб.
Чтобы проверить, какие порты открыты на нашей рабочей станции Ubuntu, можно выполнить команду, показанную ниже. Обратите внимание, что она должна работать и для других разновидностей Linux, если установлена утилита netstat.
1. Используя команду netstat
netstat -anltp | grep «LISTEN»
CLOSE_WAIT — ожидание закрытия соединения
CLOSED — соединение закрыто
ESTABLISHED — соединение установлено
LISTENING — ожидается соединение (слушается порт)
TIME_WAIT — превышение времени ответа
Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Узнать, кто использует данные порты:
- netstat –bno – получить список вех сетевых соединений и связанных с ними программ
- -n – отображает адреса и номера портов в числовом формате
- -b – отображает исполняемый файл, участвующий в создании каждого соединения
Обычный веб-сервер, на котором запущены FTP, SSH и MySQL, выведет следующую информацию:
tcp 0 0 127.0.0.1:3306 0.0.0.0:*LISTEN 21432/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd tcp6 0 0 . 21 . * LISTEN 19023/proftpd tcp6 0 0 . 22 . * LISTEN 7234/sshd
Вышеуказанная команда запускает утилиту netstat с соответствующими флагами и передает вывод функции grep, которая извлекает строки, содержащие слово «LISTEN». В результате мы получаем список открытых портов и имена процессов, прослушивающих эти порты.
Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.
Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.
Список всех открытых портов (TCP)
netstat -at
Список всех открытых портов (UDP)
netstat -au
Список только прослушиваемых портов (TCP)
netstat -lt
Статистика по всем открытым портам
netstat -s
Подробное отображение списка с открытыми портами — добавлен PID и имя процессов
netstat -p
Объединим все ключи в полезную команду для просмотра открытых TCP/UDP портов с именами процессов (может понадобиться root-доступ)
netstat -ltupn
Список подключенных хостов
netstat -lantp | grep ESTABLISHED |awk » | awk -F: » | sort -u
Список всех открытых портов при помощи команды netstat
Это просто.
Тут мы используем либо команду netstat. Да, так просто, всего одна строчка и все у нас перед глазами:
$ sudo netstat –tulpn
Тут мы можем увидеть какие порты находятся в состоянии прослушивания (Listen).
Просмотр статистики по протоколам
Данную информацию отображает команда netstat -s:
# netstat -s Ip: 37850 total packets received 3 with invalid addresses 1 forwarded 0 incoming packets discarded 17349 incoming packets delivered 17635 requests sent out Icmp: 0 ICMP messages received 0 input ICMP message failed. Tcp: 312 active connections openings 2 failed connection attempts 114 connection resets received Udp: 9883 packets received 4 packets to unknown port received. .
Отдельная статистика по TCP:
netstat -st
Отдельная статистика по UDP:
netstat -su
Узнать PID и имя ПО, которое проявляет сетевую активность
Для того, что бы узнать какой именно процесс у нас использует сетевое соединения или проявляет аномальную сетевую активность можно использовать команду netstat -pt:
# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 1 0 root.wellweb:47212 192.168.1.1:www CLOSE_WAIT 2109/firefox tcp 0 0 root.wellweb:52750 lax:www ESTABLISHED 2109/firefox
Отображение таблицы IP роутов
# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth2 link-local * 255.255.0.0 U 0 0 0 eth2 default 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
Узнать какой порт использует определенный процесс
# netstat -ap | grep ssh (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 1 0 dev-db:ssh 192.182.1.1:39213 CLOSE_WAIT — tcp 1 0 dev-db:ssh 192.182.1.1:57643 CLOSE_WAIT —
Если нужно наоборот, узнать процесс по порту, то команда будет выглядеть так:
# netstat -an | grep ‘:80’
Расширенная информация о сетевом интерфейсе
Для этого используем команду:
# netstat -ie Kernel Interface table eth0 Link encap:Ethernet HWaddr 00:10:42:11:11:11 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:800 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:f6ad0000-f6b10000
Также мы использовали следующие флаги:
- t — выводит список портов TCP.
- u — выводит список портов UDP.
- l — выводит только слушающие (Listen) сокеты.
- n — показывает номер порта.
- p — показывает имя процесса или программы.
Несколько примеров для определения атаки типа DoS или DDoS
Следующая команда позволит узнать, сколько подключений активно на каждом IP-адресе:
netstat -naltp | grep ESTABLISHED | awk ‘’ | awk -F: ‘’ | sort -n | uniq -c
Определяем большое количество запросов с одного IP-адреса:
netstat -na | grep :80 | sort
Определяем точное количество запросов, полученных на одно соединение:
netstat -np | grep SYN_RECV | wc -l
При проведении DoS-атаки число, полученное в результате работы данной команды, должно быть довольно большим. В любом случае оно может зависеть от конкретной системы. То есть на одном сервере оно может быть одним, на другом — иным.
2. Используя команду ss
Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения.
Утилита ss позволяет просматривать информацию об используемых сокетах в системе. Эта команда обладает схожим функционалом к netstat, но есть и уникальные возможности. Например можно фильтровать вывод по установленным соединениям с определенным портом.
Список процессов, использующие соединения в данный момент
ss -p
Список сокетов в режиме прослушивания
ss -l
Пример фильтра — список всех соединений к порту 80
ss -o state established ‘( dport = :www or sport = :www )’
Список всех открытых портов при помощи команды ss
Тут все аналогично, кроме того, что теперь используем команду ss вместо netstat
$ sudo ss -tulpn
3. Используя команду lsof
Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом.
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P
Список всех сетевых соединений
lsof -i
Список процессов, работающих с портом 80
lsof -i :80
4. Используя команду netcat
Утилита netcat позволяет передавать/принимать данные через TCP/UDP соединения.
Шаблон вызова утилиты
nc host port
Откроем прием (ключ -l) данных на порте 1234 с подробным выводом информации (ключ -v) и продолжением работы после разрыва соединения (ключ -k), по-умолчанию nc разрывает соединение после первого дисконекта.
nc -lvk 1234
Подключаемся к открытому порту и отправим import antigravity
nc 127.0.0.1 1234 import antigravity
Пример более полезного использования nc — передача файла. На принимающей стороне
nc -l 1234 > file
На отправляющей стороне
nc localhost 1234 < file
Или можно отдавать файл любому подключившемуся. На передающей стороне
nc -l 1234 < file
На принимающей стороне
nc localhost 1234 > file
Пример открытия shell’а на определенном порте (источник). На стороне, где нужно открыть шел
mkfifo /tmp/pipe; sh /tmp/pipe | nc -l 1234 > /tmp/pipe
Еще один полезный пример с netcat — запуск процесса, с возможностью отслеживания его работы через сеть
watch w | nc localhost 1234
4. Используя команду NMAP
Nmap — мощный сетевой сканер, разработанный для сканирования и пентестинга удаленных узлов, но ничего не мешает направить его на локальный компьютер:
nmap localhost Starting Nmap 6.47 ( http://nmap.org ) at 2015-08-02 17:27 EEST Nmap scan report for localhost (127.0.0.1) Host is up (0.00036s latency). Other addresses for localhost (not scanned): 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 rDNS record for 127.0.0.1: comm-app.local Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3493/tcp open nut 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
Если вы хотите посмотреть какие порты на компьютере доступны снаружи, здесь тоже пригодится Nmap. Если компьютер — общедоступный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
wget -O — -q icanhazip.com
178.93.149.50
Дальше запускаем сканирование:
nmap 178.93.149.50
В результате мы можем получить открытый порт 80 веб сервера, или даже 21 — файлового сервера, которых мы не устанавливали, эти порты открыты роутером, 80 — для веб-интерфейса, а 21 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS.
Для сканирования открытых/прослушиваемых портов на вашей системе Linux, запустите следующую команду (она может занять долгое время для завершения):
sudonmap -n -Pn -sS -sU -p- localhost
5. Какие порты открыты для внешнего мира?
Обратите внимание, что сервис может иметь открытый порт, который можно прослушивать только на текущей машине. То есть, порт открыт, но вы не сможете получить к нему доступ из сети.
Это полезно для безопасности, например, веб-сервер должен иметь открытый для остального мира порт 80, но мир не должен знать о (или иметь возможность подключения) порте 3306, который прослушивает сервер MySQL, поддерживающий вебсайт.
В идеале, если вы используете веб-сервер, единственные порты, которые должны быть видны извне это HTTP-порт 80, и возможно, SSH порт 22, поскольку вам понадобится подключаться к веб-серверу для выполнения команд.
Порты для служб, доступных только на локальном компьютере, будут иметь IP адрес 127.0.0.1 в поле локального адреса. В вышеприведенном примере это будет:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
Как видно, MySQL прослушивает порт 3306 по IP адресу 127.0.0.1. Это означает, что к MySQL серверу могут подключиться только программы на той же машине.
6. Просматриваем открытые порты в Ubuntu
Для выполнения поставленной задачи мы предлагаем использовать стандартную консоль и дополнительные утилиты, позволяющие проводить мониторинг сети. Разобраться в командах смогут даже неопытные пользователи, поскольку мы дадим объяснение каждой. Предлагаем ознакомиться с двумя различными утилитами далее.
7. ВЫВОДЫ
В этой статье мы рассмотрели инструменты, которые вы можете использовать для того чтобы узнать узнать открытые порты linux. Инструментов не так много как для просмотра информации об оперативной памяти или процессоре, но их вполне хватает. А какими программами пользуетесь вы? Напишите в комментариях!
Источник: svictor.ru