Как узнать, открыт или закрыт порт TCP или UDP в Linux

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

Есть несколько способов проверить, открыт или закрыт определенный порт, особенно в Linux, первый из них - использовать популярную программу Netcat, которая предустановлена ​​во всех дистрибутивах, а затем очень хороший способ узнать, открыт ли порт. Это можно сделать, проверив его напрямую с помощью Nmap программа, которая позволит нам сканировать все порты определенного хоста. Наконец, если мы хотим знать, есть ли у нас открытый или закрытый порт, нам нужно будет посмотреть его в брандмауэр а также в текущих подключениях операционной системы.

Сообщите, открыт или закрыт порт TCP или UDP в Linux

Просмотр открытых портов с помощью Netcat

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

  • z - это параметр, который гарантирует, что в конце проверки соединение будет закрыто или, в противном случае, программа будет продолжать работать в цикле до тех пор, пока мы вручную не завершим ее с помощью Ctrl + C, аналогично тому, как когда пинг на Linux.
  • v - параметр, отвечающий за проверку того, открыт ли порт или закрыт.

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

nc -zv {IP} {PUERTO}

Например, чтобы проверить порт 443 на нашем маршрутизаторе мы будем Тип:

nc -zv 192.168.10.1 443

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

Если мы протестируем сайт этой статьи и порт 443, мы получим аналогичную информацию:

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

Как вы видели, очень легко проверить, открыт или закрыт порт, с помощью Netcat, очень простой утилиты, которая предустановлена ​​в Linux. В дополнение к командам «z» и «v» у нас также есть другие доступные аргументы, которые позволят нам узнать больше информации. Если мы выполним следующую команду, появится справка:

nc -h

Как видите, у нас есть много аргументов в пользу расширения функциональности.

Просмотр открытых портов с помощью Nmap

Nmap - это программа, которая по преимуществу обнаруживает хосты, а также проверяет, открыты ли разные порты. Эта программа не предустановлена ​​в операционных системах Linux, но мы можем установить ее прямо из репозиториев в следующем порядке:

sudo apt install nmap

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

nmap -p {PUERTO} {IP}

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

В случае, если порт закрыт или фильтруется брандмауэром, появится следующее:

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

nmap -p {PUERTO}-{PUERTO} {IP}

Например:

nmap -p 1-65535 192.168.10.1

Как видите, проверить открытые порты с помощью Nmap действительно просто, кроме того, мы можем сканировать все хосты в домашней или профессиональной локальной сети, чтобы позже просканировать различные порты.

Проверьте брандмауэр в Linux

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

Если в нашем Linux-терминале мы ставим следующее:

iptables -L

Все цепочки и правила мы получим из таблицы «filter» iptables, в случае использования Nftables необходимо указать следующую команду:

nft list ruleset

Очень важная рекомендация по безопасности заключается в том, что все порты на сервере Linux должны быть закрыты, таким образом, когда мы запускаем службу, прослушивающую определенный порт, он не будет доступен, если мы не разрешим это в брандмауэре. Мы должны детально проверить, открыт ли тот или иной порт, чтобы наши услуги были доступны из-за границы.

Просмотр статуса TCP- и UDP-подключений

Если нас интересует состояние всех протоколов TCP, UDP, ICMP и других в нашей операционной системе, широко используемым инструментом всегда был «netstat», однако этот инструмент был на втором месте благодаря новому «ss». это позволит нам легко и быстро получить большой объем информации. Этот инструмент отвечает за проверку всех открытых или закрытых сокетов на нашем сервере Linux, и мы сможем увидеть статистику этих открытых или закрытых сокетов. Если вы использовали инструмент netstat в прошлом, мы уверены, что вам понравится этот новый инструмент «ss».

Инструмент «ss» уже предустановлен в операционных системах Linux как часть самой системы, как и в случае с «ping», «traceroute» и многими другими инструментами. Если мы открываем консоль как в пользовательском режиме, так и в режиме суперпользователя, мы должны выполнить:

ss

Как только мы выполним этот заказ, мы увидим следующее:

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

Если мы хотим видеть статус всех портов (сокетов), мы можем установить следующий порядок:

ss -a

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

ss -l

На следующем изображении вы можете увидеть пример портов, которые ГОТОВЫ для приема входящих соединений:

В случае, если мы хотим показать TCP-соединения, нам нужно будет использовать аргумент «-t», а в случае, если мы хотим показать UDP-соединения, нам придется использовать аргумент «-u».

ss -t ss -u

Команда «ss» действительно полезна для отображения всех установленных соединений, а также для прослушивания в нашей операционной системе Linux.

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