Linux netcat открыть порт

Содержание
  1. Команда Netcat (nc) с примерами
  2. Netcat (nc) Command with Examples
  3. Netcat (или nc) — это утилита командной строки, которая читает и записывает данные через сетевые подключения, используя протоколы TCP или UDP.
  4. Синтаксис Netcat
  5. Сканирование портов
  6. Отправка файлов через Netcat
  7. Создание простого сервера чата
  8. Выполнение HTTP-запроса
  9. Вывод
  10. Полезные примеры использования утилиты netcat в Linux
  11. 1. Проверка наличия определенного открытого TCP-порта на удаленном узле
  12. 2. Отправка тестового UDP-пакета на удаленный узел
  13. 3. Сканирование TCP-портов на удаленном узле
  14. 4. Копирование файла (например, my.jpg) с узла с именем hostA.com на узел с именем hostB.com
  15. 5. Передача директории (со всем содержимым) с узла hostA.com на узел hostB.com
  16. 6. Сканирование UDP-портов на удаленном узле
  17. 7. Ожидание данных на UDP-порту и вывод принятых данных в текстовом формате
  18. 8. Сохранение (сжатого) файла образа жесткого диска (например, /dev/sdb) на удаленном сервере
  19. 9. Восстановление содержимого жесткого диска из сжатого файла образа, сохраненного на удаленном сервере
  20. 10. Передача статической веб-страницы по аналогии с веб-сервером
  21. 11. Организация незащищенного чата между двумя узлами
  22. 12. Запуск «удаленной командной оболочки», позволяющей выполнять произвольные команды на удаленном узле в процессе работы с локальным узлом
  23. 13. Создание веб-прокси для определенного веб-сайта (например, google.com)
  24. 14. Создание SSL-прокси для определенного веб-сайта (например, google.com)
  25. 15. Потоковая передача видеофайла с сервера и его просмотр с помощью проигрывателя mplayer на клиентской машине
  26. 16. Прием соединений по протоколу TCP на определенном порту с использованием адреса IPv6
  27. Команда Netcat (nc) с примерами
  28. Синтаксис Netcat
  29. Сканирование портов
  30. Отправка файлов через Netcat
  31. Создание простого чат-сервера
  32. Выполнение HTTP-запроса
  33. Выводы
  34. Утилита netcat в Linux
  35. netcat синтаксис
  36. netcat опции
  37. netcat примеры
  38. Сканирование портов
  39. Связь при помощи Netcat
  40. Отправка файлов
  41. Использование Netcat в качестве простого веб-сервера
  42. Заключение

Команда Netcat (nc) с примерами

Netcat (nc) Command with Examples

Netcat (или nc) — это утилита командной строки, которая читает и записывает данные через сетевые подключения, используя протоколы TCP или UDP.

Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого. Пакет Netcat предустановлен в MacOS и популярных дистрибутивах Linux, таких как Ubuntu.

Синтаксис Netcat

Самый основной синтаксис утилиты Netcat имеет следующий вид:

В Ubuntu вы можете использовать либо netcat или nc . Обе они являются символическими ссылками на версию Netcat для openBSD.

По умолчанию Netcat пытается установить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте -u опцию:

Сканирование портов

Сканирование портов является одним из наиболее распространенных способов использования Netcat. Вы можете сканировать один порт или диапазон портов.

Например, для поиска открытых портов в диапазоне 20-80 вы должны использовать следующую команду:

-z — Опция указывает nc на сканирование только для открытых портов, без отправки каких — либо данных для них и -v возможность предоставить более подробную информацию.

Вывод будет выглядеть примерно так:

Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep .

Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер по стандартному SSH-порту 22 :

Вывод будет выглядеть примерно так:

Для сканирования портов UDP просто добавьте -u параметр в команду, как показано ниже:

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

Отправка файлов через Netcat

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

Это работает, настроив Netcat на прослушивание определенного порта (используя -l опцию) на принимающем хосте, а затем установив обычное TCP-соединение с другим хостом и отправив файл через него.

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

