Ubuntu видит открытые порты

Обновлено: 02.07.2024

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

Что означает открытый порт?

Прежде чем углубляться в проверку открытых портов, давайте сначала узнаем, что означают открытые порты. Открытый порт или порт прослушивания — это порт, на котором запущено какое-либо приложение. Работающее приложение прослушивает какой-то порт, и мы можем общаться с этим приложением через этот прослушивающий порт. Если приложение работает на порту, и мы пытаемся запустить другое приложение на том же порту, ядро ​​выдаст ошибку. Это одна из многих причин, по которой мы проверяем наличие открытых портов перед запуском приложений.

Список открытых портов с помощью nmap

Network Mapper, известный как nmap, – это бесплатный инструмент с открытым исходным кодом, который используется для сканирования портов в системе. Он используется для поиска уязвимостей, обнаружения сетей и поиска открытых портов. В этом разделе мы будем использовать nmap для получения списка открытых портов в системе. Прежде всего, обновите кеш в Ubuntu перед установкой nmap:

Nmap можно установить с помощью следующей команды в терминале:

После установки nmap проверьте установку, проверив версию nmap:


Если он выдает версию nmap, значит, он установлен правильно, в противном случае повторите приведенные выше команды, чтобы правильно установить nmap. Nmap используется для выполнения нескольких задач, связанных с сетями, и сканирование портов является одной из таких задач. Инструмент nmap используется вместе со многими опциями. Мы можем получить список всех доступных опций с помощью следующей команды:

Итак, чтобы сканировать ваш локальный хост, используйте следующую команду:


В нем будут перечислены все открытые порты на локальном хосте, как показано на изображении выше. Мы также можем использовать nmap для сканирования удаленных хостов:

Кроме того, мы можем использовать имя хоста удаленного сервера вместо IP-адреса:

Команду nmap также можно использовать для сканирования диапазона IP-адресов. Укажите диапазон IP-адресов в команде, как в приведенной ниже команде:

Приведенная выше команда просканирует все IP-адреса от 192.168.1.1 до 192.168.1.10 и отобразит результат в терминале. Для сканирования портов в подсети мы можем использовать nmap следующим образом:

Приведенная выше команда просканирует все хосты с IP-адресами в подсети, указанной в команде.

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


Мы можем использовать nmap для сканирования одного порта в системе, указав порт с помощью флага «-p» вместе с nmap, как в следующей команде:


Диапазон портов также можно просканировать в системе с помощью nmap следующим образом:


Мы можем сканировать все порты системы с помощью nmap:


Чтобы получить список наиболее часто открытых портов в вашей системе, вы можете использовать команду nmap с флагом ‘-F’:


TCP-порты можно сканировать в системе с помощью nmap, просто добавив флаг «-T» вместе с командой nmap:


Аналогично для портов UDP вы можете использовать флаг ‘-U’ с командой nmap:


Список открытых портов с помощью lsof

Команда lsof, также известная как «список открытых файлов», используется для получения информации об открытых файлах, используемых различными процессами в UNIX и LINUX, таких как операционные системы. В большинстве дистрибутивов Linux этот инструмент предустановлен. Мы можем проверить установку lsof, просто проверив его версию:


Если он не показывает версию, значит lsof не установлен по умолчанию. Мы по-прежнему можем установить его, используя следующие команды в терминале:

Мы можем использовать команду lsof вместе с другими параметрами. Список всех доступных опций можно отобразить с помощью следующей команды в терминале:

Теперь в этом разделе мы собираемся использовать lsof для отображения портов системы различными способами:


Приведенная выше команда отобразила все открытые порты. Мы также можем использовать команду lsof для отображения всех открытых сокетов:


Мы можем вывести список отфильтрованных портов на основе протокола с помощью lsof. Запустите приведенную ниже команду, чтобы вывести список всех типов TCP-подключения:


Аналогичным образом мы можем вывести список всех типов UDP-подключений с помощью lsof следующим образом:


Список открытых портов с помощью netstat

