Volver al blog

Utilidad Netcat en Linux: Probando conexiones TCP/UDP en un VPS con Netcat

Utilidad Netcat en Linux: Probando conexiones TCP/UDP en un VPS con Netcat

Introducción

Una de las mayores ventajas de utilizar Linux es la gran cantidad de utilidades útiles que proporciona. Las funciones integradas en el programa suelen ser suficientes para que la mayoría de los programadores realicen su trabajo. Esto significa que la mayor parte del tiempo no necesitará descargar programas ni software externos. Las herramientas integradas le proporcionarán suficiente utilidad. Entre estas útiles funciones se encuentra la utilidad netcat.

Cuando se trata del mundo de las herramientas de red, netcat es una especie de arma superpotente. Es un comando increíblemente versátil que puede utilizar para múltiples propósitos. Por ejemplo, puede utilizar esta única herramienta para supervisar, probar y transferir todo tipo de archivos y datos a través de las conexiones de su sistema. En esta guía, exploraremos cómo realizar todas estas acciones en un VPS utilizando netcat.

Cómo encontrar Netcat

Netcat suele estar disponible en todas las distribuciones modernas de Linux. Lo que significa que lo más probable es que ya lo tenga y no necesite esforzarse para instalarlo. En nuestro tutorial, utilizaremos el VPS Ubuntu 12.04. Puede instalar su propio servidor Ubuntu siguiendo nuestro tutorial.  Ubuntu normalmente viene con la variante BSD de la utilidad netcat. Tenga en cuenta que si tiene otra versión, puede funcionar de manera un poco diferente.

Repaso de la sintaxis básica

Comenzamos aprendiendo sobre la sintaxis general que funciona en la utilidad netcat. Puede operar netcat iniciando una conexión TCP. La conexión debe iniciarse hacia un host remoto. Aquí está la sintaxis básica para netcat:

Este comando intentará iniciar una conexión TCP a un host remoto. El host al que se conecta depende del número de puerto que especifique en el comando. La conexión no estará cifrada. Como puede ver, este comando funciona de manera similar a cómo funciona el comando telnet.

Por otro lado, también puede iniciar una conexión UDP. Para enviar un paquete UDP en lugar de TCP, debe utilizar la opción -u. Así es como se vería:

Si lo desea, también puede especificar un rango de puertos. Para hacer esto, debe colocar un guion entre el primer y el último puerto. Aquí tiene un ejemplo:

También puede agregar más flags a esto. Otra cosa a tener en cuenta es que puede usar netcat y nc indistintamente. Lo lanzarán al mismo comando, lo que significa que son alias el uno del otro.

Uso de Netcat para el escaneo de puertos

Para empezar, exploremos uno de los usos más comunes de netcat. Descubriremos cómo usarlo como un escáner de puertos. En la mayoría de las situaciones, es mejor utilizar una herramienta como nmap. Sin embargo, si solo necesita realizar escaneos de puertos simples, netcat es útil. Puede ayudarle a identificar puertos abiertos con facilidad.

Para usar netcat como escáner de puertos, debe mencionar el rango de puertos. Hará esto usando la opción -z. De este modo, el sistema escaneará el rango de puertos en lugar de intentar una conexión. Supongamos que queremos escanear desde el puerto 1 hasta el puerto 1000:

Además del comando -z, también hemos utilizado la opción -v. Esta última nos permite dar más información al comando. Nos permite ser más 'detallados' (verbose).

Obtendrá una salida como esta a cambio:

port scanning netcat utility

La salida muestra mucha información para cada puerto individual. Conocerá el estado de la conexión de cada puerto. Por otro lado, puede usar la dirección IP en lugar del nombre de dominio si la conoce. Esto hace que el proceso sea mucho más rápido. Aquí tiene un ejemplo:

Usamos el flag -n para indicar que el sistema necesita usar DNS para resolver la dirección IP.

Normalmente, los mensajes de retorno se envían a la salida de error estándar. Para filtrar los resultados más rápido, puede redirigirlos a la salida estándar. Usaremos la sintaxis de bash 2>&1 para hacer esto. Posteriormente, filtraremos los resultados usando grep. Apliquemos esto a nuestro ejemplo:

La salida se verá similar a esto:

port scan succeeded

La salida muestra que solo el puerto 22 está abierto para la conexión en el rango dado. El puerto 22 resulta ser el puerto SSH tradicional.

Comunicación a través de Netcat: ¿Cómo funciona?

A continuación, veremos cómo puedes usar netcat para enviar paquetes TCP y UDP. No solo eso, sino que también puede recibir paquetes en varios puertos. Como resultado de esta capacidad, puedes usar dos instancias de netcat para crear una relación cliente-servidor. Al principio, determinarás el cliente y el servidor. Después de la configuración inicial, ambos clientes pueden enviar y recibir paquetes en cualquier dirección.