С узла-отправителя подключитесь к узлу-получателю и отправьте файл:

Для передачи каталога вы можете использовать tar для архивирования каталога на исходном хосте и для извлечения архива на конечном хосте.

На принимающем хосте настройте средство Netcat на прослушивание входящего соединения через порт 5555. Входящие данные передаются в команду tar, которая извлечет архив:

На отправляющем хосте упакуйте каталог и отправьте данные, подключившись к nc процессу прослушивания на принимающем хосте:

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

Создание простого сервера чата

Процедура создания онлайн-чата между двумя или более хостами такая же, как и при передаче файлов.

На первом хосте запустите процесс Netcat для прослушивания порта 5555:

Со второго хоста выполните следующую команду для подключения к порту прослушивания:

Теперь, если вы наберете сообщение и нажмете, ENTER оно будет показано на обоих хостах.

Чтобы закрыть соединение, введите CTRL+C .

Выполнение HTTP-запроса

Несмотря на то, что есть намного лучшие инструменты для HTTP-запросов, такие как curl , вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.

Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, введите:

Полный ответ, включая заголовки HTTP и код HTML, будет напечатан в терминале.

Вывод

Из этого руководства вы узнали, как использовать утилиту Netcat для установки и тестирования соединений TCP и UDP.

Для получения дополнительной информации посетите справочную страницу Netcat и прочитайте обо всех других мощных параметрах команды Netcat.

Читайте также:  Hp all in one scanner linux

Источник

Полезные примеры использования утилиты netcat в Linux

Оригинал: Useful netcat examples on Linux
Автор: Dan Nanni
Дата публикации: 27 января 2014 г.
Перевод: А.Панин
Дата перевода: 7 сентября 2016 г.

Обычно называемая «швейцарским ножом» для TCP/IP-сетей, утилита Netcat является чрезвычайно гибким инструментом, позволяющим выполнять практически все возможные действия с TCP/UDP-сокетами в Linux. Это один из наиболее популярных инструментов для диагностики и экспериментов с сетями в среде системных администраторов.

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

Учтите, что при использовании nc для приема соединений на портах известных сетевых служб (0-1023) вам понадобятся привилегии пользователя root. Во всех остальных случаях для корректной работы nc достаточно прав обычного пользователя.

1. Проверка наличия определенного открытого TCP-порта на удаленном узле

2. Отправка тестового UDP-пакета на удаленный узел

Приведенная ниже команда предназначена для отправки тестового UDP-пакета с задержкой в 1 секунду на порт 5000 удаленного узла с заданным адресом.

3. Сканирование TCP-портов на удаленном узле

Приведенная ниже команда предназначена для сканирования портов из диапазонов 933 и 2105 и вывода списка открытых портов.

4. Копирование файла (например, my.jpg) с узла с именем hostA.com на узел с именем hostB.com

На узле с именем hostB.com (принимающая сторона):

На узле с именем hostA.com (передающая сторона):

5. Передача директории (со всем содержимым) с узла hostA.com на узел hostB.com

На узле с именем hostB.com (принимающая сторона):

На узле с именем hostA.com (передающая сторона):

6. Сканирование UDP-портов на удаленном узле

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

7. Ожидание данных на UDP-порту и вывод принятых данных в текстовом формате

Приведенная ниже команда позволяет принимать сообщения (строки текста) на заданном UDP-порту.

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

8. Сохранение (сжатого) файла образа жесткого диска (например, /dev/sdb) на удаленном сервере

На удаленном сервере:

На локальном узле, на котором установлен жесткий диск:

9. Восстановление содержимого жесткого диска из сжатого файла образа, сохраненного на удаленном сервере

На локальном узле:

На удаленном сервере, на котором сохранен файл образа жесткого диска (например, /backup/sdb.img.gz):

10. Передача статической веб-страницы по аналогии с веб-сервером

