- Найти процесс по номеру порта в Linux
- Пример использования netstat
- Пример использования fuser
- Пример использования lsof
- Как проверить используется ли порт в Linux ?
- Как узнать занят ли порт в Linux
- Получение списка всех открытых портов в работе
- Заключение
- 4 способа узнать, какие порты прослушиваются в Linux
- 1. Использование команды Netstat
- 2. Использование команды ss
- 3. Использование команды Nmap
- 4. Использование команды lsof
- Как посмотреть открытые порты в Linux
- Как посмотреть открытые порты linux
- 1. netstat
- 3. lsof
- 4. Nmap
- 5. Zenmap
- Выводы
- Linux. Кто сидит на портах?
- Узнать название программы через занимаемый порт
Найти процесс по номеру порта в Linux
При работе в Unix-системах мне частенько приходится определять, какой процесс занимает порт, например, чтобы остановить его и запустить на нём другой процесс. Поэтому я решил написать эту небольшую статью, чтоб каждый, прочитавший её, мог узнать, каким процессом занят порт в Ubuntu, CentOS или другой ОС из семейства Linux.
Как же вычислить, какие запущенные процессы соотносятся с занятыми портами? Как определить, что за процесс открыл udp-порт 2222, tcp-порт 7777 и т.п.? Получить подобную информацию мы можем нижеперечисленными методами:
netstat утилита командной строки, показывающая сетевые подключения, таблицы маршрутизации и некоторую статистику сетевых интерфейсов; fuser утилита командной строки для идентификации процессов с помощью файлов или сокетов; lsof утилита командной строки, отображающая информацию об используемых процессами файлах и самих процессах в UNIX-системе; /proc/$pid/ в ОС Linux /proc для каждого запущенного процесса содержит директорию (включая процессы ядра) в /proc/$PID с информацией об этом процессе, в том числе и название процесса, открывшего порт.
Использование вышеперечисленных способов может потребовать права супер-пользователя.
Теперь давайте рассмотрим каждый из этих способов по отдельности.
Пример использования netstat
Введём в командную строку команду:
Получим примерно такой результат:
Из вывода видно, что 4942-й порт был открыт Java-приложением с PID’ом 3413. Проверить это можно через /proc :
Примерный результат выполнения команды:
При необходимости получения информации по конкретному порту (например, 80-му, используемого обычно для HTTP) вместо отображения всей таблицы можно grep -ануть результат:
Результат будет примерно такой:
Пример использования fuser
Для того, чтобы вычислить процесс, занимающий порт 5050, введём команду:
И получим результат:
Аналогичным образом, как мы делали выше, можно посмотреть процесс в его директории /proc/$PID , в которой можно найти много интересной дополнительной информации о процессе, такую как рабочая директория процесса, владелец процесса и т.д., но это выходит за рамки этой статьи.
Пример использования lsof
При использовании lsof введите команду по одному из шаблонов:
Пример реального использования:
После этого мы можем получить более полную информацию о процессах с PID’ами 2123, 2124 и т.д..
На выходе получим примерно следующее:
Получить информацию о процессе также можно следующим проверенным способом:
В этом выводе можно выделить следующие параметры:
- 2727 — PID;
- www-date — имя пользователя владельца;
- www-date — название группы;
- /usr/sbin/apache2 -k start — название команды с аргументами;
- 14:27:33 — время работы процесса в формате [[дд-]чч:]мм:сс;
- Mon Nov 30 21:21:28 2015 — время старта процесса.
Надеюсь, у меня получилось доступно объяснить, как определить процесс по порту в Linux-системах, и теперь у вас ни один порт не останется неопознанным!
Источник
Как проверить используется ли порт в Linux ?
Сетевой порт в Linux – это не что иное, как число, обозначающее одну из сторон соединения между двумя системами. Все сетевые устройства используют номера портов, чтобы определить, какому процессу следует доставить сообщение. Доменное имя и IP-адрес можно сравнить с уличными адресами, а номера портов – с номерами комнат.
Популярные номера портов в Linux:
- HTTP – TCP 80
- HTTPS – TCP 443
- POP3 – TCP 110
- SMTP – TCP 25
- SSH – TCP 22
- DNS/DOMAIN – TCP/UDP 53
Используйте следующие команды для вывода номеров всех портов:
Как узнать занят ли порт в Linux
Откроем окно терминала и наберём одну из следующих команд:
Теперь рассмотрим один из примеров более детально. С помощью команды ss или netstat проверим используется ли TCP порт 443 в нашей системе
Если порт используется, то вывод будет таким
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3183/nginx: master
В нашем примере порт 443 используется сервисом Nginx. Ключи:
- -t : показывает TCP сокет/порт
- -u : показывает UDP сокет/порт
- -l : показывает только открытые порты
- -p : показывает название процесса который открыл сокет/порт
- -n : просмотреть адреса и номера портов в числовом формате.
Получение списка всех открытых портов в работе
Получите примерно следующее:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3146/php-fpm: maste
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 3150/exim
tcp 0 0 0.0.0.0:333 0.0.0.0:* LISTEN 3183/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3183/nginx: master
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 3150/exim
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3161/pure-ftpd (SER
tcp 0 0 0.0.0.0:33333 0.0.0.0:* LISTEN 3142/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3150/exim
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3183/nginx: master
Заключение
Вы научились определять, используется ли тот или иной порт в системе под управлением Linux, с помощью различных утилит командной строки.
Источник
4 способа узнать, какие порты прослушиваются в Linux
Состояние порта может быть open, filtered, closed, или unfiltered.
Говорят, что порт открыт, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.
В этой статье мы объясним четыре способа проверки открытых портов, а также покажем вам, как найти, какое приложение прослушивает какой порт в Linux.
1. Использование команды Netstat
Netstat – широко используемый инструмент для запроса информации о сетевой подсистеме Linux.
Вы можете использовать его для вывода всех открытых портов следующим образом:
Флаг -l указывает netstat выводить все прослушивающие сокеты, -t показывает все TCP-соединения, -u отображает все соединения UDP, а -p позволяет вывести имя приложения / программы, прослушивающее порт.
Чтобы вывести числовые значения, а не имена служб, добавьте флаг -n.
Вы также можете использовать команду grep, чтобы узнать, какое приложение прослушивает конкретный порт, например.
В качестве альтернативы вы можете указать порт и найти приложение, как показано ниже:
2. Использование команды ss
ss – еще один полезный инструмент для отображения информации о сокетах.
Он выглядит так же, как и для netstat.
Следующая команда покажет все порты прослушивания для соединений TCP и UDP в числовом значении.
3. Использование команды Nmap
Nmap – мощный и популярный инструмент для исследования сети и сканер портов.
Чтобы установить nmap в вашу систему, используйте диспетчер пакетов по умолчанию, как показано ниже:
Чтобы отсканировать все открытые / прослушивающие порты в вашей Linux-системе, выполните следующую команду (это займет много времени для завершения).
4. Использование команды lsof
Конечным инструментом, который мы рассмотрим для запросов к открытым портам, является команда lsof, которая используется для вывода открытых файлов в Linux.
Поскольку все в Unix / Linux -файлы , открытым файлом может быть поток или сетевой файл.
Чтобы перечислить все интернет-файлы и сетевые файлы, используйте опцию -i.
Обратите внимание, что эта команда показывает сочетание имен служб и числовых портов.
Чтобы узнать, какое приложение прослушивается на определенном порту, запустите lsof в этой форме.
Источник
Как посмотреть открытые порты в 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 что означают любой доступный адрес:
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 — мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:
sudo apt install nmap
Затем можно использовать:
Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.
Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
wget -O — -q eth0.me
Дальше запускаем сканирование:
В результате мы видим, что открыт порт 80 веб-сервера и 22 — порт службы ssh, я их не открывал, эти порты открыты роутером, 80 — для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.
5. Zenmap
Программа Zenmap — это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:
sudo apt install zenmap
Запустить программу можно из главного меню или командой:
Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:
После завершения сканирования утилита вывела список открытых портов Linux.
Выводы
В этой статье мы рассмотрели инструменты, которые вы можете использовать для того чтобы узнать узнать открытые порты linux. Инструментов не так много как для просмотра информации об оперативной памяти или процессоре, но их вполне хватает. А какими программами пользуетесь вы? Напишите в комментариях!
Источник
Linux. Кто сидит на портах?
Дата 11.10.2020 Автор Alex Рубрика Интернет
Контроль всех входов и выходов — это основа безопасности. Поэтому для определения уровня защищённости машины стоит первым делом проверить наличие открытых портов. Если они есть, то определить какие именно программы открывают эти порты. Попробуем это сделать.
Для получения списка открытых портов используем утилиту «netstat», которая показывает все TCP/UDP входящие/исходящие соединения. Выполним следующую команду от лица суперпользователя:
В этой команде используется пять ключей, чтобы сформировать список только из тех портов, которые прослушиваются, и распечатать названия программ, которые это делают. Разберём все ключи:
-l показать только прослушиваемые «LISTEN» порты
-n показывать сетевые адреса как ip адреса (числа), а не пытаться определять домены
-t показывать TCP порты
-u показывать UDP порты
-p показывать программу, которая слушает порт
При проверке портов обращайте внимание на ip адрес порта. Если он 127.0.0.*, то это внутренний адрес вашего устройства. То есть извне нельзя получить к нему доступ. К примеру, не стоит беспокоиться, если увидите процесс systemd-resolve по адресу 127.0.0.53:53. Этот процесс обслуживает DNS кеш устройства. Не удаляйте его, он нужен для работы интернета.
Но если вы видите порты с ip адресом «0.0.0.0» или «::», то к этим портам можно получить доступ извне. Но только если настроено правило в фаерволе.
Сейчас на замену «netstat» приходит утилита «ss». Ключи у них совпадают, поэтому можно писать:
Узнать название программы через занимаемый порт
Если нужно узнать название программы, которая занимает определённый порт, то можно получить его с помощью команды:
Источник