Прослушать порты в линукс

Как посмотреть открытые порты в Linux

Сетевые порты — это механизм, с помощью которого операционная система определяет какой именно программе необходимо передать сетевой пакет. Здесь можно привести пример с домом. Например, почтальону необходимо доставить посылку. Он доставляет посылку к дому, это IP адрес компьютера. А дальше в самом доме уже должны разобраться в какую квартиру направить эту посылку. Номер квартиры — это уже порт.

Если порт открыт это означает, что какая либо программа, обычно сервис, использует его для связи с другой программой через интернет или в локальной системе. Чтобы посмотреть какие порты открыты в вашей системе Linux можно использовать множество различных утилит. В этой статье мы рассмотрим самые популярные способы посмотреть открытые порты Linux.

Как посмотреть открытые порты linux

1. netstat

Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:

  • -l или —listening — посмотреть только прослушиваемые порты;
  • -p или —program — показать имя программы и ее PID;
  • -t или —tcp — показать tcp порты;
  • -u или —udp показать udp порты;
  • -n или —numeric показывать ip адреса в числовом виде.

Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:

2. ss

Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:

Можно вывести только процессы, работающие на 80-том порту:

3. lsof

Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:

Ещё один пример, смотрим какие процессы работают с портом 80:

4. Nmap

Программа Nmap — мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:

Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.

Читайте также:  Linux package shared libraries

Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:

Дальше запускаем сканирование:

В результате мы видим, что открыт порт 80 веб-сервера и 22 — порт службы ssh, я их не открывал, эти порты открыты роутером, 80 — для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.

5. Zenmap

Программа Zenmap — это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:

Запустить программу можно из главного меню или командой:

Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:

После завершения сканирования утилита вывела список открытых портов Linux.

Выводы

В этой статье мы рассмотрели инструменты, которые вы можете использовать для того чтобы узнать узнать открытые порты linux. Инструментов не так много как для просмотра информации об оперативной памяти или процессоре, но их вполне хватает. А какими программами пользуетесь вы? Напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

4 способа узнать, какие порты прослушиваются в Linux

Порт может в одном из следующих состояний: открыт (open), фильтруется (filtered), закрыт (closed), без фильтрации (unfiltered). Порт называется открытым если какое-либо приложение, служба на целевой машине прослушивает (listening) его в ожидании соединений/пакетов. Также по отношению к службе часто употребляют термин «привязка» (bind), который означает, что служба назначена к определённому порту, то есть после её запуска она будет прослушивать его, чтобы ответить на входящие запросы.

Термин «привязка» используют по отношению к службам, которые прослушивают порт на постоянной основе и готовы принять входящие соединения. Примером таких служб являются SSH, MySQL, веб-сервер. Некоторые приложения (например, веб-браузер) делают исходящие соединения. Для этих исходящих соединений обычно используется порт с номером в десятки тысяч, например, 37830 или 46392 или 54284 или что-то подобное. Но они используют порт на короткое время — только чтобы отправить запрос и получить ответ. Сразу после получения ответа программа освобождает порт. Если ей понадобится вновь сделать запрос, то она может выбрать любой другой незанятый порт — необязательно тот же самый. Такие порты не являются прослушивающими, то есть они не принимают внешние запросы на инициализацию соединения. Это состояние сокета называется ESTABLISHED, его нужно отличать от прослушивания порта (LISTENING), то есть от открытых портов.

В этой статье будут рассмотрены четыре способа проверить открытые порты, точнее говоря, какие порты прослушиваются в системе, а также показано вам как найти приложение (службу) прослушивающие определённый порт в Linux.

Читайте также:  Linux command line encryption

1. Используя команду netstat

Netstat — это широко применяемый инструмент для запроса информации о сетевой подсистеме Linux. Вы можете использовать её для показа всех открытых портов примерно так:

Флаг -l говорит netstat вывести все прослушивающие сокеты, -t означает показать все TCP соединения, -u для показа всех UDP соединений и -p включает показывать PID и имя программы/приложения, которое прослушивает порт.

Обратите внимание, что вместо номеров портов программа выводит имена популярных служб. Если вы хотите, чтобы порты были показаны как числа, то добавьте флаг -n.

Вы также можете использовать команду grep для определения, какое приложение прослушивает определённый порт, например:

sudo netstat -lntup | grep "httpd"

Можно искать не по имени службы, а по номеру порта, с помощью этого можно определить, какая служба привязана к определённому порту:

sudo netstat -lntup | grep ":80"

Если вам нужно чтобы данные постоянно обновлялись, то используйте ключ -c, тогда новые данные будут выводиться каждую секунду.

2. Используя команду ss

ss — это другой полезный инструмент для отображения информации о сокетах. Её вывод выглядит похоже с тем, какую информацию даёт netstat. В документации netstat сказано, что она в основном устарела и её заменой является как раз ss.

Следующая команда покажет все прослушиваемые порты для TCP и UDP соединений в виде цифровых значений:

Опции имеют такое же значение:

  • -l означает показать только прослушивающие сокеты (по умолчанию они опускаются);
  • -t означает показать TCP сокеты;
  • -u означает показать UDP сокеты.