Выполните приведенную ниже команду для запуска веб-сервера, который будет передавать веб-страницу с именем test.html клиентам, соединяющимся с портом 8000.

Теперь проверьте доступность веб-страницы, перейдя с помощью веб-браузера по адресу: http:// :8000/test.html . Обратите внимание на то, что для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc с привилегиями пользователя root следующим образом:

11. Организация незащищенного чата между двумя узлами

На первом узле (192.168.233.203):

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

12. Запуск «удаленной командной оболочки», позволяющей выполнять произвольные команды на удаленном узле в процессе работы с локальным узлом

На удаленном узле (192.168.233.208):

На локальном узле:

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

13. Создание веб-прокси для определенного веб-сайта (например, google.com)

Приведенные выше команды позволяют создать именованный канал proxypipe и использовать утилиту nc для перенаправления всех соединений по протоколу TCP с портом 5000 локального узла на веб-сайт http://www.google.com посредством двунаправленного канала. После выполнения этих команд вы сможете попасть на главную страницу поисковой системы Google, введя в адресную строку веб-браузера адрес http://127.0.0.1:5000.

14. Создание SSL-прокси для определенного веб-сайта (например, google.com)

Приведенные выше команды позволяют использовать утилиту nc для создания прокси-сервера с поддержкой протокола SSL, позволяющего устанавливать соединения с веб-сайтом google.com.

15. Потоковая передача видеофайла с сервера и его просмотр с помощью проигрывателя mplayer на клиентской машине

На сервере потоковой передачи видео (192.168.233.208):

На клиентской системе:

16. Прием соединений по протоколу TCP на определенном порту с использованием адреса IPv6

Приведенные ниже команды позволяют утилите nc использовать адрес IPv6 при приеме соединений на TCP-порту. Это может понадобиться в процессе тестирования корректности настройки адресации IPv6 в сети.

Источник

Команда Netcat (nc) с примерами

Netcat (или nc ) — это утилита командной строки, которая считывает и записывает данные через сетевые соединения с использованием протоколов TCP или UDP. Это один из самых мощных инструментов в арсенале сетевых и системных администраторов, который считается швейцарским армейским ножом сетевых инструментов.

Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого.

Пакет Netcat предварительно установлен в macOS и популярных дистрибутивах Linux, таких как Ubuntu, Debian или CentOS.

Читайте также:  Open in linux example

Синтаксис Netcat

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

В Ubuntu вы можете использовать netcat или nc . Оба они являются символическими ссылками на версию Netcat для openBSD.

По умолчанию Netcat пытается запустить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте параметр -u :

Сканирование портов

Сканирование портов — одно из самых распространенных применений Netcat. Вы можете сканировать один порт или диапазон портов.

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

Опция -z укажет nc сканировать только открытые порты, не отправляя им никаких данных, а опция -v предоставит более подробную информацию.

Результат будет выглядеть примерно так:

Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep .

Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер через SSH-порт 22 по умолчанию:

Результат будет выглядеть примерно так:

Чтобы сканировать порты UDP, просто добавьте к команде параметр -u как показано ниже:

Как правило, Nmap — лучший инструмент, чем Netcat для комплексного сканирования портов.

Отправка файлов через Netcat

Netcat можно использовать для передачи данных с одного хоста на другой путем создания базовой модели клиент / сервер.

Это работает путем настройки Netcat для прослушивания определенного порта (с использованием параметра -l ) на принимающем хосте, а затем установления обычного TCP-соединения с другим хостом и отправки файла через него.

При получении выполните следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:

От отправляющего хоста подключитесь к принимающему хосту и отправьте файл:

Чтобы передать каталог, вы можете использовать tar для архивации каталога на исходном хосте и для извлечения архива на целевом хосте.

На принимающем хосте настройте инструмент Netcat для прослушивания входящего соединения через порт 5555. Входящие данные передаются команде tar , которая распаковывает архив:

На передающем хосте упакуйте каталог и отправьте данные, подключившись к слушающему процессу nc на принимающем хосте:

