netstat menunjukkan port mendengarkan tanpa pid tetapi lsof tidak

21

Pertanyaan ini mirip dengan port jaringan terbuka, tetapi tidak ada proses yang terlampir?

Saya sudah mencoba semuanya dari sana, memeriksa log, dll ... dan tidak dapat menemukan apa pun.

Netstat saya menunjukkan port mendengarkan TCP dan port UDP tanpa pid. Ketika saya mencari port-port itu, tidak ada yang muncul.

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

Perintah berikut tidak menampilkan apa pun:

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

Setelah reboot, kedua koneksi yang "sama" itu ada kecuali dengan nomor port baru:

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

Dan sekali lagi, perintah lsof dan fuser tidak menunjukkan apa-apa.

Ada ide apa itu? Haruskah saya khawatir tentang mereka?

mhost
sumber

Jawaban:

11

Dari data yang Anda berikan saya akan mengatakan itu terkait dengan beberapa NFS mounts atau sesuatu yang menggunakan RPC.

Anda dapat memeriksa rpcinfo -pport yang mungkin digunakan oleh beberapa layanan terkait RPC.

Berikut tampilannya di sistem saya

# 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
sumber
1
Jika Anda memiliki masalah ini dan ingin memaksa nlockmgr untuk menggunakan port spesifik, coba solusi ini: fclose.com/39625/fixing-ports-used-by-nfs-server .
Ryan Walls
13

Beberapa proses / pers hanya tersedia untuk di-root. Mencoba

sudo netstat -antlp

harus mengembalikan pid dari setiap port terbuka yang tidak dalam status TIME_WAIT

pengguna1389651
sumber
2
setiap port TCP terbuka hanya dengan perintah ini. Port UDP tidak akan ditampilkan.
petrus
8

Berdasarkan petunjuk dari @ user202173 dan lainnya saya telah dapat menggunakan yang berikut untuk melacak proses yang memiliki port bahkan ketika terdaftar sebagai -di netstat.

Inilah situasi awal saya. sudo netstatmenunjukkan port dengan PID / Program -. lsof -itidak menunjukkan apa-apa.

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

Sekarang mari kita pergi memancing. Pertama mari kita inode dengan menambahkan panggilan -ekita netstat.

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

Selanjutnya gunakan lsofuntuk mendapatkan proses yang melekat pada inode itu.

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

Sekarang kita tahu proses id sehingga kita bisa melihat prosesnya. Dan sayangnya itu adalah proses yang mati. Dan PPID-nya adalah 1 jadi kita juga tidak bisa membunuh orang tuanya (lihat Bagaimana saya bisa membunuh proses yang orang tuanya init? ). Secara teori init mungkin pada akhirnya membersihkannya, tetapi saya bosan menunggu dan reboot.

$ 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
sumber
1
Sudah mencari solusi ini selama berbulan-bulan sekarang. terima kasih untuk jem
manish ini Prasad
Saya sudah mencari solusi seperti ini selama bertahun-tahun. Terima kasih! Salah satu kelemahan di sini adalah bahwa jika klien atau server NFS macet, maka lsof | awk 'NR==1 || /212698803/'(bahkan dengan lsof -Nmenunjukkan NFS saja) bisa sangat lambat untuk merespons dan mungkin waktu habis. Kelemahan lain adalah bahwa inode dapat berubah saat Anda memecahkan masalah ini.
Stefan Lasiewski
4

Saya tidak tahu apa ini secara spesifik, tetapi modul kernel (NFS misalnya) tidak memiliki PID untuk dihubungkan dengan soket ini. Cari sesuatu yang dicurigai di lsmod.

andyortlieb
sumber
lsmod tidak mengembalikan apa pun. Server ini adalah klien NFS. Itulah tersangka saya yang pertama.
mhost
Itu akan menjelaskan mengapa port klien telah berubah setelah instance baru dari kernel.
andyortlieb
Anda seharusnya tidak diturunkan karena ini adalah jawaban yang sepenuhnya sah. Ini membantu saya menemukan kasus di mana jawaban lain (menggunakan rpcbind atau lsof) tidak membantu. (Dan ya, itu NFS.) Terima kasih!
Peter Hansen
Hmm, saya bertanya-tanya mengapa itu tidak menetapkan PID untuk klien NFS hanya agar Anda dapat melihat ada apa dengan itu ... Saya kira itu akan memerlukannya untuk memiliki thread pekerja atau sesuatu?
SamB
3

Saya tidak tahu apakah ini bisa bermanfaat. Saya memiliki masalah yang sama dan apa yang saya lakukan adalah sebagai berikut: Pertama, saya memanggil netstat dengan opsi -a (semua) dan -e (diperluas). Dengan opsi terakhir saya bisa melihat Inode yang terkait dengan port yang digunakan. Kemudian, saya menelepon lsof | grep dengan nomor inode yang diperoleh dan saya mendapatkan PID proses yang terkait dengan inode itu. Itu berhasil dalam kasus saya.

pengguna202173
sumber
0

Apakah ada lalu lintas yang datang atau pergi dari port ini, periksa dengan tcpdump -vv -x s 1500 port 37398 -w trace.outMenyimpan tangkapan Anda di jejak file. Anda kemudian dapat membukanya dengan wireshark, atau tcpdump -vv port 37398dan melihat apa yang terjadi secara langsung.

Coba telnet ke port itu gunakan netcat untuk soket udp mungkin Anda mendapatkan semacam banner yang membantu.

Dapatkan rkhunter dan periksa sistem Anda apakah ada backdoor.

Bandingkan hash md5 dari lsof / netstat dengan hash dari media instal Anda, dengan asumsi file di mana tidak updatet.

Izac
sumber
Saya memang mencoba untuk secara lokal netcat ke kedua port dan tidak menampilkan apa-apa. Untuk port tcp, menutup jika saya mengetikkan sesuatu dan kemudian masuk. Yang UDP hanya ditutup jika saya menekan Ctrl + C. Saya memiliki iptables di tempatnya, dan itu tidak memungkinkan koneksi ke port-port itu, jadi kecuali mereka melewati iptables, saya tidak bisa membayangkan ada sesuatu yang terhubung ke mereka.
mhost
jenis server apa itu DB, APP .. perangkat lunak apa yang Anda gunakan?
Izac
Ini adalah server web yang menjalankan apache dan tidak lebih dari hal-hal lain seperti cron dan syslog.
mhost