// DevOps

Netcat: lectura y escritura en red — diagnóstico, transferencia de datos, túneles

Publicado el 22.09.2026

Netcat (nc) lee y escribe datos por conexiones TCP y UDP. Con una pequeña utilidad es cómodo comprobar un puerto, obtener el banner de un servicio, transferir un archivo entre máquinas o montar un túnel temporal. Abajo — tareas típicas.

Existen varias implementaciones de Netcat y sus flags difieren. Por defecto están:

  • OpenBSD netcat — en Debian y Ubuntu (paquete netcat-openbsd), Fedora, Arch, Alpine. Los ejemplos abajo están pensados para esta versión;
  • traditional (GNU) netcat — implementación antigua, tiene el flag -e para ejecutar un programa en la conexión, que no existe en la versión OpenBSD;
  • Ncat del paquete Nmap — implementación aparte con TLS, proxy y manejo de varios clientes.

Comprobar tu versión: nc -h muestra la lista de opciones soportadas.

Comprobar puertos y servicios

ping usa solo ICMP y no indica si el puerto deseado está abierto. Netcat comprueba la conexión:

bash
nc -zv -w 3 example.ru 80 443 22
  • -z — solo comprobar la conexión, no transmitir datos;
  • -v — salida detallada;
  • -w 3 — timeout 3 segundos.

Obtener el banner de un servicio — enviar una petición y leer la respuesta:

bash
printf 'HEAD / HTTP/1.0

' | nc -w 3 example.ru 80

Transferencia de archivos entre máquinas

Cuando no tienes scp o rsync a mano. En el lado receptor:

bash
nc -l -p 9899 > backup.iso

En el lado emisor:

bash
nc 192.0.2.10 9899 < backup.iso

Netcat no cifra los datos ni verifica su integridad, por lo que conviene usar esto solo dentro de una red de confianza. Para archivos grandes se comprimen los datos al vuelo:

bash
# recepción
nc -l -p 9899 | gzip -dc > backup.iso
# envío
gzip -c backup.iso | nc 192.0.2.10 9899

Tras la transferencia, compare la suma de control (sha256sum) en ambos extremos.

Túnel TCP temporal

Redirigir un puerto local a un servicio interno se puede hacer mediante un pipe con nombre:

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

Ahora la conexión al puerto local 8080 va al PostgreSQL interno. Esta es una solución puntual y no cifrada para depuración; para acceso permanente se usan túneles SSH o VPN.

Cuando Netcat se queda corto

  • Ncat (paquete nmap) — TLS, proxy, varios clientes simultáneos, flag --exec;
  • socat — transferencia bidireccional entre casi cualquier fuente (sockets, archivos, dispositivos, TLS), sintaxis más compleja.
bash
sudo apt install nmap socat

Cómo protegerse contra el uso malintencionado de netcat

Las mismas propiedades hacen de netcat una herramienta del atacante: tras obtener acceso a un servidor, el intruso abre con él una conexión inversa hacia el exterior para eludir el firewall entrante. Lo que reduce el riesgo:

  • Filtrar el tráfico saliente. Por defecto el servidor puede conectar hacia fuera cualquiera de los puertos. Permite solo las direcciones/servicios necesarios y cierra el resto — una conexión inversa a un puerto arbitrario no pasará:
bash
# solo DNS, HTTP y HTTPS hacia afuera, lo demás — denegar
ufw default deny outgoing
ufw allow out 53
ufw allow out 80
ufw allow out 443
  • No mantengas netcat, compiladores e intérpretes innecesarios en el servidor de producción — su ausencia complica la persistencia.
  • Vigila procesos y conexiones inesperadas. Una conexión saliente de un proceso nc, bash o sh a una dirección externa es motivo de alarma:
bash
ss -tnp | grep -E 'nc|bash|sh'
  • Configura auditoría. Una regla de auditd marca la creación de pipes con nombre (mkfifo, mknod) — un signo típico de una shell inversa sin el flag -e:
bash
auditctl -a always,exit -F arch=b64 -S mknod -S mknodat -k reverse_shell

De forma completa, este tipo de ataques los detectan sistemas de detección en el host (auditd con reglas listas, Falco, EDR): ven combinaciones sospechosas “proceso shell + conexión de red”. Un firewall saliente y una instalación mínima de software en el servidor cierran los escenarios más sencillos.

Conclusión

Netcat mueve bytes desde stdin hacia la red y viceversa, por lo que se combina con comandos habituales de la shell — gzip, dd, pipes. Para comprobar puertos, transferir un archivo puntual y crear un túnel rápido esto es suficiente; para cifrado y servicios permanentes se usan Ncat, socat, SSH o VPN.

Fuentes:

// Reviews

Reseñas relacionadas

Llegué con una solicitud costosa para la configuración de un servidor VPS, pero durante la consulta Mikhail propuso una solución mucho más sencilla y económica. Al final ahorré dinero y tiempo. Mikhail — un verdadero experto que trabaja por el resultado del cliente, no por la factura. ¡Lo recomiendo!

Llegué con una solicitud costosa para la configuración de un servidor VPS, pero durante la consulta Mikhail propuso una solución mucho más simple y económica. Al final ahorré presupuesto y tiempo. Mikhail es un …

kfhzasorin

Configuración de VPS, configuración del servidor

12.05.2026 · ★ 5/5

Hubo varios problemas, tanto en la parte técnica como en la comprensión general. Mijaíl respondió rápido a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos; por ello, muchas gracias. Estoy satisfecho con el resultado.

Hubo varios problemas relacionados tanto con la parte técnica como con la comprensión en general. Mijaíl respondió rápidamente a la solicitud, ayudó a aclarar las cosas y resolvió los problemas técnicos, por lo que le …

abazawolf

Configuración de VPS, configuración del servidor

18.02.2026 · ★ 5/5

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

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

Confirme que no es un bot.

Escribir y recibir una respuesta rápida