- Найти процесс по номеру порта в Linux
- Пример использования netstat
- Пример использования fuser
- Пример использования lsof
- Как посмотреть открытые порты в Linux
- Как посмотреть открытые порты linux
- 1. netstat
- 3. lsof
- 4. Nmap
- 5. Zenmap
- Выводы
- Кто слушает порт в Linux
- Как посмотреть на Linux открытые порты — описание способов
- Как посмотреть открытые порты Linux через «nmap»
- Статистика открытых сетевых соединений в Linux через команду «netstat»: описание ее атрибутов
- Узнать, кто слушает порт в Linux через «lsof»: описание атрибутов команды
- Статистика открытых портов в Linux через ss и описание ее атрибутов
- Просмотр открытых портов в Linux через «tcpdump» и описание атрибутов утилиты
- Как в 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
Сетевые порты — это механизм, с помощью которого операционная система определяет какой именно программе необходимо передать сетевой пакет. Здесь можно привести пример с домом. Например, почтальону необходимо доставить посылку. Он доставляет посылку к дому, это 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
Открытый доступ к порту хоть и является угрозой безопасности системы, но по сути ничего плохого не представляет до тех пор, пока его не начинает использовать программа. А чтобы выяснить какая программа слушает какой порт можно использовать утилиты «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 открытые порты — описание способов
Любой разбирающийся в персональных компьютерах человек рано или поздно сталкивается с задачей просмотра открытых портов. Сетевые порты представляют собой некие механизмы, которые используются операционной системой для определения того, какому именно приложению или игре передать часть сетевых пакетов. Знать эту информацию важно, так как использование одного и того же порта различными службами приведет к ошибке, а сетевая программа не сможет корректно работать, если ее порты будут закрыты в настройках ОС. Необходимо разобраться с тем, как посмотреть в Linux открытые порты, с помощью каких команд это можно сделать, а также для чего они нужны.
Как посмотреть открытые порты Linux через «nmap»
Если сетевой порт открыт, то это значит, что та или иная программа (служба или сервис) использует его для взаимодействия с другими приложениями или серверами разработчика посредством глобальной сети Интернет или локальной вычислительной сети. Для понимания сути портов обычно новичкам приводят в пример обычный дом, в который почтальон приносит посылку. Сотрудник почты доносит конверт или ящик до дома — это компьютер, а точнее его айпи-адрес. Далее жильцы дома должны посмотреть, кому именно доставлена посылка, и отнести ее в соответствующую комнату. Эта комната и будет портом.
В Linux порты можно проверить альтернативной командой «zenmap»
Обратите внимание! Способов произвести просмотр открытых портов Linux множество, так как в этой операционной системе существуют не одна команда и утилита, позволяющие это делать. Ниже описана команда «nmap», являющаяся наиболее популярной.
В операционной системе Linux список открытых портов можно узнать, набрав в терминале команду «nmap». Она вызывает утилиту с аналогичным названием, которая является многофункциональным сетевым сканером для поиска и тестирования удаленных узлов в Глобальной сети, но ее также можно использовать и локально.
«Nmap» дает возможность не только на ОС Linux проверить порт, но и просмотреть службы, которые их используют, а также выявить возможные уязвимости. Для начала работы утилиту следует инсталлировать с помощью простой команды «$ sudo apt install nmap». После загрузки и установки из стандартного репозитория ПО будет готово к работе. Для запуска сканирования набирают команду «$nmap localhost».
Простое сканирование возможно и без опций, но если требуется задать ряд параметров, то рекомендуется сперва изучить их значение. Кстати, для поиска открытых внешних портов используют команду «$ wget -O — -q eth0.me», а затем «$nmap 185.29.237.91».
«Nmap» может открывать данные обо всех портах, имеющихся в операционной системе
Статистика открытых сетевых соединений в Linux через команду «netstat»: описание ее атрибутов
Это базовая утилита линукс, которая не требует скачивания и установки, так как имеется практически во всех дистрибутивах операционной системы. Она позволяет быстро проверить доступность порта на Linux и показать открытие сетевые соединения.
Пользоваться командой можно и безо всяких атрибутов, но для максимально подробного отображения нужной информации без них не обойдись. Параметры у утилиты следующие:
- «-l / —listening» — проверка прослушиваемых соединений;
- «-p / —program» — отображение названия программы и ее PID’а;
- «-t / —tcp» — отображение TCP-соединений;
- «-u / —udp» — отображение UDP-соединений;
- «-n / —numeric» — показ IP-адресов в виде чисел.
Важно! Если соединение открытое и ожидает подключения, то оно обладает типом «listen» и рядом с ним будет указан айпи-адрес, используемый для выполнения этого подключения. Значение IP может быть любым (*/0.0.0.0) или конкретным (в этом случае оно будет указано).
Пример использования «netstat»
Узнать, кто слушает порт в Linux через «lsof»: описание атрибутов команды
Еще одна стандартная программа операционной системы, позволяющая определить прослушиваемые порты на Linux. Помимо этого, она выводит в консоль все открытие в ОС соединения, включая сетевые (для этого ее выполняют с атрибутом «—i»). Для просмотра именно соединений, а не сетевых служб «lsof» запускается с параметром «—P». Команда выглядит следующим образом: «$ sudo lsof -i —P». Если нужно узнать, какие процессы и службы пользуются, например, семидесятым (70) соединением, следует набрать строку «$sudo lsof -i -P | grep :80».
Обратите внимание! Если нужно найти именно TCP соединения, то прописывают «lsof -i tcp:$portNumber», а если UDP, то «lsof -i udp:$portNumber». В данном случае параметр «$portNumber» означает номер соединения.
Еще один способ взаимодействовать с портами — «lsof»
Статистика открытых портов в Linux через ss и описание ее атрибутов
Команда «ss» — это более функциональная и современная замена утилите «netstat». Последняя получает данные из специальной папки «/proc», а «ss» запрашивает информацию у подсистемы ядра линукс. Вследствие этого «ss» функционирует более быстро и точно. Она обладает аналогичными опциями и атрибутами. Запуск производится по команде «$sudo ss —tulpn». Она отображает тип соединения, его состояние, локальный адрес и т. д.
Если нужно проверить, какие именно процессы работают, к примеру, на 80-м соединении, необходимо прописать или скопировать фразу «$ sudo ss -tulpn | grep :80» и нажать на клавишу «Ввод».
Системная утилита «ss» является более современной альтернативой «netstat»
Просмотр открытых портов в Linux через «tcpdump» и описание атрибутов утилиты
Команда «tcpdump» — это один из самых важных инструментов для специалистов, работающих с информационной безопасностью компьютерных сетей, основанных на линуксе. Если пользователь хочет овладеть всеми тонкостями настройки протоколов TCP и IP, то он должен быть хорошо знаком с функциями «tcpdump».
Далее приведено несколько важных атрибутов этой утилиты, позволяющие проверять свободные портовые соединения и узнавать айпи-адреса служб, использующих их:
- «-nn» — отображение айпи-адресов и номеров портов вместо имени хоста и названия используемого протокола передачи данных;
- «-i any» — прослушивание всем интерфейсов для поиска скрытого тарифа, если таковой имеется;
- «-q» — показ минимальных данных о пакете трафика.
Также есть три выражения: «type», «dir» и «prito». Опции тоже три: хосты, сети и порты. Комбинации для выполнения директорий: «src» и «dst». Протоколы по запросу: TCP, UDP, ICMP, AH и т. д. К примеру, для показа интернет-трафика, который связан с тем или иным портом, необходимо выполнить команду «# tcpdump port 3389», а затем «tcpdump src port 1025». Показ трафика одного протокола выполняется так: «# tcpdump icmp».
Пример использования «tcpdump»
Как в Linux посмотреть занятые порты
Занятые порты — это те сетевые соединения, которые уже используются какими-либо программами или службами. Вообще портовые связи могут находиться в различных состояниях: открытом, закрытом, отфильтрованном и неотфильтрованном. Если сказано, что соединение открыто, то имеется в виду, что использующая его программа или служба на проверяемом персональном компьютере выполняет прослушивание входящих пакетов. Узнать, занят ли port на Linux, можно с помощью следующих способов.
В первом из них используется команда «netstat», которая уже была описана в этом материале. Она идеально подходит для сбора любой сетевой информации об операционной системе. Вывод всех портовых соединений осуществляется по команде «$ sudo netstat —ltup». Атрибут «l» указывает на то, что нужно вывести сокеты, «t» работает с TCP-соединениями, а «u» — с UDP. Последний параметр «p» выводит имена процессов, которые прослушивают порты в данный момент времени.
Второй способ заключается в использовании более функциональной утилиты «ss», обладающей аналогичными параметрами и методом вывода информации. Следующая строка покажет все соединения на протоколах TCP и UDP в формате чисел: «$ sudo ss -lntu».
Еще один быстрый способ получить данные обо всех открытых и закрытых портах заключается в использовании утилиты «nmap» — мощного и известного средства для сканирования сетей линукс, а также проверки сетевых соединений. По умолчанию этого софта нет в списке программ, поэтому его нужно будет установить. Для этого прописывают в командной строке запись и выполняют ее: «$ sudo apt install nmap» (подходит для стандартной линукс и Ubuntu).
Обратите внимание! Сканирование всех соединений с помощью этой утилиты выполняется путем ввода строки «$ sudo nmap -n -PN -sT -sU -p- localhost». Она позволяет определить все открытые, закрытые и прослушивающие порты.
Последняя программа — «lsof». Для вывода всех файлов глобальной или локальной сети вводят команду с использованием атрибута «—i». Он способен продемонстрировать не только имена служб, но и их числовые порты: «$ sudo lsof —i».
Использование команды «$ sudo lsof —i» в терминале
Таким образом, что в операционной системе линукс есть множество способов проверить, открыт тот или иной порт, а также проанализировать дополнительную информацию по нему.
Источник