Netstat, также известный как сетевая статистика, представляет собой программу командной строки, используемую для отображения подробной информации о сетях. Он отображает как входящие, так и исходящие TCP-соединения, таблицы маршрутизации, сетевые интерфейсы и т. д. В этом разделе мы будем использовать netstat для вывода списка открытых портов в системе. Инструмент netstat можно установить, выполнив следующие команды:

После выполнения приведенных выше команд вы можете проверить установку, проверив версию netstat:


Если отображается версия net-tools, значит, установка прошла успешно, в противном случае запустите команды установки еще раз. Чтобы получить обзор всех доступных параметров, которые можно использовать вместе с командой netstat, выполните следующую команду:

Мы можем получить список всех прослушиваемых портов с помощью команды netstat в Ubuntu, выполнив следующую команду:


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


Для прослушивания портов UDP используйте следующую команду:


Чтобы получить список всех прослушиваемых портов UNIX, вы можете запустить в терминале следующую команду:


Вывод списка открытых портов с помощью ss

Команда ss используется для отображения информации о сокетах в системе Linux. Она отображает более подробную информацию о сокетах, чем команда netstat. Команда ss предустановлена ​​для большинства дистрибутивов Linux, поэтому вам не нужно устанавливать ее перед использованием. Вы можете получить список всех опций, которые можно использовать вместе с командой ss, запустив команду «man» с ss:

Чтобы получить список всех подключений независимо от их состояния, используйте команду ss без каких-либо флагов:


Чтобы получить список всех прослушиваемых портов, используйте команду ss с флагом «-l». Флаг ‘-l’ используется для отображения только прослушиваемых портов:


Чтобы получить все прослушиваемые порты TCP, мы можем использовать флаги "-t" и "-l" вместе с командой ss:


Аналогичным образом мы можем получить список всех прослушиваемых UDP-портов с помощью команды ss вместе с флагами «-u» и «-l»:


Команду ss также можно использовать для получения списка всех подключений к исходному или целевому порту. В следующем примере мы собираемся получить список всех соединений с целевым или исходным портом 22:


Вы получите список всех входящих и исходящих подключений, если вы подключились к удаленной системе с помощью ssh.

Заключение

Системным администраторам, специалистам по безопасности и другим лицам, связанным с ИТ, важно знать об открытых портах на серверах.Linux богат инструментами, используемыми для диагностики сетей, и предоставляет множество инструментов, которые могут быть полезны для различных видов сетевой деятельности. В этом руководстве мы использовали некоторые инструменты, такие как netstat, ss, lsof и nmap, для проверки открытых портов в Ubuntu. Прочитав эту статью, вы сможете легко составить список всех прослушиваемых портов на вашем Linux-сервере разными способами.

Об авторе

Усама Азад

Энтузиаст по безопасности, который любит Terminal и Open Source. Моя область знаний — Python, Linux (Debian), Bash, тестирование на проникновение и брандмауэры. Я родился и вырос в Вазирабаде, Пакистан, и в настоящее время учусь в Национальном университете науки и технологий (NUST). В Твиттере меня зовут @UsamaAzad14

В этом руководстве объясняются различные методы проверки открытых портов на сервере Webdock. Открытый порт — это порт, на котором запущен какой-либо процесс или приложение, и он может принимать данные. В этом руководстве мы будем использовать различные инструменты, чтобы узнать, какие порты открыты.

Открытый порт – это порт, который прослушивает и принимает соединения со службой. Вы можете обнаружить, что у вас есть службы, прослушивающие порты, которые, несмотря на это, недоступны из Интернета. Вот что делает ваш брандмауэр: блокирует доступ к портам, к которым вы явно не разрешили доступ. Руководство по управлению брандмауэром можно найти в нашем руководстве UFW здесь.

Предпосылки

  • Облачный веб-экземпляр Ubuntu (18.04 или более поздней версии)
  • У вас есть доступ к оболочке вашего VPS

Разница между адресами

