O netstat mostra uma porta de escuta sem pid, mas o lsof não

21

Esta pergunta é semelhante à porta de rede aberta, mas nenhum processo foi anexado?

Eu tentei de tudo lá, revi os logs, etc ... e não consigo encontrar nada.

Meu netstat mostra uma porta de escuta TCP e uma porta UDP sem um pid. Quando procuro por essas portas, nada aparece.

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:*                           - 

Os seguintes comandos não exibem nada:

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

Após a reinicialização, essas "mesmas" duas conexões existem, exceto com novos números de 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 mais uma vez, os comandos lsof e fuser não mostram nada.

Alguma idéia do que são? Devo me preocupar com eles?

mhost
fonte

Respostas:

11

Dos dados que você forneceu, eu diria que está relacionado a algumas montagens NFS ou algo usando RPC.

você pode verificar se rpcinfo -phá portas que possam ser usadas por alguns serviços relacionados ao RPC.

Aqui está como fica no meu 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
Hrvoje Špoljar
fonte
1
Se você tiver esse problema e quiser forçar o nlockmgr a usar portas específicas, tente esta solução: fclose.com/39625/fixing-ports-used-by-nfs-server .
Ryan Walls
13

Alguns processos / pids estão disponíveis apenas para fazer root. Experimentar

sudo netstat -antlp

deve retornar o pid de todas as portas abertas que não estão no estado TIME_WAIT

user1389651
fonte
2
todas as portas TCP abertas apenas com este comando. As portas UDP não serão mostradas.
petrus 31/03
8

Com base na dica de @ user202173 e outros, pude usar o seguinte para rastrear o processo que possui uma porta, mesmo quando ela está listada como -no netstat.

Aqui estava minha situação inicial. sudo netstatmostra a porta com PID / Programa de -. lsof -inão mostra nada.

$ 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
$

Agora vamos pescar. Primeiro vamos pegar o inode adicionando -eà nossa netstatchamada.

$ 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           -

Em seguida, use lsofpara anexar o processo a esse 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)

Agora sabemos o ID do processo para que possamos analisar o processo. E, infelizmente, é um processo extinto. E seu PPID é 1, portanto também não podemos matar seu pai (consulte Como posso matar um processo cujo pai é init? ). Em teoria, o init pode eventualmente limpá-lo, mas eu me cansei de esperar e reiniciei.

$ 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>
studgeek
fonte
1
Há meses que procuramos esta solução. obrigado por este jem
manish Prasad 22/03
Estou procurando uma solução como essa há anos. Obrigado! Uma das desvantagens aqui é que, se um cliente ou servidor NFS estiver atolado, lsof | awk 'NR==1 || /212698803/'(mesmo com lsof -Na exibição apenas do NFS), a resposta será muito lenta e poderá atingir o tempo limite. Outra desvantagem é que o inode pode mudar enquanto você estiver solucionando isso.
Stefan Lasiewski 15/11
4

Não sei o que são especificamente, mas os módulos do kernel (NFS por exemplo) não têm um PID para associar a esses soquetes. Procure algo suspeito no lsmod.

andyortlieb
fonte
lsmod não retorna nada. Este servidor é um cliente NFS. Atualmente, esse é o meu principal suspeito.
mhost 13/09/11
Isso explicaria por que as portas do cliente foram alteradas após uma nova instância do kernel.
andyortlieb 13/09/11
Você não deveria ter sido derrotado, pois esta é uma resposta totalmente legítima. Isso me ajudou a encontrar um caso em que as outras respostas (usando rpcbind ou lsof) não ajudaram. (E sim, era o NFS.) Obrigado!
Peter Hansen
Hmm, eu me pergunto por que ele não atribui um PID ao cliente NFS apenas para que você possa ver o que há com isso ... Eu acho que exigiria que ele tivesse um thread de trabalho ou algo assim?
SamB 11/01
3

Não sei se isso pode ser útil. Eu tive o mesmo problema e o que fiz foi o seguinte: Primeiro, chamei netstat com as opções -a (all) e -e (extended). Com a última opção, posso ver o Inode associado à porta usada. Então, chamei lsof | grep com o número de inode obtido e obtive o PID do processo associado a esse inode. Isso funcionou no meu caso.

user202173
fonte
0

Existe algum tráfego vindo ou saindo dessa porta, verifique se tcpdump -vv -x s 1500 port 37398 -w trace.outSalva sua captura no arquivo trace.out, em seguida, você pode abri-lo com o wireshark ou tcpdump -vv port 37398ver o que está acontecendo diretamente.

Tente telnetar para essa porta, use netcat para o soquete udp, talvez você tenha algum tipo de banner que ajude.

Obtenha o rkhunter e verifique se há um backdoor no seu sistema.

Compare o hash md5 de lsof / netstat com o da mídia de instalação, assumindo que os arquivos não estão atualizados.

Izac
fonte
Eu tentei localmente netcat para ambas as portas e ele não exibe nada. Para a porta TCP, ela fecha se eu digitar alguma coisa e depois digitar. O UDP só fecha se eu pressionar Ctrl + C. Eu tenho o iptables no lugar e ele não permite conexões com essas portas; portanto, a menos que estejam ignorando o iptables, não consigo imaginar que algo esteja se conectando a elas.
mhost 13/09/11
que tipo de servidor é DB, APP .. qual software você está usando?
Izac 13/09/11
É um servidor web executando o apache e praticamente nada além de coisas como cron e syslog.
mhost