netstat mostra una porta di ascolto senza pid ma lsof no


21

Questa domanda è simile alla porta di rete aperta, ma nessun processo collegato?

Ho provato di tutto da lì, ho rivisto i log, ecc ... e non riesco a trovare nulla.

Il mio netstat mostra una porta di ascolto TCP e una porta UDP senza pid. Quando cerco lsof per quelle porte non viene visualizzato nulla.

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:44231           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:55234           0.0.0.0:*                           - 

I seguenti comandi non visualizzano nulla:

lsof | grep 44231
lsof | greo 55234
fuser -n tcp 44231
fuser -n udp 55234

Dopo il riavvio, quelle "stesse" due connessioni sono presenti tranne che con i nuovi numeri di porta:

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:45082           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:37398           0.0.0.0:*                           - 

E ancora una volta, i comandi lsof e fuser non mostrano nulla.

Qualche idea di cosa siano? Dovrei essere preoccupato per loro?

Risposte:


11

Dai dati che hai fornito direi che è correlato ad alcuni montaggi NFS o qualcosa che utilizza RPC.

è possibile verificare con le rpcinfo -pporte che potrebbero essere utilizzate da alcuni dei servizi correlati RPC.

Ecco come appare sul mio sistema

# netstat -nlp | awk '{if ($NF == "-")print $0}'
tcp        0      0 0.0.0.0:55349           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:18049           0.0.0.0:*                           - 

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  10249  status
    100024    1   tcp  10249  status
    100021    1   udp  18049  nlockmgr
    100021    3   udp  18049  nlockmgr
    100021    4   udp  18049  nlockmgr
    100021    1   tcp  55349  nlockmgr
    100021    3   tcp  55349  nlockmgr
    100021    4   tcp  55349  nlockmgr

1
Se hai questo problema e vuoi forzare nlockmgr a usare porte specifiche, prova questa soluzione: fclose.com/39625/fixing-ports-used-by-nfs-server .
Ryan Walls,

13

Alcuni processi / pid sono disponibili solo per il root. Provare

sudo netstat -antlp

dovrebbe restituire il pid di ogni porta aperta che non si trova in uno stato TIME_WAIT


2
tutte le porte TCP aperte solo con questo comando. Le porte UDP non verranno visualizzate.
petrus

8

Sulla base del suggerimento di @ user202173 e altri, sono stato in grado di utilizzare quanto segue per rintracciare il processo che possiede una porta anche quando è elencato come -in netstat.

Ecco la mia situazione iniziale. sudo netstatmostra la porta con PID / Programma di -. lsof -inon mostra nulla.

$ sudo netstat -ltpna | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  -
$ sudo lsof -i :8785
$

Ora andiamo a pescare. Per prima cosa otteniamo l'inode aggiungendo -ealla nostra netstatchiamata.

$ sudo netstat -ltpnae | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      199179     212698803   -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  0          0           -

Uso successivo lsofper associare il processo a quell'inode.

$ sudo lsof | awk 'NR==1 || /212698803/'
COMMAND      PID    TID                USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
envelope_ 145661 145766               drees   15u     IPv6          212698803        0t0        TCP *:8785 (LISTEN)

Ora conosciamo l'id del processo in modo da poter esaminare il processo. E purtroppo è un processo defunto. E il suo PPID è 1, quindi non possiamo neanche uccidere il suo genitore (vedi Come posso uccidere un processo il cui genitore è init? ). In teoria init potrebbe eventualmente risolverlo, ma mi sono stancato di aspettare e riavviato.

$ ps -lf -p 145661
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z drees    145661      1  2  80   0 -     0 exit   May01 ?        00:40:10 [envelope] <defunct>

1
Sono alla ricerca di questa soluzione da mesi ormai. grazie per questo jem
manish Prasad il

Sto cercando una soluzione come questa da anni. Grazie! Uno degli aspetti negativi qui è che se un client o un server NFS è impantanato, allora lsof | awk 'NR==1 || /212698803/'(anche con lsof -Nper mostrare solo NFS) può essere molto lento a rispondere e può scadere. Un altro aspetto negativo è che l'inode può cambiare durante la risoluzione dei problemi.
Stefan Lasiewski il

4

Non so cosa siano nello specifico, ma i moduli del kernel (ad esempio NFS) non hanno un PID da associare a questi socket. Cerca qualcosa di sospetto in lsmod.


lsmod non restituisce nulla. Questo server è un client NFS. Questo è attualmente il mio sospetto n. 1.
mhost,

Ciò spiegherebbe perché le porte client sono cambiate dopo una nuova istanza del kernel.
Andyortlieb,

Non avresti dovuto essere sottovalutato poiché questa è una risposta totalmente legittima. Mi ha aiutato a trovare un caso in cui le altre risposte (usando rpcbind o lsof) non hanno aiutato. (E sì, era NFS.) Grazie!
Peter Hansen,

Hmm, mi chiedo perché non assegni un PID al client NFS solo così puoi vedere cosa succede con questo ... Immagino che richiederebbe un thread di lavoro o qualcosa del genere?
SamB,

3

Non so se questo può essere utile. Ho avuto lo stesso problema e quello che ho fatto è il seguente: in primo luogo, ho chiamato netstat con le opzioni -a (tutte) e -e (estese). Con quest'ultima opzione posso vedere l'Inode associato alla porta utilizzata. Quindi, ho chiamato lsof | grep con il numero di inode ottenuto e ho ottenuto il PID del processo associato a quell'inode. Nel mio caso ha funzionato.


0

C'è traffico proveniente da questa porta, controlla che con tcpdump -vv -x s 1500 port 37398 -w trace.outSalva la tua acquisizione nel file trace.out sia possibile aprirlo con WireShark o tcpdump -vv port 37398vedere cosa succede direttamente.

Prova a telnet su quella porta, usa netcat per il socket udp, forse otterrai una sorta di banner che aiuta.

Ottieni rkhunter e controlla il tuo sistema per una backdoor.

Confronta l'hash md5 di lsof / netstat con quello del tuo media di installazione, assumendo i file dove non si aggiorna.


Ho provato a localizzare Netcat su entrambe le porte e non visualizza nulla. Per la porta tcp, si chiude se scrivo qualcosa e poi invio. Quello UDP si chiude solo se premo Ctrl + C. Ho installato iptables e non consente connessioni a quelle porte, quindi a meno che non stiano bypassando iptables, non riesco a immaginare che qualcosa si colleghi a loro.
mhost,

che tipo di server è DB, APP .. quale software stai usando?
Izac,

È un web server che esegue apache e praticamente nient'altro che cose come cron e syslog.
mhost,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.