¿Por qué nmap, ss (netscan?) y lsof dan resultados diferentes?

¿Por qué nmap, ss (netscan?) y lsof dan resultados diferentes?

Estoy tratando de entender qué puertos están escuchando activamente (¿en uso?) en mi máquina y no sé realmente qué estoy haciendo. Los tres comandos con los que he experimentado son nmap, ss(? netscan?) y lsof.

netscaninforma que solo 1 puerto está escuchando activamente (631):

$ sudo nmap -sT  localhost
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-02 21:28 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

ss(? netscan?) informa que 2 puertos están en uso (631 y 53):

$ sudo ss -tulwn | grep LISTEN
tcp    LISTEN  0       4096     127.0.0.53%lo:53           0.0.0.0:*            
tcp    LISTEN  0       5            127.0.0.1:631          0.0.0.0:*            
tcp    LISTEN  0       5                [::1]:631             [::]:*       

Finalmente, si reviso los puertos individuales con lsof -i:xx, veo resultados para 631 y 53, pero también para los puertos 80 y 443:

$ sudo lsof -i:80

COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
firefox 3481 me   74u  IPv4  85172      0t0  TCP Machine:56024->lga25s63-in-f3.1e100.net:http (ESTABLISHED)

$ sudo lsof -i:443
COMMAND    PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
skypeforl 2426 me   27u  IPv4  77133      0t0  TCP Machine:60396->13.83.65.43:https (ESTABLISHED)
skypeforl 2453 me   72u  IPv4  56536      0t0  TCP Machine:58945->40.86.187.166:https (ESTABLISHED)
firefox   3481 me   95u  IPv4  81375      0t0  TCP Machine:53788->104.16.249.249:https (ESTABLISHED)
firefox   3481 me  157u  IPv4  80283      0t0  TCP Machine:49080->lga34s15-in-f5.1e100.net:https (ESTABLISHED)
chrome-gn 3799 me   74u  IPv4  55080      0t0  TCP Machine:42196->server-52-85-61-100.ewr53.r.cloudfront.net:https (CLOSE_WAIT)
chrome-gn 3799 me   95u  IPv4  55072      0t0  TCP Machine:43998->104.16.248.249:https (CLOSE_WAIT)

Pensé que estos tres comandos eran básicamente vistas diferentes de la misma información. ¿Por qué algunos puertos sólo son revelados por algunos de estos comandos?

Respuesta1

Comenzando con la diferencia entre ssy nmap. Para el puerto 53, el motivo es la diferencia entre localhostlos otros 16 millones de direcciones reservadas para la máquina local. 127.0.0.1no es lo mismo que 127.0.0.53. ssinforma todos los puertos para la máquina local mientras nmapse restringe a la dirección 127.0.0.1.

En cuanto a los informes adicionales de lsof, se busca algo muy diferente. Sus comandos ssy nmapbuscan sockets en LISTENestado, es decir, esperando conexiones entrantes. Se lsofbuscan todos los enchufes, en particular las conexiones establecidas y las conexiones rotas. Estás buscando cosas dondecualquieraEl final está usando el puerto 80 ocualquieraEl final está utilizando el puerto 443.

Entonces, el remate es que estos 3 comandos muestran cosas diferentes porque su creencia de que muestran la misma información es incorrecta. Esta es una comparación de manzana, naranja y plátano. 3 comandos diferentes muestran información diferente porque muestran información diferente.

información relacionada