¿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: Sergio González D.  

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

EL espacio disponible en disco se determina con este comando built-in del sistema operativo Linux, df.....


En este tutorial sobre listas de control de acceso en squid, aprenderás lo básico de como configurarlas y establecerlas en la co....


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....


Hoy en día los usuarios de Windows y Linux tenemos múltiples formas de combinarlos en el mismo equipo. Ya sea que uses el tradic....


Cuando usas rm para eliminar o borrar un archivo, lo que realmente sucede es que los datos del archivo, su información tal cual, ....


Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL (casi todas las distros actuales lo instalan po....


Si acostumbras trabajar en la línea de comandos de Linux, muy posiblemente uses el shell bash (Bourne Again Shell, derivado del b....


yum es un paquete administrador de software(software package manager). Es una muy útil herramienta para instalar, actualizar y re....


Entre los administradores de sistemas Linux es común el término 'one liners', algo asi como 'los de una línea', y se refiere a ....


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



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