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.