Hostwinds Blog

Resultados de búsqueda para:


5 formas de verificar los puertos abiertos en Linux Foto principal

5 formas de verificar los puertos abiertos en Linux

por: Hostwinds Team  /  enero 14, 2025


Los puertos son como puertas que permiten que las aplicaciones y programas en su sistema Linux envíen y reciban datos.Si desea ver qué puertos están en uso, cuáles están abiertos, o simplemente averiguar qué está pasando con su red, ha venido al lugar correcto.

En esta guía, caminaremos a través de múltiples formas de verificar los puertos en Linux usando comandos simples.Al final, se sentirá más cómodo trabajando con puertos y saber qué está sucediendo en su sistema.

¿Qué son los puertos?

Antes de saltar a los comandos, tomemos un momento para comprender qué son los puertos:

  • Los puertos son números que identifican programas o aplicaciones específicos que se ejecutan en su computadora.Por ejemplo:
    • Puertos de servidor web son típicamente usados Puerto 80 (Http) o puerto 443 (Https).
    • Inicios de sesión remotos a través de SSH típicamente usa puerto 22.
  • Cada puerto tiene un número entre 0 y 65535, que caen en tres grupos principales:
    • 0–1023: Reservado para protocolos comunes como HTTP y FTP.
    • 1024–49151: Para las aplicaciones que instala.
    • 49152–65535: Puertos temporales utilizados cuando las aplicaciones se conectan a un servicio.

Con eso fuera del camino, exploremos cómo verificar lo que está sucediendo con sus puertos.

Cómo verificar los puertos en Linux

Linux tiene una serie de herramientas para ayudarlo a verificar los puertos de abrir o escuchar.A continuación, caminaremos por cinco métodos comunes y explicaremos lo que hace cada uno.

1. Usando Netstat

El comando NetStat le brinda una vista detallada de las conexiones de red y el uso del puerto.

Abra una terminal y tipo:

netstat -tuln

Esto es lo que significa cada opción:

  • -T: Mostrar puertos TCP (protocolo de control de transmisión).
  • -u: Mostrar puertos UDP (protocolo de datagrama de usuario).
  • -La: Mostrar solo puertos que están escuchando activamente.
  • -norte: Omita los nombres de los programas de traducción (por ejemplo, "SSH") en números de puerto, lo que lo hace más rápido.

Lo que verás:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*

Aquí le mostramos cómo leer esto:

  • Proto: Muestra si es TCP o UDP.
  • Dirección local: La IP de su máquina y el puerto en uso.
  • Dirección extranjera: La IP y el puerto de la otra máquina (o* si está abierto a todos).
  • Estado: Para TCP, escuchar significa que está esperando conexiones.

Nota rápida: NetStat es parte del paquete Net-Tools, que puede no venir preinstalado en versiones más nuevas de Linux.Instalarlo usando:

sudo apt install net-tools  # On Debian/Ubuntu  
sudo yum install net-tools  # On RHEL/CentOS 

2. Usando SS

ss es una alternativa más nueva y rápida a Netstat.Brinda información similar pero funciona mejor en los sistemas modernos.

Ejecute el siguiente comando:

ss -tuln

Las opciones son las mismas que Netstat, por lo que debería poder saltar directamente.

Lo que verás:

Netid   State      Recv-Q Send-Q Local Address:Port           Peer Address:Port
tcp     LISTEN     0      128    0.0.0.0:22                  0.0.0.0:*         
udp     UNCONN     0      0      0.0.0.0:68                  0.0.0.0:*

Esta salida es similar a NetStat, pero ss tiende a ser más rápido, especialmente si se trata de muchas conexiones.

3. Usando LSOF

lsof (Lista de archivos abiertos) es una herramienta útil para ver qué archivos o conexiones de red están utilizando los procesos.

Para ver qué puertos están abiertos y qué los está usando, ejecute:

sudo lsof -i -P -n
  • -i: Filtros para archivos relacionados con la red.
  • -PAG: Muestra números de puerto sin procesar en lugar de nombres de servicio.
  • -norte: Omita la traducción de las direcciones IP a los nombres de host para la velocidad.

Lo que verás:

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234 root   3u  IPv4  12345      0t0  TCP *:22 (LISTEN)
dhclient  5678 root   6u  IPv4  54321      0t0  UDP *:68
  • DOMINIO: El programa que usa el puerto.
  • Pid: La identificación del proceso.
  • NOMBRE: El puerto y el protocolo (por ejemplo, TCP en el puerto 22).

Por qué es útil:

Si está solucionando problemas y necesita averiguar qué proceso está utilizando un puerto específico, lsof es tu herramienta de referencia.

4. Usando NMAP

nmap (Network Mapper) es ideal para escanear redes y verificar qué puertos están abiertos.

Para escanear todos los puertos, ejecute:

sudo nmap -sT -p- localhost
  • -calle: Realiza un escaneo de conexión TCP.
  • -pag-: Escaneos de 65,535 puertos.

Lo que verás:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
  • PUERTO: El número de puerto y el protocolo (TCP o UDP).
  • ESTADO: Le dice si el puerto está abierto, cerrado o filtrado (bloqueado por un firewall).
  • SERVICIO: El nombre común del servicio utilizando el puerto.

Por qué NMAP es útil:

nmap es excelente si desea una vista completa de todos los puertos abiertos en su sistema o necesita escanear otra máquina.

5. Uso de NC (NetCat)

Netcat es una herramienta simple pero poderosa para verificar si un puerto específico está abierto.

Para verificar si el puerto 22 está abierto, escriba:

nc -zv localhost 22
  • -z: Simplemente escanee los puertos abiertos sin enviar datos.
  • -V: Mostrar salida detallada.

Lo que verás:

Connection to localhost 22 port [tcp/ssh] succeeded!

Por qué es útil:

Si solo necesita verificar rápidamente si un puerto específico está abierto, Carolina del Norte hace el trabajo sin mucho alboroto.

Dando sentido a los resultados

Cuando verifica los puertos, esto es lo que suelen decir los resultados:

  • Puertos de escucha/abierta: Estos puertos están listos para aceptar conexiones.Por ejemplo, un servidor web escuchará en el puerto 80 o 443.
  • Puertos cerrados: Estos puertos no están en uso, por lo que no aceptarán conexiones.
  • Puertos filtrados: Estos puertos están bloqueados por un firewall o regla de seguridad, por lo que parecen invisibles.

Escenarios comunes

Al verificar los puertos, puede encontrar los siguientes escenarios:

  • Ves un puerto abierto que no esperaba: Esto podría significar que un programa se está ejecutando que no necesita ni reconoce.Es una buena idea investigar más.
  • Un puerto que necesitas está cerrado: El programa podría no estar ejecutándose, o un firewall podría estar bloqueandolo.

Asegurando su sistema

El control de los puertos es solo el primer paso.Aquí hay algunas formas de ordenar las cosas:

Detener programas innecesarios:
Si un programa se ejecuta en un puerto que no necesita, apáguelo:

sudo systemctl stop <service_name>
sudo systemctl disable <service_name>

Use un firewall:
Limite el acceso a los puertos utilizando una herramienta como UFW (firewall sin complicaciones):

sudo ufw allow 22     # Allow SSH  
sudo ufw deny 80      # Block HTTP

Monitorear regularmente los puertos:
Haga que sea un hábito verificar los puertos abiertos de vez en cuando, especialmente si está ejecutando un servidor.

Terminando

Verificar puertos en Linux no tiene que ser complicado.Ya sea que use NetStat, SS, LSOF, NMAP o NC, cada herramienta le brinda una vista ligeramente diferente de lo que está sucediendo.Elija el que funcione mejor para sus necesidades y no tenga miedo de explorar.¡Cuanto más practiques, más fácil será!

Escrito por Hostwinds Team  /  enero 14, 2025