Если добавить ключ -p, то программа дополнительно покажет процессы, использующие сокет:

Программа очень детально показывает информацию по каждому процессу, в том числе выводит все подпроцессы, связанные с родительским. С одной стороны, это хорошо, так как информация исчерпывающая, но с другой, данных о процессах может быть слишком много и вывод становится трудно читаемым.

3. Используя программу Nmap

Nmap — это мощный и популярный инструмент исследования сети и сканер портов. Для установки nmap в вашу систему используйте стандартный менеджер пакетов как показано ниже.

На Debian/Ubuntu/Linux Mint:

На CentOS/RHEL:

На Fedora 22+:

На Arch Linux:

Для сканирования открытых/прослушиваемых портов на вашей системе Linux, запустите следующую команду (она может занять долгое время для завершения):

sudo nmap -n -Pn -sS -sU -p- localhost

4. Используя команду lsof

Последний инструмент, который мы рассмотрим в этой статье, это команда lsof, которая используется для вывода списка открытых файлов в Linux. Поскольку в Unix/Linux всё является файлом, открытый файл может быть потоком или сетевым файлом.

Для вывода списка всех Интернет и сетевых файлов, используйте опцию -i. Помните, что эта команда показывает смесь имён служб и цифровых портов.

Чтобы найти, какое приложение прослушивает определённый порт, запустите lsof в следующей форме:

Вот и всё! В этой статье мы узнали четыре способа проверить открытые порты в Linux. Мы также показали, как проверить, какой процесс привязан к определённому порту.

О том, как правильно понимать вывод этих команд, смотрите статью «Что означают 0.0.0.0, :*, [::], 127.0.0.1. Как понять вывод NETSTAT».

Читайте также:  Криптопро jcp linux установка

Связанные статьи:

Источник

Как проверить открытые порты с помощью NetCat

Иногда требуется проверить проходит ли запрос до определённого порта сервера. Один из способов сделать это — воспользоваться консольной программой NetCat. Она может не только определить состояние порта, но и вернуть ответ сервера с него и даже про сканировать диапазон портов. Но в этой статье мы рассмотрим только определение факта того, что порт открыт.

Проверка одного порта через NetCat

На дистрибутивах Linux из коробки можно часто найти пакет NetCat. С её помощью можно проверять как TCP, так и UDP порты. К примеру, вот команда для проверки доступа к порту:

Ключ «z» указывает на то, что не надо отправлять никаких данных. Если не поставить этот ключ, то после выполнения команды сначала будет дан ответ удалось или не удалось соединиться с портом, а потом появится программа будет ждать ввода пользовательских данных в терминал. В таком случае необходимо набрать данные и нажать Enter для их отправки. Но когда необходимо только проверить доступность порта, то ключ «z» ставится.

Ключ «v» указывает на то, что должен быть распечатан результат запроса (есть или нет соединения). Продемонстрируем работу на примере проверки доступа доступ к 80-ому TCP порту на ip адресе 8.8.8.8:

nc -zv 8.8.8.8 80 Connection to 8.8.8.8 80 port [tcp/http] succeeded!

Сканирование диапазона портов NetCat

Иногда требуется просканировать целый диапазон портов. Это можно сделать с помощью NetCat, указав порты начала и окончания процедуры через тире:

nc -vz 8.8.8.8 80-83 Connection to 8.8.8.8 80 port [tcp/http] succeeded! nc: connect to 8.8.8.8 port 81 (tcp) failed: No route to host nc: connect to 8.8.8.8 port 82 (tcp) failed: No route to host nc: connect to 8.8.8.8 port 83 (tcp) failed: No route to host

По результатам скаирования видно, что открыт только 80-ый порт. Остальные порты закрыты.

Если закрытых портов слишком много, то логично будет скрыть их из вывода. Сделать это можно, передав вывод команды в конвейер и сделав отсев по слову «succeeded» через «grep»:

nc -vz 8.8.8.8 80-83 Connection to 8.8.8.8 80 port [tcp/http] succeeded!

Прослушивание порта NetCat

Как было сказано ранее, с помощью NetCat можно отправлять на порты произвольные данные (текст). Для этого надо лишь не ставить ключ «z». Но эта команда ещё умеет и прослушивать определённые порты. Чтобы начать прослушивание порта, нужно выполнить такую команду с ключом «l» (строчная L) и номером порта:

После выполнения этой команды курсор терминала остановится на следующей строке. Программа будет слушать порт и распечатывать все данные, которые приходят на него.

Чат с помощью NetCat

Как можно догадаться, если запустить на двух устройствах два экземпляра NetCat для отправки и прослушивания портов, то получится простейший чат.

Для этого надо открыть два терминала. В одном будет распечатываться принятые сообщения, а в другом будет ввод для отправки. Но нужно заранее договориться о портах. К примеру, один собеседник отправляет сообщения на порт 5000, а принимает по 5001. Второй наоборот — слушает 5000 и отправляет на 5001. А команда отправки у первого будет выглядеть так:

Источник

Оцените статью
Adblock
detector