// DevOps

Netcat: чтение и запись по сети — диагностика, передача данных, туннели

Опубликовано 22.09.2026

Netcat (nc) читает и записывает данные по TCP и UDP-соединениям. Одной небольшой утилитой удобно проверить порт, снять баннер сервиса, передать файл между машинами или собрать временный туннель. Ниже — типовые задачи.

Реализаций Netcat несколько, и флаги у них различаются. По умолчанию установлены:

  • OpenBSD netcat — в Debian и Ubuntu (пакет netcat-openbsd), Fedora, Arch, Alpine. Примеры ниже рассчитаны на него;
  • traditional (GNU) netcat — старая реализация, в ней есть флаг -e для запуска программы на соединении, которого в OpenBSD-версии нет;
  • Ncat из пакета Nmap — отдельная реализация с TLS, прокси и обслуживанием нескольких клиентов.

Проверить свою версию: nc -h выводит список поддерживаемых флагов.

Проверка портов и сервисов

ping использует только ICMP и не говорит, открыт ли нужный порт. Netcat проверяет именно соединение:

bash
nc -zv -w 3 example.ru 80 443 22
  • -z — только проверить соединение, не передавать данные;
  • -v — подробный вывод;
  • -w 3 — таймаут 3 секунды.

Снять баннер сервиса — отправить запрос и прочитать ответ:

bash
printf 'HEAD / HTTP/1.0

' | nc -w 3 example.ru 80

Передача файлов между машинами

Когда под рукой нет scp или rsync. На принимающей стороне:

bash
nc -l -p 9899 > backup.iso

На отправляющей:

bash
nc 192.0.2.10 9899 < backup.iso

Netcat не шифрует данные и не проверяет их целостность, поэтому передавать так стоит только внутри доверенной сети. Для больших файлов данные сжимают на лету:

bash
# приём
nc -l -p 9899 | gzip -dc > backup.iso
# отправка
gzip -c backup.iso | nc 192.0.2.10 9899

После передачи сверьте контрольную сумму (sha256sum) на обеих сторонах.

Временный TCP-туннель

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

bash
mkfifo /tmp/backpipe
nc -l 8080 < /tmp/backpipe | nc db.internal 5432 > /tmp/backpipe

Теперь подключение к локальному порту 8080 уходит на внутренний PostgreSQL. Это разовое незашифрованное решение для отладки; для постоянного доступа используют SSH-туннель или VPN.

Когда Netcat не хватает

  • Ncat (пакет nmap) — TLS, прокси, несколько клиентов одновременно, флаг --exec;
  • socat — двунаправленная передача между почти любыми источниками (сокеты, файлы, устройства, TLS), синтаксис сложнее.
bash
sudo apt install nmap socat

Как защититься от netcat в чужих руках

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

  • Фильтруйте исходящий трафик. По умолчанию сервер выпускает наружу любые соединения. Разрешите только нужные направления, а остальное закройте — обратное соединение на произвольный порт не пройдёт:
bash
# только DNS, HTTP и HTTPS наружу, остальное — запрет
ufw default deny outgoing
ufw allow out 53
ufw allow out 80
ufw allow out 443
  • Не держите netcat, компиляторы и лишние интерпретаторы на боевом сервере — их отсутствие усложняет закрепление.
  • Следите за неожиданными процессами и соединениями. Исходящее соединение процесса nc, bash или sh на внешний адрес — повод для тревоги:
bash
ss -tnp | grep -E 'nc|bash|sh'
  • Настройте аудит. Правило auditd отмечает создание именованных каналов (mkfifo, mknod) — типичный признак обратной оболочки без флага -e:
bash
auditctl -a always,exit -F arch=b64 -S mknod -S mknodat -k reverse_shell

Полноценно такие атаки ловят системы обнаружения на хосте (auditd с готовыми правилами, Falco, EDR) — они видят подозрительные связки «процесс оболочки + сетевое соединение». Межсетевой экран на исходящие и минимальный набор ПО на сервере закрывают самые простые сценарии.

Итог

Netcat перекладывает байты из stdin в сеть и обратно, поэтому сочетается с обычными командами оболочки — gzip, dd, каналами. Для проверки портов, разовой передачи файла и быстрого туннеля этого достаточно; для шифрования и постоянных сервисов берут Ncat, socat, SSH или VPN.

Первоисточники:

// Reviews

Отзывы по теме

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

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

kfhzasorin

Настройка vps, настройка сервера

12.05.2026 · ★ 5/5

Отличная работа! Очень быстро настроил сервер, установил панель, прописал IP. Однозначно могу порекомендовать!

Отличная работа ! Очень быстро настроил сервер, установил панель прописал IP Однозначно могу по рекомендовать !

fedinseo

Настройка vps, настройка сервера

19.04.2026 · ★ 5/5

Покупатель профи-эксперт

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

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

abazawolf

Настройка vps, настройка сервера

18.02.2026 · ★ 5/5

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