Вы можете наблюдать за процессом передачи на обоих концах. По завершении CTRL+C чтобы закрыть соединение.

Создание простого чат-сервера

Процедура создания онлайн-чата между двумя и более хостами такая же, как и при передаче файлов.

На первом хосте запустите процесс Netcat для прослушивания порта 5555:

Со второго хоста выполните следующую команду для подключения к слушающему порту:

Теперь, если вы наберете сообщение и нажмете ENTER оно будет отображаться на обоих хостах.

Чтобы закрыть соединение, введите CTRL+C

Выполнение HTTP-запроса

Хотя есть гораздо лучшие инструменты для HTTP-запросов, такие как curl , вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.

Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, вы должны ввести:

Полный ответ, включая заголовки HTTP и HTML-код, будет напечатан в терминале.

Выводы

В этом руководстве вы узнали, как использовать утилиту Netcat для установления и тестирования соединений TCP и UDP.

Для получения дополнительной информации посетите страницу руководства Netcat и прочтите обо всех других мощных параметрах команды Netcat.

Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Источник

Утилита netcat в Linux

Linux славится наличием множества полезных и функциональных утилит командной строки, штатно доступных в большинстве дистрибутивов. Опытный системный администратор может выполнить значительную часть своей работы при помощи встроенных инструментов без необходимости устанавливать дополнительные программы.
В данном руководстве мы разберем использование утилиты netcat. Ее часто называют «швейцарским армейским ножом» среди сетевых инструментов. Это действительно универсальная команда, которая может помочь вам в мониторинге и тестировании сетевых соединений, а также в отправке данных через них. В примерах рассматривается BSD-версия netcat, которая по умолчанию входит в дистрибутив Ubuntu. Работа других версий и их опции могут немного отличаться.

netcat синтаксис

По умолчанию netcat инициирует TCP-соединение с удаленным узлом.
Базовый синтаксис команды следующий:

Команда попытается установить TCP-соединение с указанным узлом и номером порта. В принципе, это работает аналогично старой команде telnet в Linux. Имейте в виду, что ваше соединение будет не зашифровано.

Если вместо установки TCP-соединения вам нужно отправить UDP-пакет, можно воспользоваться опцией –u:

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

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

netcat опции

Для команды существуют следующие ключи-опции

-h Справка;
-v Вывод информации о процессе работы (verbose)
-o Вывод данных в файл
-i Задержка между отправляемыми данными (в секундах)
-z Не посылать данные (сканирование портов)
-u Использовать для подключения UDP протокол
-l Режим прослушивания
-p Локальный номер порта для прослушивания. Используется с опцией -l
-s Использовать заданный локальный («свой») IP-адрес
-n Отключить DNS и поиск номеров портов по /etc/services
-w Задать тайм-аут (в секундах)
-q Задать время ожидания после передачи данных, после истечение которого соединение закрывается

netcat примеры

Для лучшего понимания как работает netcat рассмотрим несколько примеров

Сканирование портов

Один из наиболее распространенных примеров использования netcat – сканирование портов. Может быть, это не самый продвинутый инструмент (в большинстве случаев лучше воспользоваться nmap), но он позволяет выполнить простое сканирование и легко выявить открытые порты. Для этого нужно указать диапазон портов и опцию –z, которая означает выполнение сканирования вместо попытки установить соединение. Например, следующая команда сканирует порты от 1 до 1000:

Читайте также:  Не загружается windows boot ini

Помимо опции -z, мы указали опцию –v, чтобы команда выводила более подробную информацию. Результат будет выглядеть следующим образом:

Как мы видим, для каждого порта указано, успешно ли прошло сканирование. Единственный открытый порт на удаленном компьютере – 22, традиционно используемый для SSH.

Можно ускорить процесс сканирования, если вам известен IP-адрес узла. Он указывается с опцией –n, которая задает команде не определять адрес при помощи DNS.

Связь при помощи Netcat

