Quais portas são usadas por um aplicativo

Quais portas são usadas por um aplicativo

Estou testando um aplicativo que abre suas próprias portas (atua como um servidor para essas portas e, portanto, escuta nessas portas) e onde o mesmo aplicativo se conecta a portas vinculadas por outros aplicativos (atua como cliente para essas portas).

Gostaria de obter uma visão geral de quais portas o aplicativo cria e a quais aplicativos e portas ele se conecta.

Como posso fazer isso?

Responder1

Você pode usar netstatpara isso. Veja o exemplo (eu procurei 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

Explicação:

Costumo usar os parâmetros -putan(porque são simples de lembrar).

  • -p: mostra os PIDs da aplicação/processo
  • -u: mostra portas/conexões udp
  • -t: mostra portas/conexões tcp
  • -a: mostra os soquetes de escuta e de não escuta
  • -n: saída numérica (não faça pesquisas de DNS para nomes de host, etc.)

Na saída acima, você vê que há um processo daemon ssh ( sshd) com PID 1725escutando na porta 22em todas as interfaces de rede ( 0.0.0.0). Também há um processo cliente ssh (PID 2491) conectado ao endereço IP 1.2.3.5na porta number 22, meu endereço IP é 1.2.3.4e minha porta externa é 45734. Você vê que a conexão foi estabelecida. Portanto, estou logado via ssh.

Responder2

Outra ferramenta que pode fazer isso é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)
#

As opções utilizadas são as seguintes:

  • -ipara imprimir portas de internet abertas por um processo
  • -apara fazer com que todas as opções sejam AND-ed
  • -p 1981para mostrar a saída do processo 1981
  • -npara inibir a pesquisa de nome de host e mostrar o IP
  • -Ppara inibir a pesquisa de serviço e mostrar o número da porta

lsoftem a vantagem de poder especificar o processo a ser verificado, em vez de ter que obtê-lo com uma saída maior. netstatestá disponível de forma mais confiável nos sistemas, embora lsofesteja se tornando mais padrão do que costumava ser.

Responder3

Já temos boas respostas, mas elas listam apenas as portas que estão abertas no momento da execução do comando.

straceé a ferramenta certa para monitorar as conexões abertas durante a vida útil do aplicativo:

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

A saída mostraria informações adicionais, como solicitações UDP e conexões abertas, mas fechadas.

Responder4

ss -a4 | less

Presumo que você esteja falando sobre IPv4... Caso contrário, você pode substituir o 4 no comando anterior por 6. O parâmetro -a serve para mostrar todas as portas (em escuta e não). Você pode adicionar -n aos parâmetros se não quiser resolver nomes na exibição.

informação relacionada