- How to Test Port [TCP/UDP] Connectivity from a Linux Server
- Testing TCP port connectivity with telnet
- Using nc command to test TCP port connectivity
- Testing UDP port connectivity wit nc command
- Some more articles you might also be interested in …
- Как узнать, открыт или закрыт порт TCP или UDP в Linux
- Просмотр открытых портов с помощью Netcat
- Просмотр открытых портов с помощью Nmap
- Проверьте брандмауэр в Linux
- Просмотр статуса TCP- и UDP-подключений
- Проверка портов
- Как проверить, открыт ли порт на удаленной системе Unix с помощью команды nmap?
- Как проверить, открыт ли порт на удаленной системе Unix с помощью команды telnet?
- Как проверить, открытые порты с помощью утилиты netstat?
- Как проверить, открытые порты с помощью утилиты ss?
- Как проверить, открытые порты с помощью утилиты lsof?
How to Test Port [TCP/UDP] Connectivity from a Linux Server
Here is a short post to check port [TCP/UDP] connectivity from a Linux server. A TCP/IP network connection may be either blocked, dropped, open, or filtered. These actions are generally controlled by the IPtables firewall the system uses and is independent of any process or program that may be listening on a network port.
Telnet and nc are common tools used to test port connectivity from Linux server. Telnet can be used to test tcp port connections, where as nc can be used to test both tcp/udp ports connectivity. Make sure telnet and nc tools are installed on the Linux server you are trying to test connectivity.
# yum install nc # yum install telnet
Testing TCP port connectivity with telnet
Lets see how we can use telnet command to test the TCP port connectivity. The syntax to use the telnet command is as follows:
# telnet [hostname/IP address] [port number]
Example of successful connection:
# telnet 192.168.12.10 22 Trying 192.168.12.10. Connected to 192.168.12.10. Escape character is '^]'. SSH-2.0-OpenSSH_6.6.1 Protocol mismatch. Connection closed by foreign host.
Example of unsuccessful connection:
# telnet 192.168.12.10 22 Trying 192.168.12.10. telnet: connect to address 192.168.12.10: No route to host
Using nc command to test TCP port connectivity
The syntax to use nc command for testing TCP post connectivity is as follows:
# nc -z -v [hostname/IP address] [port number]
Example of successful connection:
# nc -z -v 192.168.10.12 22 Connection to 192.118.20.95 22 port [tcp/ssh] succeeded!
Example of unsuccessful connection:
# nc -z -v 192.168.10.12 22 nc: connect to 192.118.20.95 port 22 (tcp) failed: No route to host
Testing UDP port connectivity wit nc command
The syntax to test UDP port connectivity with nc command is as follows:
# nc -z -v -u [hostname/IP address] [port number]
Example of successful connection:
# nc -z -v -u 192.168.10.12 123 Connection to 192.118.20.95 123 port [udp/ntp] succeeded!
Some more articles you might also be interested in …
Как узнать, открыт или закрыт порт TCP или UDP в Linux
Информация о том, открыт или закрыт порт TCP или UDP, является фундаментальной задачей для любого системного и сетевого администратора. Часто важно знать, открыты ли порты, чтобы установить связь со службой, которая прослушивает их, но также очень важно знать, закрыты ли они, чтобы избежать возможных проблем с безопасностью. Сегодня в этой статье мы покажем вам, как узнать, открыт или закрыт порт в Linux операционная система, поскольку эта операционная система обычно используется на серверах.
Есть несколько способов проверить, открыт или закрыт определенный порт, особенно в Linux, первый из них — использовать популярную программу Netcat, которая предустановлена во всех дистрибутивах, а затем очень хороший способ узнать, открыт ли порт. Это можно сделать, проверив его напрямую с помощью Nmap программа, которая позволит нам сканировать все порты определенного хоста. Наконец, если мы хотим знать, есть ли у нас открытый или закрытый порт, нам нужно будет посмотреть его в брандмауэр а также в текущих подключениях операционной системы.
Просмотр открытых портов с помощью Netcat
Netcat — это инструмент, который по умолчанию входит в большинство дистрибутивов Linux, поэтому, помимо того, что он очень прост в использовании, нам не нужно устанавливать никаких дополнительных пакетов. Прежде чем проверять с помощью Netcat, открыт ли порт, давайте посмотрим на два наиболее важных параметра Netcat:
- z — это параметр, который гарантирует, что в конце проверки соединение будет закрыто или, в противном случае, программа будет продолжать работать в цикле до тех пор, пока мы вручную не завершим ее с помощью Ctrl + C, аналогично тому, как когда пинг на Linux.
- v — параметр, отвечающий за проверку того, открыт ли порт или закрыт.
Чтобы проверить порт, мы должны ввести в терминал следующее:
Например, чтобы проверить порт 443 на нашем маршрутизаторе мы будем Тип:
На следующем изображении вы можете увидеть, как этот порт открыт:
Если мы протестируем сайт этой статьи и порт 443, мы получим аналогичную информацию:
В случае, если он закрыт, мы должны поставить это:
Как вы видели, очень легко проверить, открыт или закрыт порт, с помощью Netcat, очень простой утилиты, которая предустановлена в Linux. В дополнение к командам «z» и «v» у нас также есть другие доступные аргументы, которые позволят нам узнать больше информации. Если мы выполним следующую команду, появится справка:
Как видите, у нас есть много аргументов в пользу расширения функциональности.
Просмотр открытых портов с помощью Nmap
Nmap — это программа, которая по преимуществу обнаруживает хосты, а также проверяет, открыты ли разные порты. Эта программа не предустановлена в операционных системах Linux, но мы можем установить ее прямо из репозиториев в следующем порядке:
После установки, чтобы узнать, открыт ли конкретный порт, мы должны ввести следующую команду:
На следующем изображении вы можете увидеть, как будет выглядеть открытый порт:
В случае, если порт закрыт или фильтруется брандмауэром, появится следующее:
Если мы хотим просканировать все порты определенного хоста или диапазон портов, нам нужно будет указать диапазон портов следующим образом:
Как видите, проверить открытые порты с помощью Nmap действительно просто, кроме того, мы можем сканировать все хосты в домашней или профессиональной локальной сети, чтобы позже просканировать различные порты.
Проверьте брандмауэр в Linux
Если мы хотим проверить, есть ли у нас открытый порт для приема соединений, первое, что нужно проверить, — это статус брандмауэра в нашей операционной системе Linux. По умолчанию на всех серверах Linux политика разрешающая, то есть все пакеты принимаются политикой. Мы можем изменить эту политику на ограничительную и даже добавить новые таблицы, цепочки и правила, чтобы разрешить или запретить трафик.
Если в нашем Linux-терминале мы ставим следующее:
Все цепочки и правила мы получим из таблицы «filter» iptables, в случае использования Nftables необходимо указать следующую команду:
Очень важная рекомендация по безопасности заключается в том, что все порты на сервере Linux должны быть закрыты, таким образом, когда мы запускаем службу, прослушивающую определенный порт, он не будет доступен, если мы не разрешим это в брандмауэре. Мы должны детально проверить, открыт ли тот или иной порт, чтобы наши услуги были доступны из-за границы.
Просмотр статуса TCP- и UDP-подключений
Если нас интересует состояние всех протоколов TCP, UDP, ICMP и других в нашей операционной системе, широко используемым инструментом всегда был «netstat», однако этот инструмент был на втором месте благодаря новому «ss». это позволит нам легко и быстро получить большой объем информации. Этот инструмент отвечает за проверку всех открытых или закрытых сокетов на нашем сервере Linux, и мы сможем увидеть статистику этих открытых или закрытых сокетов. Если вы использовали инструмент netstat в прошлом, мы уверены, что вам понравится этот новый инструмент «ss».
Инструмент «ss» уже предустановлен в операционных системах Linux как часть самой системы, как и в случае с «ping», «traceroute» и многими другими инструментами. Если мы открываем консоль как в пользовательском режиме, так и в режиме суперпользователя, мы должны выполнить:
Как только мы выполним этот заказ, мы увидим следующее:
Мы увидим статус соединения (ESTAB), а также полученные и отправленные пакеты, локальный адрес и порт, а также удаленный адрес и используемый порт. Мы собираемся получить большое количество портов, используемых различными программами и службами, которые мы установим в операционной системе.
Если мы хотим видеть статус всех портов (сокетов), мы можем установить следующий порядок:
Если мы хотим видеть только порты, которые «слушают», мы должны ввести следующую команду:
На следующем изображении вы можете увидеть пример портов, которые ГОТОВЫ для приема входящих соединений:
В случае, если мы хотим показать TCP-соединения, нам нужно будет использовать аргумент «-t», а в случае, если мы хотим показать UDP-соединения, нам придется использовать аргумент «-u».
Команда «ss» действительно полезна для отображения всех установленных соединений, а также для прослушивания в нашей операционной системе Linux.
Как вы видели, у нас есть разные методы, чтобы узнать, открыт или закрыт порт на удаленном хосте, а также на нашем локальном компьютере, в зависимости от того, что нам интересно знать, мы будем использовать тот или иной инструмент, самое важное. заключается в том, что все неиспользуемые порты должны быть закрыты в целях безопасности через брандмауэр, таким образом мы избежим проблем с безопасностью и эксплуатации уязвимостей на серверах.
Проверка портов
Netcat – это простая утилита Unix, которая читает и записывает данные через сетевые соединения, используя протокол TCP или UDP. Она разработана, чтобы быть надежным «внутренним» инструментом, который может использоваться напрямую или легко управляться другими программами и скриптами.
В то же время это многофункциональный инструмент для отладки и исследования сети, поскольку он может создавать практически любые типы соединений, которые вам понадобятся, и имеет несколько интересных встроенных возможностей.
Netcat имеет три основных режима работы. Это режим подключения, режим прослушивания и туннельный режим. Общий синтаксис для nc (netcat):
$ nc [-options] [HostName or IP] [PortNumber]
Проверяем открыт ли 80 порт на сервере
если порт закрыт мы увидим вот такой ответ
Как проверить, открыт ли порт на удаленной системе Unix с помощью команды nmap?
Nmap («Network Mapper») – это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей, хотя он отлично работает на отдельных хостах.
Хотя Nmap обычно используется для аудита безопасности, многие системные и сетевые администраторы считают его полезным для рутинных задач, таких как инвентаризация сети, управление расписаниями обновления служб и мониторинг времени работы хоста или службы.
$ nmap [-options] [HostName or IP] [-p] [PortNumber]
проверим открыт ли 22 порт на сервере, если открыт увидим вот этот ответ
проверим 349 порт, если он закрыт увидим следующий ответ
Nmap’ом можно проверить открытые порты локально
для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
Дальше запускаем сканирование:
Как проверить, открыт ли порт на удаленной системе Unix с помощью команды telnet?
Команда telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET. Общий синтаксис для telnet:
$ telnet [HostName or IP] [PortNumber]
проверим открыт ли 22 порт telnet’ом, если открыт увидим следующий ответ
Как проверить, открытые порты с помощью утилиты netstat?
Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:
Как проверить, открытые порты с помощью утилиты ss?
Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:
Можно вывести только процессы, работающие на 80-том порту:
Как проверить, открытые порты с помощью утилиты lsof?
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:
Ещё один пример, смотрим какие процессы работают с портом 80: