¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal


Probar o escanear puertos abiertos 

Copyright © 2005-2024 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor:  

Una tarea básica y habitual en la administración de redes, es la de probrar puertos abiertos contra los servicios en otros servidores en la misma red u otras redes. Existen varios métodos y herramientas que permiten lo anterior en el mundo GNU/Linux. Conoce en este pequeño tutorial distintas maneras de probar si un puerto esta abierto o no.


TELNET

El cliente telnet hace varios años que no se usa para establecer conexiones remotas, esto por su inseguridad (transmisión de datos sin encriptación) y porque ssh lo reemplazó como método seguro de conexión remota. Pero si lo tienes instalado es excelente para probar conectividad de puertos:

sintaxis: telnet host puerto

# telnet 192.168.0.19 443
Trying 192.168.0.19...
Connected to 192.168.0.19.         <-- Puerto abierto
Escape character is '^]'.

# telnet 192.168.0.19 639
Trying 192.168.0.19...            <-- Puerto cerrado, sin respuesta



NC (netcat)

nc que es la herramienta netcat, es una utileria de red muy completa para monitoreo, diagnóstico, análisis, etc. Prácticamente cualquier uso de los protocolos TCP y UDP puede ser ejecutado con nc.

sintaxis: nc opciones host puerto[s]


# nc -zv 192.168.0.19 443
Connection to 192.168.0.19 443 port [tcp/https] succeeded!                <-- Puerto abierto

# nc -zv 192.168.0.19 639
nc: connect to 192.168.0.19 port 639 (tcp) failed: Connection timed out   <-- Puerto cerrado


[root@localhost ~]# nc -zu 200.52.196.196 53
Connection to 200.52.196.196 53 port [udp/domain] succeeded!



# nc -z -w1 192.168.0.19 130-140
Connection to 192.168.0.19 135 port [tcp/epmap] succeeded!
Connection to 192.168.0.19 139 port [tcp/netbios-ssn] succeeded!

NMAP

nmap es la herramienta de escaneo de redes por excelencia, con su multitud de opciones y scripts es increiblemente poderosa. Tutoriales muy completos existen sobre nmap y es un deber conocerla para los profesionales de redes. Además es una de las armas más poderosa para el hackeo de servidores.

Con lo anterior dicho solo mostraré una parte muy pequeña del poder de nmap enfocada al tema de este artículo, el monitoreo de puertos.

sintaxis: nmap opciones host[s]


# nmap -p 80 192.168.0.19
Starting Nmap 5.51 ( http://nmap.org ) at 2019-02-10 14:38 CST
Nmap scan report for 192.168.0.19
Host is up (0.00056s latency).
PORT   STATE SERVICE
80/tcp open  http                <-- Puerto abierto
Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds

# nmap -p 135-140 192.168.0.19
Starting Nmap 5.51 ( http://nmap.org ) at 2019-02-10 14:43 CST
Nmap scan report for 192.168.0.19
Host is up (0.00040s latency).
PORT    STATE    SERVICE
135/tcp open     msrpc            <-- Puerto abierto
136/tcp filtered profile          <-- Puerto cerrado 
137/tcp filtered netbios-ns       <-- Puerto cerrado 
138/tcp filtered netbios-dgm      <-- Puerto cerrado 
139/tcp open     netbios-ssn      <-- Puerto abierto
140/tcp filtered unknown          <-- Puerto cerrado   
Nmap done: 1 IP address (1 host up) scanned in 1.34 seconds


# nmap -F 192.168.0.19
Starting Nmap 5.51 ( http://nmap.org ) at 2019-02-10 14:46 CST
Nmap scan report for 192.168.0.19
Host is up (0.00066s latency).
Not shown: 93 filtered ports
PORT     STATE SERVICE
80/tcp   open  http
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
3306/tcp open  mysql
5357/tcp open  wsdapi
Nmap done: 1 IP address (1 host up) scanned in 1.79 seconds

CURL

curl es una herramienta de transferencia de datos. Soporta una gran variedad de protocolos de transferencia como FTPS, HTTP, HTTPS, IMAP, LDAP, POP3, SCP, TELNET, etc. etc. Al igual que con nc y nmap sus opciones son múltiples y los trucos que puede realizar son muy variados y completos. curl esta diseñado para ejecutarse incluso sin interacción del usuario, pero como en los ejemplos anteriores solo utilizaremos su capacidad de escanear puertos abiertos, utilizando para esto el protocolo de telnet.

sintaxis: curl -v telnet://hots:puerto

# curl -v telnet://192.168.0.19:443
* About to connect() to 192.168.0.19 port 443 (#0)
*   Trying 192.168.0.19... connected
* Connected to 192.168.0.19 (192.168.0.19) port 443 (#0)       <-- Puerto abierto

# curl -v telnet://192.168.0.19:639
* About to connect() to 192.168.0.19 port 639 (#0)
*   Trying 192.168.0.19... Expiró el tiempo de conexión
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host                             <-- Puerto cerrado   

BASH

Desde el shell de BASH es posible establecer conexiones TCP/UDP mediante los pseudo devices especiales /dev/tcp y /dev/udp. Este permite establecer sockets de red TCP y UDP a cualquier dispositivo o servicio de red que este accesible.

Al decir que son pseudo dispositivos, es porque lo son, no existen como archivos, de hecho si tratas de listarlos este es el resultado:

# ls /dev/tcp
ls: no se puede acceder a /dev/tcp: No existe el fichero o el directorio

Sin embargo, como ya se mencionó, tienen el uso especializado de crear sockets de red.

sintaxis: /dev/tcp/host/puerto

sintaxis: /dev/udp/host/puerto

Ejemplo, consultar la hora al servidor NTP time.nist.gov :

# cat < /dev/tcp/time.nist.gov/13
58529 19-02-15 04:57:17 00 0 0 589.5 UTC(NIST) *

Y como podrás imaginarte, no necesariamente tienes que establecer un socket completo, se puden utilizar para probar o escanear puertos. Veamos ahora ejemplos para determinar puertos abiertos.

$ (echo > /dev/tcp/192.168.0.19/22) > /dev/null 2>&1 && echo "abierto" || echo "cerrado"
abierto
$ (echo > /dev/tcp/192.168.0.19/443) > /dev/null 2>&1 && echo "abierto" || echo "cerrado"
cerrado


$ timeout 3 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.19/22' ; echo $?
0       <-- Puerto abierto

$ timeout 3 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.19/639' ; echo $?
bash: connect: Connection refused
bash: /dev/tcp/192.135.82.132/639: Connection refused
1       <-- Puerto cerrado   

Un poco más de puertos en Linux

Para finalizar, recordemos que el archivo /etc/services es un listado de todos los puertos/servicios registrados. Lista mantenida por la asociación IANA (http://www.iana.org/assignments/port-numbers). De este mismo archivo obtenemos lo siguiente, que es bueno saber:

  • 0 - 1023: puertos "Well Known" o bien conocidos, también conocidos como puertos "root"
  • 1024 - 49151: Puertos registrados, son los puertos que compañias y/o organismos registran para sus servicios.
  • 49152 - 65535: Puertos dinámicos, son los que se utilizan para formar sockets.

    
    
$ grep -w 53 /etc/services
domain          53/tcp                          # name-domain server
domain          53/udp


¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.


Dona a través de paypal::


O a través de bitcoins:


14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE
Más artículos de LinuxTotal

Utilizar los recursos informáticos un proveedor externo es lo que ahora se conoce como la nube, Cloud en inglés. Pero por otro l....


La gente considera encriptar algunos o todos sus archivos por múltiples razones. Ya sea que no puedan depender en seguridad físi....


Como formatear disketes o floppies en Linux.....


mysqldump es una utilieria cliente de MySQL que te permite respaldar bases de datos. Aprende por ejemplos como utilizarlo. Puedes....


...quien resuelve los nombres de dominio a su correspondiente IP, sería el DNS del proveedor, pero si implementamos un DNS Cache,....


En el artículo de LinuxTotal.com.mx sobre permisos se explica lo que es un archivo con permisos SUID o SGID, pueden ser potencial....


El comando find de Linux es extremadamente potente. No hay nada mejor para hacer todo tipo de búsquedas de archivos y carpetas qu....


Como montar imágenes ISO en Linux.....


Hay ocasiones que los usuarios insisten en poner contraseñas muy débiles de 5 o 6 caracteres a lo más. Y el argumento que dan e....


GNU/Linux es increiblemente fácil de configurar, no bases de datos raras, no registros, no directorios regados por aquí y por al....



Copyright © LinuxTotal.com.mx 2006-2024
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com