Hangi işlemin belirli bir bağlantı noktasına veri gönderdiğini nasıl bulabilirim?


21

Belli bir limanı açık tutan bir servisim var.

Ne beklediğim ne de elde etmek istemediğim verileri alıyorum ve bu verilerin kaynağını tespit etmeye çalışıyorum. Öyleyse , hangi sürecin dinlemesinin aksine, belirli bir bağlantı noktasına veri gönderen hangi süreci bulabilirim .

Yanıtlar:


23

TCP için (aynı yaklaşım SCTP 1 veya bağlantı yönelimli aktarım protokolü için de geçerli olsa da) dinlemek için olanları aramakla aynıdır:

lsof -nPi tcp:the-port

Bir TCP soketinin açık olduğu süreçleri bu portta rapor edecektir. Kaynak bağlantı noktasını biliyorsanız (sunucu uygulamanız bunu bilir ve günlüğe kaydeder), bunun yerine hileli istemciyi belirlemek için kullanabilirsiniz.

UDP veya RAW soketler için daha zor olurdu, sanırım sistem ya da dtrace gibi bir şeyin kullanışlı olabileceği bir yer. Muhtemelen de denetlenir.


1lsof 4.86 sürümünde SCTP desteği (yalnızca Linux'ta) eklenmiş olsa da, -iaçıkça SCTP soketleri istemek için kullanamazsınız . Burada lsof -nP | grep -w 'SCTP.*:the-port'bunun yerine bir buluşsal olarak kullanabilirsiniz .


Bu benim için SCTP için çalışmıyor.
sudo

1
@sudo, düzenlemeye bakın
Stéphane Chazelas

3

Aşağıdakileri deneyin:

$sudo ss -tp

Veya:

$sudo netstat -A inet -p

Localhost sonucunu önlemek için:

$sudo netstat -A inet -p | grep -v localhost

Sadece KURULAN bağlantıları listelemek için:

$sudo netstat -A inet -p | grep -v localhost | grep ESTABLISHED

2

Veri göndermek için kurduğu bağlantı türüne bağlı olarak, bu yaklaşımlardan biri sizi bir yere götürür.

  • tcpdump port 1234Bu porta gönderilen verileri almak için kullanın . Başka bir makinede analiz etmek için Wireshark gibi bir program kullanabilirsiniz (bu -wseçeneği kullanarak bir dosyaya kaydedilir ). Alternatif olarak, doğrudan Wireshark kullanın.

  • Bir tcp / udp bağlantısı kurması ve açık tutması durumunda netstat, bağlantının uzak IP'sini bulmak için kullanabilirsiniz .

  • Bir işlemin açık soketlerini @StephaneChazelas tarafından verilen cevaptaki gibi listeleyin.


1

sockstatYerel ana bilgisayarda servisinizle bağlantı başlatan işlemi bulmak için komutu kullanabilirsiniz .

DESCRIPTION
     The sockstat command lists open Internet or UNIX domain sockets.

Hedefinizle tüm kaynak bağlantılarını eşleştirmeniz yeterli. Bu, TCP / UDP / UNIX yuvaları için iyi çalışır.


0

Solaris'te tüm işlemlerde çalışan pfiller hangi işlemlerin hangi bağlantıların açık olduğunu göstermelidir. Muhtemelen ggrep'in -A, -B seçeneklerini kullanan bir miktar doldurma gerektirecektir ...

Linux'ta, netstat -anp --inetyüklü olmasa bile çalışacaktır. ( --inetUnix etki alanı soketlerini almak için de bırakın )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.