Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org
©
1999-2012 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y
comunicar públicamente la obra y hacer obras derivadas bajo las
condiciones siguientes: a) Debe reconocer y citar al autor original.
b)
No puede utilizar esta obra para fines comerciales (incluyendo su
publicación, a través de cualquier medio, por entidades con fines de
lucro). c) Si altera o transforma esta obra, o genera una obra
derivada, sólo puede distribuir la obra generada bajo una licencia
idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar
bien claro los términos de la licencia de esta obra. Alguna de estas
condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor. Los derechos derivados de usos legítimos u otras
limitaciones no se ven afectados por lo anterior. Licencia completa en
castellano.
La información contenida en este documento y los derivados de éste se
proporcionan tal cual son y los autores no asumirán responsabilidad
alguna si el usuario o lector hace mal uso de éstos.
Introducción.
Acerca de Netcat.
Netcat, o
nc
que es la forma en que se utiliza en el intérprete de mandatos, es una
herramienta utilizada para supervisar y escribir sobre conexiones tanto
por
TCP como por
UDP. Puede abrir conexiones
TCP, enviar paquetes
UDP, escuchar sobre puertos arbitrarios tanto
TCP como
UDP, supervisión de puertos y más, tanto para
IPv4 como
IPv6. Es una de las herramientas de diagnóstico y seguridad más populares y también una de las mejor calificadas por la comunidad.
Equipamiento lógico necesario.
Instalación a través de yum.
Si utiliza
Fedora,
CentOS o
Red Hat™ Enterprise Linux, puede instalar
Netcat ejecutando lo siguiente:
Procedimientos.
Conexiones simples.
Para iniciar una conexión hacia algún puerto en algún sistema, se utiliza el mandato
nc seguido de una dirección
IP y un puerto al cual conectarse. En el siguiente ejemplo se realizará una conexión hacia el puerto 25 (
SMTP) de
127.0.0.1:
Si hay un servidor de correo funcionado, lo anterior puede devolver una salida similar a la siguiente:
220 localhost.localdomain ESMTP ; Wed, 28 May 2008 10:24:52 -0500
quit
221 2.0.0 localhost.localdomain closing connection
|
Revisión de puertos.
Para revisar los puertos abiertos, se utiliza
nc con la opción ,
-z
para solicitar se trate de escuchar por puertos abiertos, y un puerto o
rango de puertos. En el siguiente ejemplo, se pide al mandato
nc revisar la presencia de puertos abiertos
TCP (modo predeterminado) entre el rango del puerto 21 al 25.
Lo anterior puede devolver una salida como la siguiente, si se encontrasen abiertos los puertos 21, 22 y 25.
Connection to 127.0.0.1 21 port [tcp/ftp] succeeded!
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
|
De manera opcional, se pueden revisar si están abiertos los puertos
abiertos por UDP añadiendo la opción -u. En el siguiente ejemplo se
solicita al mandato
nc revisar que puertos
UDP abiertos que se encuentran entre el rango del puerto 21 al 80.
Lo anterior puede devolver una salida como la siguiente si se encuentran abiertos los puertos
UDP 53, 67 y 68:
Connection to 127.0.0.1 53 port [udp/domain] succeeded!
Connection to 127.0.0.1 67 port [udp/bootps] succeeded!
Connection to 127.0.0.1 68 port [udp/bootpc] succeeded!
|
Si se quiere obtener una salida más descriptiva, solo es necesario especificar
nc -vz y la dirección
IP si se quiere revisar puertos
TCP abiertos, o bien
nc -vzu para puertos
UDP abiertos, donde
-v define se devuelva una salida
más descriptiva. En el siguiente ejemplo se pide al mandato
nc revisar los puertos
TCP abiertos entre el puerto 20 al 25.
nc -vz 127.0.0.1
La salida de lo anterior devolverá, a diferencia de utilizar solo -z, que puertos están cerrados.
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
Connection to 127.0.0.1 21 port [tcp/ftp] succeeded!
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
|
Creando un modelo cliente servidor.
Es relativamente simple crear un modelo cliente/servidor. Desde una
terminal que será utilizada para iniciar un modelo de servidor, se
utiliza el mandato
nc con la opción
-l (listen
o escuchar) seguida de un puerto que esté desocupado. Esto hará que nc
se comporte como servidor escuchando peticiones en un puerto arbitrario.
En el siguiente ejemplo se hará que mandato
nc funcione como servidor escuchando peticiones en el puerto
22222.
Para establecer la conexión como cliente, desde otra terminal se
inicia el mandato nc especificando a continuación una IP local para el
sistema y el numero de puerto al que se quiera conectar. En el siguiente
ejemplo se realiza la conexión al puerto
22222 de
127.0.0.1
Con lo anterior, todo lo que se escriba desde la terminal como cliente podrá ser visto en la terminal como servidor.
Transferencia de datos.
Tomando el ejemplo anterior, es posible realizar transferencia de
datos desde una terminal como cliente hacia una terminal como servidor.
La única diferencia es que en el servidor se redirecciona la salida
estándar (
STDOUT) de la terminal, hacia un archivo, como se ejemplifica a continuación:
En el cliente se realiza algo similar. En lugar de ingresar datos
desde la conexión. Se hace a partir de un archivo con contenido de la
siguiente forma:
nc 127.0.0.1 22222 < algo.in
|
En el ejemplo descrito se realiza la transferencia de datos del archivo
algo.in, desde el proceso como cliente, hacia el archivo
algo.out, en el proceso como servidor.
No hay comentarios:
Publicar un comentario