Важно, прослушивает ли служба порт на 127.0.0.1 (localhost) или на 0.0.0.0. Обычно это означает, что служба, прослушивающая на localhost, доступна только с самого хост-компьютера и не широкий интернет. Если вы видите, что служба прослушивает все интерфейсы (*) или 0.0.0.0, значит, служба доступна из Интернета, если только она не защищена активным брандмауэром, что вам нужно будет проверить в Iptables или запустив «ufw status», если вы используете UFW для управлять брандмауэром.

Проверка открытых портов с помощью nmap

Network mapper или nmap — это инструмент с открытым исходным кодом, используемый для сканирования сетей и поиска открытых портов на хосте. Следующая команда просканирует все порты на хосте.

Чтобы проверить, открыт ли конкретный порт, используйте параметр -p для указания порта.

Будьте осторожны при использовании nmap, так как если вы случайно начнете сканировать всю сеть, вы рискуете, что ваш IP-адрес будет забанен.

Проверка открытых портов с помощью lsof

Команда lsof (список открытых файлов), как следует из названия, используется для вывода списка всех открытых файлов в Linux. Эти файлы могут быть сетевыми сокетами, дисковыми файлами или устройствами, открытыми различными процессами. Используйте команду lsof вместе с параметрами -nP, чтобы получить список всех открытых сокетов.

Укажите только открытые сокеты TCP.

Для открытых сокетов UDP используйте следующую команду.

Проверка открытых портов с помощью netstat

Команду netstat (статистика сети) можно использовать для мониторинга и сканирования сетей. Получите список всех открытых портов tcp и udp с помощью команды netstat.

Только порты TCP.

Только для портов UDP.

Проверить открытые порты с помощью ss

Команда ss используется для вывода подробной информации о сетевых сокетах. Она предоставляет более подробную информацию, чем команда netstat. Перечислите все прослушиваемые порты в системе Linux.

Чтобы получить список только прослушиваемых TCP-портов, используйте флаг -lt.

Для портов прослушивания UDP используйте флаг -lu.

Заключение

