- 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-подключений
- Проверяем доступность портов
- Проверка доступности TCP/UDP- порта в Linux-server
- Проверка доступности TCP-порта
- Проверка доступности UDP-порта
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.
Как вы видели, у нас есть разные методы, чтобы узнать, открыт или закрыт порт на удаленном хосте, а также на нашем локальном компьютере, в зависимости от того, что нам интересно знать, мы будем использовать тот или иной инструмент, самое важное. заключается в том, что все неиспользуемые порты должны быть закрыты в целях безопасности через брандмауэр, таким образом мы избежим проблем с безопасностью и эксплуатации уязвимостей на серверах.
Проверяем доступность портов
Очень часто возникает потребность проверить порт на состояние открыт/закрыт. Но не многие смогут ответить на вопрос сколько есть способов для этого, и как проверить, например, открыт ли UDP порт. Ответы на эти вопросы постарась ответить в этой заметке.
1) Проверка TCP-порта.
На дыннй момент мне удалось найти 3 метода, которыми это можно сделать:
Если соединение удачно, то увидим такой ответ:
$telnet 11.1.1.11 25
Trying 11.11.11.11.
Connected to mail.domain.com.ua.
Escape character is ‘^]’.
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$telnet 11.11.11.11 23
Trying 11.11.11.11.
telnet: connect to address 11.11.11.11: Operation timed out
telnet: Unable to connect to remote host
Иногда в дополнении появляется такое:
telnet: connect to address 11.11.11.11: Operation not permitted
Если соединение удачно, то увидим такой ответ:
$nc -v 11.11.11.11 25
Connection to 11.11.11.11 25 port [tcp/smtp] succeeded!
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$nc -v 11.11.11.11 23
nc: connect to 11.11.11.11 port 23 (tcp) failed: Operation timed out
Если соединение удачно, то увидим такой ответ:
PORT STATE SERVICE
25/tcp open smtp
Если же неудачное, то такое:
PORT STATE SERVICE
23/tcp closed telnet
Иногда при сканнировании выводится такое сообщение:
PORT STATE SERVICE
23/tcp filtered telnet
тогда сказать однозначно открыт или закрыт – нельзя.
2) Проверка UDP-порта.
Если соединение удачно, то увидим такой ответ:
$nc -uv 11.11.11.12 53
Connection to 11.11.11.12 53 port [udp/domain] succeeded!
Если же неудачное, то ничего не выводиться:
Если соединение удачно, то увидим такой ответ:
#nmap -sU -p U:53 11.1.11.12
PORT STATE SERVICE
53/udp open|filtered domain
Если же неудачное, то такое:
#nmap -sU -p U:53 11.1.11.13
PORT STATE SERVICE
53/udp closed domain
Преимущества : лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a.
Недостатки : нельзя проверять UDP порты
Преимущества : лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a, есть возможность сканирования UDP-портов
Недостатки : не обнаружено.
Преимущества : удобно пользоваться, функционал просто радует, есть возможность сканирования UDP-портов
Недостатки : для запуска требуются права root’a, устанавливать приходиться отдельно.
Опубликовано с разрешения журнала root.ua
Проверка доступности TCP/UDP- порта в Linux-server
Приветствую тебя, читатель! Если ты попал сюда, видимо, ты находишься в поиске информации, как проверять сетевые доступы в командной строке Linux. Постараюсь ответить на этот вопрос.
Проверка доступности TCP-порта
Для проверки доступности TCP-порта в командной строке Linux идеально подходит утилита telnet. Ниже я приведу несколько примеров:
// Порт 3306 доступен и его слушает MySQL 5.5.62, установленный на ОС Debian 8 telnet testmysql.domain.com 3306 Trying 10.80.80.1. Connected to testmysql.domain.com. Escape character is '^]'. W 5.5.62-0+deb8u1-log // Для выхода из окна отправки команд на порт нужно ввести quit или сочетание клавиш ctrl/cmd + C // Нет разрешения на подключение (Firewall) или порт никто не слушает) telnet testmysql.domain.com 3307 Trying 10.80.80.1.
Вместо telnet можно воспользоваться утилитой nc (NetCat), команды у нее очень простые. Ниже приведу аналогичную проверку доступности порта MySQL:
nc testmysql.domain.com 3306 W 5.5.62-0+deb8u1-log��sU/(
Проверка доступности UDP-порта
Для проверки UDP-портов выбор утилит меньше. Я использую в основном nc (NetCat). Ниже приведу несколько примеров проверки UDP-порта:
// MacOS nc -z -v -u grayloghost.com 12311 Connection to grayloghost.com port 12311 [udp/*] succeeded! // Linux nc -z -v -u grayloghost.com 12311 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 10.80.80.2:12311. Ncat: UDP packet sent successfully Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.