- Кто слушает порт в Linux
- Найти процесс по номеру порта в Linux
- Пример использования netstat
- Пример использования fuser
- Пример использования lsof
- 4 способа узнать, какие порты слушают в Linux
- Содержание:
- 1. Использование команды Netstat
- 2. Использование команды ss
- 3. Использование команды Nmap
- 4. Использование команды lsof
- 11 примеров использования netstat
- 1. Список всех портов (как прослушиваемых, так и нет)
- 2. Список сокетов, находящихся в состоянии LISTEN
- 3. Просмотр статистики для каждого протокола
- 4. Отображение PID и имени процесса в выводе netstat
- 5. Разрешение имён в выводе netstat
- 6. Вывод информации netstat непрерывно
- 7. Неподдерживаемые системой семейства адресов
- 8. Маршрутизация ядра
- 9. Соответствие портов и процессов
- 10. Сетевые интерфейсы
- 11. netstat -lnptux
- Проверка занятости порта сервисом в Linux
- Oct 4, 2018 06:09 · 637 words · 3 minute read lsof netstat fuser tips
Кто слушает порт в Linux
Открытый доступ к порту хоть и является угрозой безопасности системы, но по сути ничего плохого не представляет до тех пор, пока его не начинает использовать программа. А чтобы выяснить какая программа слушает какой порт можно использовать утилиты «netstat» (или «ss») и «lsof».
Чтобы узнать информацию о программе, которая прослушивает определённый порт, можно воспользоваться командой «lsof» со следующими ключами: Здесь «номер_порта» — это цифра.
Пример результата выполнения команды с 53 портом: Но рекомендуем чаще запускать команду для получения списка программ, которые используют какие-либо tcp/udp порты. В этом помогает «netstat» или «ss»: Опишем все ключи, которые используются в команде
- -l показать только прослушиваемые «LISTEN» порты.
- -n показывать адреса как ip, а не пытаться определять домены.
- -t показывать TCP порты.
- -u показывать UDP порты.
- -p показать название программы, которая слушает порт.
Если запустить эту команду на веб сервере, то команда распечатает в терминале такую информацию (некоторые столбцы скрыты): По результату можно заметить какая программа прослушивает какой порт. Если ip в секции «Local Address» равен «127.0.0.1», то это локальное обращение. Такой порт можно не закрывать фаерволом — он и так не будет доступен извне. Но ip с нулями «0.0.0.0» говорят о том, что программа слушает все адреса. То есть она примет любой запрос, в том числе внешний.
Источник
Найти процесс по номеру порта в 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-системах, и теперь у вас ни один порт не останется неопознанным!
Источник
4 способа узнать, какие порты слушают в Linux
Состояние порта либо открыто, фильтрованный, закрыто, или нефильтрованный. Порт считается открытым, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.В этой статье мы об
Содержание:
Состояние порта либо открыто, фильтрованный, закрыто, или нефильтрованный. Порт считается открытым, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.
В этой статье мы объясним четыре способа проверки открытых портов, а также покажем вам, как определить, какое приложение прослушивает какой порт в Linux.
1. Использование команды Netstat
Netstat — это широко используемый инструмент для запроса информации о сетевой подсистеме Linux. Вы можете использовать его для печати всех открытых портов следующим образом:
$ sudo netstat -ltup
Флаг -l сообщает netstat о необходимости распечатать все прослушивающие сокеты, -t показывает все TCP-соединения, -u отображает все UDP-соединения, а -p включает печать имени приложения / программы, прослушивающего порт.
Чтобы печатать числовые значения, а не имена служб, добавьте флаг -n.
$ sudo netstat -lntup
Вы также можете использовать команду grep, например, чтобы узнать, какое приложение прослушивает определенный порт.
$ sudo netstat -lntup | grep «nginx»
Кроме того, вы можете указать порт и найти привязанное к нему приложение, как показано.
$ sudo netstat -lntup | grep «: 80»
2. Использование команды ss
Команда ss — еще один полезный инструмент для отображения информации о сокетах. Результат похож на результат netstat. Следующая команда покажет все порты прослушивания для TCP а также UDP соединения в числовом значении.
3. Использование команды Nmap
Nmap — это мощный и популярный инструмент для исследования сети и сканер портов. Чтобы установить nmap в вашей системе, используйте менеджер пакетов по умолчанию, как показано.
$ sudo apt install nmap [в Debian / Ubuntu] $ sudo yum install nmap [в CentOS / RHEL] $ sudo dnf install nmap [в Fedora 22+]
Чтобы просканировать все открытые / прослушивающие порты в вашей системе Linux, выполните следующую команду (выполнение которой займет много времени).
$ sudo nmap -n -PN -sT -sU -p- локальный хост
4. Использование команды lsof
Последний инструмент, который мы рассмотрим для запроса открытых портов, — это команда lsof, которая используется для вывода списка открытых файлов в Linux. Поскольку в Unix / Linux все является файлом, открытый файл может быть потоком или сетевым файлом.
Чтобы перечислить все файлы Интернета и сети, используйте параметр -i. Обратите внимание, что эта команда показывает сочетание имен служб и числовых портов.
Чтобы узнать, какое приложение прослушивает определенный порт, запустите lsof в таком виде.
Вот и все! В этой статье мы объяснили четыре способа проверки открытых портов в Linux. Мы также показали, как проверить, какие процессы привязаны к определенным портам. Вы можете поделиться своими мыслями или задать любые вопросы через форму обратной связи ниже.
Источник
11 примеров использования netstat
Команда netstat, входящая в стандартный набор сетевых инструментов UNIX, отображает различную network–related информацию, такую как сетевые подключения, статистику интерфейсов, таблицы маршрутизации, masquerade, multicast, и т.п.
В этой статье рассмотрим десять практических примеров использования команды netstat в Linux.
1. Список всех портов (как прослушиваемых, так и нет)
Перечислить все порты: netstat -a
Перечислить все TCP порты: netstat -at
Перечислить все UDP порты: netstat -au
2. Список сокетов, находящихся в состоянии LISTEN
Перечислить все прослушиваемые порты: netstat -l
Перечислить прослушиваемые TCP порты: netstat -lt
Перечислить прослушиваемые UDP порты: netstat -lu
Перечислить прослушиваемые UNIX сокеты: netstat -lx
3. Просмотр статистики для каждого протокола
Показать статистику всех портов: netstat -s
Показать статистику только TCP портов: netstat -st
Показать статистику только UDP портов: netstat -su
4. Отображение PID и имени процесса в выводе netstat
Опция netstat -p добавит «PID/Program Name» в вывод netstat, и может быть совмещена с любым другим набором опций. Это очень полезно при отладке, для определения того, какая программа работает на определённом порту.
5. Разрешение имён в выводе netstat
Когда вам не нужно резолвить имя хоста, имя порта, имя пользователя, используйте опцию netstat -n для вывода значений в цифровом формате. Команда покажет IP-адрес вместо хоста, номер порта вместо имени порта, UID вместо имени пользователя.
Это также ускорит вывод, так как netstat не станет выполнять ненужный поиск.
Для вывода цифровых значений только некоторых из этих пунктов, используйте следующие команды:
6. Вывод информации netstat непрерывно
Опция netstat -c будет выводить информацию непрерывно, в стиле top, обновляя экран каждые несколько секунд.
7. Неподдерживаемые системой семейства адресов
Опция netstat —verbose покажет подробный вывод, а в самом конце отобразит неподдерживаемые Address Family.
8. Маршрутизация ядра
Показать таблицу маршрутизации ядра: netstat -r
Примечание: Используйте netstat -rn для просмотра маршрута в цифровом формате без разрешения имён узлов.
9. Соответствие портов и процессов
Узнать, какой порт занимает определённая программа:
Выяснить, каким процессом используется определённый порт:
10. Сетевые интерфейсы
Показать список сетевых интерфейсов: netstat -i
Показать расширенную информацию об интерфейсах (аналогично ifconfig): netstat -ie
11. netstat -lnptux
Резюмируем вышеописанное и объединим ключи в одну полезную команду, которая покажет:
- -l все открытые порты (LISTEN)
- -t по протоколу TCP
- -u по протоколу UDP
- -x по протоколу UNIX Socket
- -n без резолва IP/имён
- -p но с названиями процессов и PID-ами
Примечание: Не все процессы могут быть идентифицированы последним ключом, чужие процессы показаны не будут. Вы должны иметь права root чтобы увидеть всё.
Источник
Проверка занятости порта сервисом в Linux
Oct 4, 2018 06:09 · 637 words · 3 minute read lsof netstat fuser tips
Однажды вам обязательно понадобится проверить используемый порт определенного сервиса (или наоборот, найти сервисы, слушающие конкретный порт) — в Linux существует несколько утилит командной строки, которые могут с этим помочь. Давайте разберемся!
Первым делом на ум приходит утилита netstat , с помощью которой можно проверить сетевые соединения, статистику сетевых интерфейсов, таблицу маршрутизации и т. д.
Устанавливается данная утилита в разных дистрибутивах по-разному, например, для RedHat и CentOS:
Для вывода детальной информации о всех TCP и UDP ендпоинтах можно воспользоваться следующей командой:
Вывод будет примерно следующим:
- -p — вывод ID процесса и его имени;
- -n — вывод адресов;
- -l — вывод сокетов;
- -t — вывод TCP соединений;
- -u — вывод UDP соединений.
Найти сервис, запущенный на определенном порту можно так:
Аналогично можно найти на каком порту запущен определенный сервис:
Также для наших целей подойдет утилита командной строки fuser . По умолчанию она не установлена в большинстве операционных систем, чтобы установить ее в Centos/RedHat делаем так:
Например, чтобы найти идентификаторы процессов (PIDs), запущенных на 80-м порту, выполняем команду:
Результат выполнения будет примерно следующим:
Далее можем найти имя процесса по его идентификатору (PID):
Еще один способ — использование утилиты lsof . Установка ее в RedHat/CentOS выглядит так:
Вывод всех активных TCP и UPD соединений:
Результатом будет примерно следующее:
Проверить использование конкретного порта можно так:
Напоследок можно также воспользоваться утилитой whatportis . Ее установка в RedHat/Centos требует чуть больше действий:
В Debian/Ubuntu все гораздо проще:
В общем виде использование утилиты выглядит так:
Если вам неизвестно точное имя сервиса, можно воспользоваться опцией —like , например:
Также доступен вывод информации в json-формате:
Источник