Функции Netcat не ограничены отправкой TCP и UDP пакетов. Она также может прослушивать порты. Это позволяет создать соединение между программами netcat на различных компьютерах по принципу «клиент-сервер». Роли сервера и клиента важны только при первоначальной конфигурации. После установки соединения связь в обоих направлениях будет абсолютно одинаковой. На одной из машин нужно указать команде netcat прослушивать определенный порт. Это осуществляется при помощи опции –l:

Данная команда выполняет прослушивание порта 4444 в ожидании TCP-соединения. Если вы обычный пользователь без root-привилегий, то открывать порты до 1000 вам нельзя из соображений безопасности. Вторую машину можно подключить к первой точно так же, как мы устанавливали соединения ранее, указав тот же номер порта:

После выполнения этой команды на первый взгляд ничего не поменяется. Однако, теперь на любом конце соединения вы можете отправлять сообщения, и они будут видны на другом конце. Введите сообщение и нажмите Enter – оно появится как на локальном,

так и на удаленном экране.

Как уже говорилось, это работает в обоих направлениях. После завершения передачи сообщений для закрытия TCP-соединения можно нажать Ctrl+D.

Отправка файлов

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

На втором компьютере создадим простой текстовый файл:

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

В этом примере нет никакой магии, мы просто используем стандартный способ перенаправления потоков

На ожидавшем соединения компьютере появится новый файл с названием «received_file» и содержимым, введенным на другой машине. Это можно проверить при помощи команды cat:

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

Дефис (-) в конце команды означает, что tar будет работать со стандартным потоком ввода, в который после установки соединения по сети будет направляться результат netcat.
На передающем конце мы можем упаковать директорию при помощи tar и воспользоваться netcat, чтобы отправить архив на удаленный компьютер:

В данном случае дефис в команде tar задает упаковку содержимого текущей директории (указано маской *) с выводом результатов в стандартный поток вывода. Затем он перенаправляется непосредственно на TCP-соединение, отправляется на другой конец, где распаковывается в текущую директорию на удаленном компьютере. Это всего лишь один из примеров передачи более сложных данных между компьютерами. Другой распространенный вариант – воспользоваться командой dd для создания образа диска на одном конце соединения и передать его на удаленный компьютер.

Использование Netcat в качестве простого веб-сервера

В предыдущих примерах мы настроили netcat для ожидания соединения, чтобы передавать сообщения и файлы. Этим же принципом можно воспользоваться, чтобы превратить netcat в простейший веб-сервер. Это полезно для тестирования создаваемых вами страниц.

Сначала создадим на одном из компьютеров HTML-файл с помощью nano:

Введем в него простой HTML-код:

Теперь нужно сохранить и закрыть файл.

Без root-привилегий этот файл нельзя передать через веб-порт по умолчанию, 80. Для примера воспользуемся другим номером порта, допустим, 8888. Если страницу нужно передать один раз для проверки ее вида, можно запустить следующую команду:

printf ‘HTTP/1.1 200 OK\n\n%s’ «$(cat index.html)» | netcat -l 8888

Теперь можно просмотреть эту страницу в браузере:

Сервер передаст страницу, а затем соединение netcat будет закрыто. Если вы обновите страницу, то получите сообщение об ошибке:

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

Это позволит продолжать ожидание соединения после закрытия. Остановить цикл можно комбинацией клавиш Ctrl+C.
Данный прием можно использовать для проверки представления страницы в браузере, но никаких других функций он не обеспечивает. Им нельзя пользоваться для отображения реальных веб-сайтов – это небезопасно, и будут некорректно работать даже такие простые элементы, как ссылки.

Заключение

Надеемся, вы получили достаточное представление о том, как и для чего можно использовать netcat. Это универсальный инструмент, полезный для диагностики проблем и проверки корректности работы базового уровня TCP/UDP соединений. Он позволяет легко и быстро устанавливать связь между компьютерами. Для более подробной информации можно ознакомиться с man-страницей команды.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью