Mam usługę, która utrzymuje pewien port otwarty.
Dostaję dane, których nie oczekuję ani nie chcę uzyskać, i staram się wskazać źródło tych danych. Jak więc znaleźć proces, który wysyła dane do określonego portu, w przeciwieństwie do tego, który proces nasłuchuje.
źródło
Spróbuj wykonać następujące czynności:
Lub:
Aby uniknąć wyniku localhost:
Aby wyświetlić listę tylko USTALONYCH połączeń:
źródło
W zależności od rodzaju połączenia, które ustanawia, aby wysłać dane, jedno z tych podejść doprowadzi cię gdzieś.
Służy
tcpdump port 1234
do pozyskiwania danych wysyłanych do tego portu. Możesz użyć programu takiego jak Wireshark, aby przeanalizować go na innym komputerze (przechwyconym do pliku za pomocą-w
opcji). Możesz też użyć Wireshark bezpośrednio.W przypadku, gdy ustanawia i utrzymuje otwarte połączenie tcp / udp, można użyć
netstat
do znalezienia zdalnego adresu IP połączenia.Wymień otwarte gniazda procesu jak w odpowiedzi dostarczonej przez @StephaneChazelas.
źródło
Możesz użyć
sockstat
polecenia, aby znaleźć proces, który zainicjował połączenie z twoją usługą na lokalnym hoście.Po prostu dopasuj wszystkie połączenia źródłowe do miejsca docelowego. Działa to dobrze w przypadku gniazd TCP / UDP / UNIX.
źródło
W systemie Solaris uruchamianie plików pf na wszystkich procesach powinno pokazywać, które procesy mają otwarte połączenia. Będzie to wymagało ostrożnego filtrowania, prawdopodobnie przy użyciu opcji -A, -B ggrep ...
W systemie Linux
netstat -anp --inet
działa, nawet bez zainstalowanego lsof. (upuść,--inet
aby uzyskać także gniazda domeny Unix)źródło