¿Cómo verificar los puertos abiertos / cerrados en mi computadora?


135

¿Cómo verificar los puertos abiertos / cerrados en mi computadora?

Solía netstat -aen la línea de comando.

  • ¿El estado del puerto "ESCUCHANDO" indica que el puerto está abierto?
  • ¿Hay algún puerto que no se muestra en la salida cerrado?


2
@Justgivemeaname: nmapes una herramienta para verificar puertos abiertos en otro host. Si puede ejecutarlo netstaten una máquina, es mucho más rápido y confiable usarlo.
David Foerster

@DavidFoerster: No sabía netstat, así que aprendí eso. Sin embargo, dice en el enlace que debería usarse desde otro host. ¡Gracias!
Justgivemeaname

Respuestas:


164

Hay algunos parámetros netstatque son útiles para esto:

  • -lo --listeningmuestra solo los enchufes que actualmente escuchan la conexión entrante.
  • -ao --allmuestra todos los enchufes actualmente en uso.
  • -to --tcpmuestra los zócalos tcp.
  • -uo --udpmuestra las tomas udp.
  • -no --numericmuestra los hosts y puertos como números, en lugar de resolver en dns y buscar en / etc / services.

Utiliza una combinación de estos para obtener lo que quieres. Para saber qué números de puerto están actualmente en uso, use uno de estos:

netstat -atn           # For tcp
netstat -aun           # For udp
netstat -atun          # For both

En la salida, todos los puertos mencionados están en uso, ya sea para escuchar la conexión entrante o conectados a un par ** todos los demás están cerrados. Los puertos TCP y UDP tienen 16 bits de ancho (van desde 1-65535)

** También se pueden conectar / desconectar del par.


71

Puedes usar este comando:

netstat -tulnp | grep <port no>

Si muestra algún proceso, se utiliza. Está cerrado (no utilizado) si no hay salida.


20

Otra línea de comando alternativa fácil de usar para averiguar qué proceso está usando un puerto:

lsof -n -i4TCP:$PORT | grep LISTEN

Agregué la siguiente función en mi .bash_profile,

function pslisten {
    echo `lsof -n -i4TCP:$1 | grep LISTEN`
}

y ahora ejecuta "pslisten 5060" para ver quién está tomando mi puerto SIP.

También funciona con Apple Mac OS X.


13

¿El estado del puerto "ESCUCHANDO" indica que el puerto está abierto?

Si. Significa que algún servicio está escuchando ese puerto en su computadora para la conexión entrante, es decir, este puerto está abierto para establecer nuevas conexiones.

¿Algún puerto que no se muestra en la salida indica que está cerrado?

Si. Recuerde netstat -aque mostrará todas las conexiones activas (de escucha ) y pasivas ( sin escucha ), es decir, los puertos que actúan como servidor (algunos servicios están escuchando estos puertos para conexiones desde una máquina / proceso diferente) y establecidos (las conexiones se establecen en estos puertos independientemente del hecho de que el host / un servicio puede ser un servidor o cliente)

Todos los puertos TCP y UDP pertenecen a una categoría llamada sockets y hay muchos de esos. Para ver la información del socket puede verificar man ss.


Gracias. usted escribió que -asignifica servidor y establecido. ¿"Servidor" significa puertos que están siendo escuchados por algunos servicios? ¿"Establecido" significa puertos donde hay conexiones existentes independientemente de si es un puerto de cliente o servidor? Entonces, ¿qué tipo de puertos -ano muestra?
Tim

No creo que la -aopción signifique enchufes "todos activos"; solo significa "todos". netstat muestra todos los sockets activos por defecto, pero deja de lado los sockets pasivos (abiertos, escuchando). Al usar la -aopción, se muestran los zócalos activos y pasivos.
Egon Olieux

@EgonOlieux Gracias. Estoy corregido; editó la respuesta.
heemayl

@heemayl La segunda parte de su respuesta aún no es correcta. Un socket TCP en estado de "escucha" nunca puede ser una conexión; no está conectado a nada, solo está escuchando. Los sockets TCP de escucha también se denominan sockets pasivos debido a esto. Si un cliente intenta conectarse a un socket (de escucha) en un servidor, se creará un nuevo socket en el servidor para establecer una conexión con el cliente. Un socket que es parte de una conexión establecida se llama socket activo.
Egon Olieux

3

Otra opción es ss . Es mucho más fácil de usar ...

El siguiente comando solo generará una lista de los zócalos de escucha actuales.

root@server:~# ss -l

    Netid  State      Recv-Q Send-Q                                     Local Address:Port                                                      Peer Address:Port   


u_dgr  UNCONN     0      0                                                      * 23353                                                                * 23352                
u_dgr  UNCONN     0      0                                                      * 568                                                                  * 362                  
u_dgr  UNCONN     0      0                                                      * 14836                                                                * 14837                
u_dgr  UNCONN     0      0                                                      * 20446                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 22877                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 504                                                                  * 347                  
u_dgr  UNCONN     0      0                                                      * 16298                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23343                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24125                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24617                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23352                                                                * 23353                
u_dgr  UNCONN     0      0                                                      * 23334                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 17113                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 16957                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 14793                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 23345                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 24070                                                                * 369                  
udp    UNCONN     0      0                                                      *:sunrpc                                                               *:*                    
udp    UNCONN     0      0                                                      *:981                                                                  *:*                    
udp    UNCONN     0      0                                                     :::sunrpc                                                              :::*                    
udp    UNCONN     0      0                                                     :::981                                                                 :::*                    
tcp    LISTEN     0      128                                            127.0.0.1:85                                                                   *:*                    
tcp    LISTEN     0      128                                                    *:ssh                                                                  *:*                    
tcp    LISTEN     0      128                                                    *:3128                                                                 *:*                    
tcp    LISTEN     0      100                                            127.0.0.1:smtp                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:8006                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:sunrpc                                                               *:*                    
tcp    LISTEN     0      128                                                   :::ssh                                                                 :::*                    
tcp    LISTEN     0      100                                                  ::1:smtp                                                                :::*                    
tcp    LISTEN     0      128                                                   :::sunrpc                                                              :::*                    

1
No sabía sobre esto, gracias zee
nick fox

2

O esto podría ayudar usando el reloj, luego juegue con lo que desea ver.

sudo watch -d -n0 "netstat -atnp | grep ESTA"

sudo watch -d -n0 "netstat -tulnp | grep ESTA"

1
-a conflictos con -l, -a agarra todo sea que se establezcan o escuchando, y -L simplemente agarra ESCUCHAR, por lo que en realidad se trata de tcp '-ltnp', UDP '-lunp' o TCP '-ltunp' + UDP
ModerateJavaScriptDev

1

En realidad, hay una mejor manera de ver qué puertos tiene abiertos. El problema con netstato lsofes que consultan la pila de red y en realidad no se conectan a la máquina, sino que intentan ver qué se está ejecutando en el sistema. El mejor enfoque es usarlo nmapasí:

nmap -sT -O localhost

Ver puertos abiertos.


0
  1. Pruebe esto para obtener una lista de puertos abiertos en ese rango.

    for p in {1..1023}
    do
       (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
    done
  2. ¡Y este comando mostrará qué es!

    cat /etc/services | grep {PORTNumber}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.