Quali porte sono utilizzate da un'applicazione [duplicato]


11

Questa domanda ha già una risposta qui:

Sto testando un'applicazione che apre le proprie porte (funge da server per queste porte, quindi ascolta quelle porte) e dove la stessa applicazione si collega alle porte associate ad altre applicazioni (funge da client per queste porte).

Vorrei avere una panoramica di quali porte l'applicazione crea e a quali applicazioni e porte si connette.

Come posso fare questo?

Risposte:


17

Puoi usarlo netstatper questo. Vedi l'esempio (ho cercato ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

Spiegazione:

Uso spesso i parametri -putan(perché sono semplici da ricordare).

  • -p: mostra i PID dell'applicazione / del processo
  • -u: mostra le porte / connessioni udp
  • -t: mostra le porte / connessioni tcp
  • -a: mostra sia le prese di ascolto che quelle non di ascolto
  • -n: output numerico (non effettuare ricerche DNS per nomi host ecc.)

Nell'output sopra, vedi che esiste un processo demone ssh ( sshd) con PID in 1725ascolto alla porta 22su tutte le interfacce di rete ( 0.0.0.0). Inoltre c'è un processo client ssh (PID 2491) collegato all'indirizzo IP 1.2.3.5al numero di porta 22, il mio indirizzo IP è 1.2.3.4e la mia porta esterna è 45734. Si vede che la connessione è stata stabilita. Pertanto ho effettuato l'accesso tramite ssh.


Una connessione TCP stabilita sulla porta 22 non indica l'autenticazione corretta. TCP deve essere stabilito prima che possa verificarsi l'autenticazione in entrambe le direzioni.
jamesbtate,

@Puddingfox sì vero, potremmo meglio dire "Sono collegato a quella porta", ma per comprensione ho detto "Sono loggato", perché è più illustrativo.
caos,

1
hehe ... `-putan ' Sono così tentato di correggere questo piccolo errore di ortografia;)
James Mertz,

Perché usare utility obsolete quando sono disponibili quelle moderne? ss -lntp è l'utilità fornita dalla suite iproute2 .
MariusMatutiae,

7

Un altro strumento che può fare questo è lsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

Le opzioni utilizzate sono le seguenti:

  • -i stampare le porte Internet aperte da un processo
  • -a per fare in modo che tutte le opzioni siano AND-ed
  • -p 1981 per mostrare l'output per il processo 1981
  • -n per inibire la ricerca del nome host e mostrare invece IP
  • -P per inibire la ricerca del servizio e mostrare invece il numero di porta

lsofha il vantaggio di poter specificare il processo da verificare piuttosto che doverlo estrarre da output più grandi. netstatè disponibile in modo più affidabile sui sistemi, sebbene lsofstia diventando più standard di prima.


Vorrei eseguire questo comando prima di avviare l'applicazione che desidero monitorare, ma posso stabilire quale pid riceverà un'applicazione prima di avviarla?
Baz,

@Baz, se desideri monitorare un'applicazione all'avvio (ad esempio, prima di sapere che è PID), dovresti provare la stracesoluzione suggerita da @olivecoder.
gowenfawr,


3

Abbiamo già buone risposte ma elencano solo le porte aperte al momento dell'esecuzione del comando.

strace è lo strumento giusto per monitorare le connessioni aperte durante la vita dell'applicazione:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

L'output mostrerebbe informazioni aggiuntive come richieste UDP e connessioni aperte ma chiuse.


0

ss -a4 | less

Suppongo che stai parlando di IPv4 ... In caso contrario, puoi sostituire 4 nel comando precedente con 6. Il parametro -a è mostrare tutte le porte (in ascolto e non). È possibile aggiungere -n ai parametri se non si desidera risolvere i nomi sul display.

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.