Существуют различные инструменты для мониторинга открытых портов на вашем сервере. В этом руководстве мы обсудили, как мы можем проверить наличие открытых портов на сервере Webdock, используя различные инструменты командной строки, такие как nmap, ss, netstat и lsof.

  • Связанные
    • Контрольный список безопасности сервера
    • Как работать с вашим брандмауэром (UFW – несложный брандмауэр)
    • Настройки безопасности SSH
    • Как настроить Fail2Ban для общих служб
    • Как защитить Nginx с помощью брандмауэра Naxsi на Ubuntu 18.04 VPS
    • Как защитить Nginx с помощью брандмауэра Naxsi на Ubuntu 20.04 VPS
    • Как настроить заголовки безопасности в Nginx и Apache
    • Как включить шифрование для MariaDB

    Если вам нужна помощь по этой статье или у вас есть какие-либо вопросы относительно хостинга в целом, свяжитесь с нами.

    Webdock – это хостинг-провайдер мирового уровня, предназначенный для профессионалов и полупрофессионалов и предлагающий абсолютно потрясающий и надежный хостинг.

    template 1599665 640

    В этом кратком учебном пособии учащимся и новым пользователям показано, как найти все используемые или прослушиваемые порты при использовании систем Ubuntu Linux.

    Если вы являетесь администратором сервера или веб-мастером и хотите убедиться, что на вашем сервере Ubuntu Linux открыты только разрешенные порты, следующие шаги должны вам пригодиться.

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

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

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

    Сетевой порт идентифицируется по его номеру, соответствующему IP-адресу и типу протокола связи, например TCP или UDP.

    Чтобы идентифицировать прослушиваемые порты в Ubuntu, выполните следующие действия:

    Используйте команду netstat

    netstat – это инструмент командной строки, который может предоставить информацию о сетевых подключениях, включая IP-адреса, порты и службы, обменивающиеся данными через эти порты.

    Если вы еще не установили инструмент netstat, используйте приведенные ниже команды, чтобы установить его.

    sudo apt установить сетевые инструменты

    Если вы хотите вывести список всех портов, доступных на сервере, выполните следующие команды:

    sudo netstat -tunlp

    Подробнее о параметрах команды см. в списке ниже:

    • -t Показать порты TCP.
    • -u Показать порты UDP.
    • -n Показывать числовые адреса вместо разрешения хостов.
    • -l Показать только прослушиваемые порты.
    • -p Показать PID и имя процесса слушателя.

    Когда вы запускаете приведенную выше команду с параметрами, вы должны увидеть строки, подобные приведенным ниже:

    Это должно дать вам много информации.

    Однако, если вы хотите увидеть только определенное имя службы или порт, вы можете использовать команду netstat с опцией выше с grep.

    В приведенном ниже примере показано, как сканировать открытые порты и отображать только порт 22.

    sudo netstat -tnlp | группа :22

    Вы должны увидеть строку, аналогичную приведенной ниже:

    Приведенная выше команда с использованием grep показывает только порт 22, и служба sshd прослушивает этот порт.

    Используйте команду ss

    netstat не устанавливается в Ubuntu по умолчанию. команда ss устанавливается вместо netstat. Как и в случае с netstat, команда ss используется для отображения информации о сети в системах Linux.

    Команды netstat и ss имеют почти одинаковые параметры команд. поэтому, если вы используете netstat, команда ss должна работать почти так же.

    Чтобы просмотреть все прослушиваемые порты в Ubuntu с помощью команды ss, выполните следующую команду:

    Вы должны увидеть подобный экран, как показано ниже:

    Вывод выше аналогичен команде netstat, которую мы запускали ранее.

    Используйте команду lsof

    Команда lsof — еще одна мощная утилита, доступная для систем Linux, которая позволяет отображать сетевую информацию.

    Чтобы получить список всех прослушиваемых TCP-портов с помощью команды lsof, запустите ее со следующими параметрами:

    sudo lsof -nP -iTCP -sTCP:LISTEN

    Вы должны увидеть похожие строки, как показано ниже:

    Также должны быть перечислены открытые порты.

    Теперь вы знаете, как составить список портов в Ubuntu. Вы можете использовать любую из приведенных выше команд, чтобы найти неиспользуемые порты и отключить для них службы.

    В сети порт представляет собой интересную функцию. Это способ для сетевого трафика определить целевое приложение или службу. Каждый процесс/служба получает свой уникальный порт. Порт всегда будет связан с IP-адресом хоста вместе с протоколом.

    Это моя любимая метафора для описания того, что такое порт. Представьте себе корабль с грузом, который отправится в далекую страну. Какая информация необходима, чтобы правильно добраться до пункта назначения? Для простоты предположим, что ему нужна страна (IP-адрес) и порт, в который пришвартуется корабль.

    В этом руководстве вы узнаете, как составить список открытых портов в Linux.

    Порты в Linux

    Порты действуют как конечная точка связи. Это 16-битное число (от 0 до 65535 в десятичном формате). Хотя диапазон велик, для простоты использования порты разделены на три категории. Каждая категория помечена как диапазон значений порта:

    • от 0 до 1023: это «общеизвестные» порты, также известные как «системные» порты, которые зарезервированы для системных процессов, предлагающих широкий спектр сетевых услуг. Для привязки к «известному» порту процесс должен иметь привилегии суперпользователя.
    • от 1024 до 49151: это «зарегистрированные» порты, также известные как «пользовательские» порты, назначенные IANA для определенных служб. По запросу процесс может иметь к ним доступ. В большинстве систем для использования этих портов не требуются права суперпользователя.
    • 49152–65535: это «динамические» порты, также известные как «частные».Эти порты не могут быть зарегистрированы в IANA. Эти порты открыты для использования для частных или настраиваемых служб, а также могут автоматически выделяться как эфемерные порты (кратковременные порты, используемые IP).

    В Linux существует несколько способов проверки открытых портов. По умолчанию любой порт остается закрытым, если его не использует приложение. Если порт открыт, то он должен быть назначен службе/процессу.

    Список открытых портов

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

    Узнать, какие порты в данный момент открыты, может быть полезно в различных сценариях. Можно настроить выделенный порт для определенного приложения. Открытый порт также может указывать на вторжение в сеть.

    Следующие методы демонстрируются в Ubuntu 20.04.1 LTS.

    Список протоколов и открытых портов из /etc/services

    Файл /etc/services содержит информацию о запущенных в данный момент службах. Это большой файл, так что готов к перегрузке.


    Список открытых портов с помощью netstat

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

    Выполните следующую команду netstat:


    Давайте кратко рассмотрим все флаги, которые мы использовали в этой команде.

    • a: указывает netstat отображать все сокеты.
    • t: указывает netstat вывести список TCP-портов.
    • u: указывает netstat вывести список портов UDP.

    Вот еще один вариант команды netstat:

    В команде используются два новых флага. Что они означают?

    • l: указывает netstat печатать только прослушиваемые сокеты.
    • n: приказывает netstat показать номер порта.

    Чтобы отобразить PID процесса, использующего порт, используйте флаг "-p":


    Вывести список открытых портов с помощью ss

    Инструмент ss — это утилита для исследования сокетов. Его использование похоже на netstat.

    Чтобы получить список открытых портов, выполните следующую команду ss:


    Флаги аналогичны netstat. Функции, которые они описывают, также очень похожи.

    • l: указывает ss отображать прослушиваемые сокеты.
    • n: говорит ss не пытаться разрешать имена служб.
    • t: указывает ss отображать сокеты TCP
    • u: указывает ss отображать сокеты UDP

    Список открытых портов с помощью lsof

    Команда lsof предназначена для вывода списка открытых файлов. Однако его также можно использовать для отображения открытых портов.

    Выполните следующую команду lsof:


    Чтобы получить открытые порты определенного протокола (TCP, UDP и т. д.), а затем определить его после флага "-i", используйте:


    Список открытых портов с помощью nmap

    Инструмент nmap — это мощное средство для исследования сети и проверки безопасности/сканирования портов. Он может сообщать обо всех открытых портах в системе.

    Чтобы получить список открытых портов TCP, выполните следующую команду nmap. Здесь IP-адрес хост-компьютера:


    Здесь есть две части аргумента команды.

    • -sT: этот раздел указывает nmap сканировать TCP-порты.
    • -p- : указывает nmap сканировать все порты 65535. Если не использовать, то по умолчанию nmap будет сканировать только 1000 портов.

    Если вам нужно вывести список открытых портов UDP, выполните следующую команду nmap:


    Чтобы получить открытые порты TCP и UDP, используйте следующую команду:

    Список открытых портов с помощью netcat

    Инструмент netcat представляет собой утилиту командной строки для чтения и записи данных через сетевые подключения по протоколам TCP и UDP. Этот инструмент также можно использовать для вывода списка открытых портов. Он может выполнять тесты для определенного порта или диапазона портов.

    Следующая команда netcat сканирует порты с 1 по 1000. По умолчанию команда netcat выполняет сканирование по протоколу TCP:


    Его также можно расширить на весь список возможных портов:


    Давайте быстро разберем флаги.

    • z: указывает netcat сканировать только открытые порты, не отправляя никаких данных.
    • v: указывает netcat работать в подробном режиме.

    Чтобы получить только открытые порты из этого списка, отфильтруйте выходные данные с помощью grep по термину «успешно».

    Если вы хотите выполнить сканирование по протоколу UDP, добавьте флаг «-u».

    Заключительные мысли

    Как показано, существует множество способов поиска открытых портов в Linux. Я предлагаю попробовать все методы, прежде чем вы решите, какой из них освоить. Если вы регулярно используете определенный инструмент, такой как netcat или nmap, то овладение соответствующими методами будет наиболее полезным.

    Об авторе

    Сидратул Мунтаха

    Студент CSE. Я люблю Linux и играю с технологиями и гаджетами. Я использую как Ubuntu, так и Linux Mint.

    Читайте также: