¿Cómo puedo ver qué puertos están abiertos en mi máquina?

148

Me gustaría ver qué puertos están abiertos en mi máquina, por ejemplo, qué puertos está escuchando mi máquina. Por ejemplo, el puerto 80 si he instalado un servidor web, y así sucesivamente.

¿Hay algún comando para esto?

Jonas
fuente

Respuestas:

113

nmap Instalar nmap

Nmap ("Network Mapper") es una utilidad gratuita y de código abierto para la exploración de redes o la auditoría de seguridad

nmap 192.168.1.33 PC interna o nmap external ip address

más información man nmap

hhlp
fuente
11
Gracias, nmap localhostfuncionó muy bien.
Jonas
11
Recuerde que hay una diferencia entre nmap localhosty nmap 192.168.0.3(o lo que sea que sea su IP de máquina)
LassePoulsen
66
Creo que netstat es una mejor respuesta a esto. netstat enumerará lo que el sistema está escuchando directamente y sin usar una aplicación adicional o hacer llamadas innecesarias a través de localhost o pensó en la red.
Mathieu Trudel-Lapierre
2
Esto es estupido Si tiene acceso a la computadora, simplemente utilícela netstat -ln. Verá instantáneamente todos los puertos abiertos.
Alexis Wilke
1
nmap localhostno encontró servicios que estuvieran vinculados solo a localhost. Por ejemplo, corro influxdcon bind-address:localhost:8086. Eso no apareció en sudo nmap localhost, pero sí apareció en sudo netstat -tulpn.
Dan Dascalescu
279

Siempre he usado esto:

sudo netstat -ntlp | grep LISTEN
Silenciado
fuente
44
sudo netstat -ntlp | grep LISTEN... use lo sudocontrario ... pid no se imprimirá.
Rafaf Tahsin
66
-lYa filtros para escuchar. grep LISTENno ayudará más allá de ocultar 2 líneas de información de encabezado.
Dan Dascalescu
3
-t: tcp -l,: socket de escucha -p,: show pid y nombre del programa,: -nprint en 127.0.0.1:80lugar de localhost:http. Referencia: linux.die.net/man/8/netstat
Rick
1
instalar netstatconsudo apt-get install net-tools
RichArt
2
El comando expandido es sudo netstat --tcp --listening --programs --numeric. No es necesario usarlo a grepmenos que desee eliminar los encabezados de columna.
Patrick Dark
60

Otras buenas maneras de averiguar qué puertos están escuchando y cuáles son las reglas de su firewall:

  • sudo netstat -tulpn

  • sudo ufw status

nathwill
fuente
Vuelvo a cambiar la respuesta a nmap, la usabilidad de netstates basura.
Jonas
2
@Jonas: vea mi comentario debajo de la respuesta nmap. No enumerará los servicios que se unen solo a localhost.
Dan Dascalescu
27

Para enumerar los puertos abiertos, use el netstatcomando

Por ejemplo:

    $ sudo netstat -tulpn | grep LISTEN
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      5452/dnsmasq    
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1037/cupsd      
    tcp6       0      0 ::1:631                 :::*                    LISTEN      1037/cupsd

En el ejemplo anterior, tres servicios están vinculados a la dirección de bucle invertido.

Los servicios IPv4 vinculados a la dirección de bucle invertido "127.0.0.1" solo están disponibles en la máquina local. La dirección de bucle invertido equivalente para IPv6 es ":: 1". La dirección IPv4 "0.0.0.0" significa "cualquier dirección IP", lo que significaría que otras máquinas podrían conectarse potencialmente a cualquiera de las interfaces de red configuradas localmente en el puerto específico.

Otro método es usar el lsofcomando:

    $ sudo lsof -nP -i | grep LISTEN
    cupsd     1037   root    9u  IPv6  11276      0t0  TCP [::1]:631 (LISTEN)
    cupsd     1037   root   10u  IPv4  11277      0t0  TCP 127.0.0.1:631 (LISTEN)
    dnsmasq   5452 nobody    5u  IPv4 212707      0t0  TCP 127.0.0.1:53 (LISTEN)

Para más detalles ver man netstato man lsof.

inetpro
fuente
3
Pensé que la -lopción era listar LISTENpuertos. ¿Entonces el grep sería superfluo aquí?
Alexis Wilke
24

Esto es suficiente para mostrar que hay un proceso escuchando en la dirección IP 0.0.0.0(necesaria para que responda a cualquier solicitud) en el puerto 80 (número de puerto del servidor web estándar). En mi caso esto muestra que es el servidor weblighttpd

$ sudo netstat -ntlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN          2495/lighttpd

Si luego desea asegurarse de que lo único que permite a través de su firewall es el puerto 80, a menudo uso ShieldsUp de www.grc.com para realizar una prueba de firewall.

rstonehouse
fuente
11

sudo iptables -Lenumerará las reglas de puerto para su PC. Tenga en cuenta que si está utilizando los cortafuegos ufw o shorewall, la salida puede ser difícil de leer. En ese caso más bien use sudo ufw statuspor ejemplo.

Esto no es muy útil por sí solo, ya que incluso si un puerto es de acceso abierto, aún se denegará si no hay ningún proceso de escucha en ese puerto.

Ciaran Liedeman
fuente
4

Si está buscando monitoreo continuo de puertos para máquinas de servidor o locales, creo que también puede usar la versión gráfica de nmap, es decir, Zenmap para una versión más detallada

Zenmap es la interfaz gráfica de usuario (GUI) oficial para Nmap Security Scanner.

Soportes disponibles (Linux, Windows, Mac OS X, BSD, etc.)

Eche un vistazo a esta vista de herramienta:

ingrese la descripción de la imagen aquí

Vishal G
fuente