Naturalmente, tendrás que configurar netcat en un sistema para escuchar conexiones en un puerto. Para hacer esto, tienes que usar el parámetro -l. Con esto, puedes seleccionar el puerto de tu elección de esta manera:

Ahora TCP en esta máquina estará escuchando conexiones en el puerto 4444. Un punto a tener en cuenta es que si eres un usuario que no es root o un usuario normal, no podrás acceder a los puertos inferiores a 1000.

A continuación, tienes que configurar una segunda máquina para establecer una conexión. Usarás el mismo número de puerto e indicarás un nombre de dominio específico de esta manera:

Ejecutar este comando no te dará ninguna salida. Sin embargo, establecerá la conexión. Esto significa que puedes comenzar a enviar mensajes desde cualquiera de los servidores al otro. Para hacer esto, todo lo que tienes que hacer es escribir el mensaje y luego presionar ENTER. El mensaje se mostrará en ambas pantallas.

Una vez que hayas terminado, puedes cerrar la conexión TCP presionando CTRL+D.

¿Se pueden enviar archivos usando Netcat?

A continuación, te mostraremos cómo puedes enviar archivos a través de netcat. Con una conexión TCP, puedes enviar mensajes así como otros tipos de datos. Para empezar, debes seleccionar una máquina para escuchar conexiones. Sin embargo, en lugar de escribir la información en el comando, la colocaremos en un archivo como este:

En la otra máquina, tendrás que crear un nuevo archivo de texto. Aquí está el comando a usar:

Para transmitir el archivo, lo usarás como entrada para la conexión en la computadora que está escuchando:

La otra computadora mostrará un nuevo archivo llamado ‘received_file’. Contendrá toda la información que escribimos:

file transmissionPuedes usar esta utilidad y convertirla en un programa de transferencia de archivos. Digamos que quieres transferir el contenido de un directorio. Lo haremos creando un archivo tar sin nombre que transferiremos al sistema y desempaquetaremos en el directorio remoto. En la otra máquina, debemos prepararnos para recibir el archivo. Sabemos que necesitaremos descomprimirlo y extraerlo. Para hacer esto, emite este comando:

El guion indica que tar operará en la entrada estándar. Esto proviene de netcat en el servidor inicial cuando establecimos la conexión inicial.

Finalmente, podemos poner el contenido de todo el directorio en un archivo tar y enviarlo a través de netcat de esta manera:

El guion en el comando tar muestra que le estamos diciendo al sistema que empaquete y comprima el contenido del directorio. También le indica que escriba el resultado en la salida estándar. El archivo pasará a través de la conexión TCP al otro extremo. El servidor receptor lo descomprimirá y lo guardará en el directorio remoto actual.

De la misma manera, también puedes transferir otros tipos de datos a través de netcat. Muchas personas usan el comando dd para crear imágenes de discos y transferirlas. Para conocer otra forma de transferir datos y archivos, echa un vistazo a nuestro tutorial que muestra cómo garantizar la seguridad al transferir archivos con  SFTP.

Uso de Netcat como servidor web

Otra función útil de netcat es que puedes usarlo para probar tus páginas. Digamos que estamos usando un servidor para crear un archivo HTML como este:

Este es el código HTML que contiene el archivo:

Introduce esto en el archivo, luego guárdalo y ciérralo. Normalmente, el puerto 80 es el puerto web predeterminado. Como usuario normal, no raíz, seleccionaremos el puerto 8888. Suponiendo que deseas servir y comprobar la página una vez, debes usar este comando:

Para visualizar el contenido del archivo, ve a tu navegador. Visita lo siguiente:

Podrás ver la página que codificaste con el archivo HTML:

output html page netcat utility

Una vez que obtengas la página, la conexión de netcat se cerrará. Esto significa que actualizar la página te dará un error en lugar del contenido. Esto se debe a que lo configuramos para servir la página una sola vez. Si deseas seguir recibiendo conexiones para ver la página indefinidamente, utilizarás un código diferente:

Aquí, envolvimos el último comando en un bucle infinito. Si deseas detener el bucle, todo lo que tienes que hacer es presionar CTRL-C. Ahora puedes continuar viendo tu página y su renderizado incluso después de que se cierre la primera conexión. Sin embargo, esta es la funcionalidad máxima que puedes extraer del uso de la utilidad netcat como servidor web. No intentes usarla para servir sitios web reales, ya que no proporciona ninguna seguridad. En su lugar, puedes echar un vistazo a nuestros tutoriales sobre cómo instalar software de servidor web como Nginx o Apache.

Conclusión

En este tutorial, cubrimos la utilidad netcat y exploramos su versatilidad como herramienta en Ubuntu. Como cubrimos en las secciones anteriores, puedes usarla para fines de comunicación, transferencia de datos y servicio de páginas. Funciona perfectamente para interacciones rápidas entre servidores a través de conexiones TCP/UDP. Es una característica muy útil para una gran cantidad de funcionalidades básicas y diagnósticos.

¡Feliz computación!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.