MASTG-TECH-0028: Verificar Conexões Abertas

Você pode encontrar informações de rede em todo o sistema em /proc/net ou simplesmente inspecionando os diretórios /proc/<pid>/net (por algum motivo, não são específicos do processo). Existem vários arquivos presentes nesses diretórios, dos quais tcp, tcp6 e udp podem ser considerados relevantes do ponto de vista do testador.

# cat /proc/7254/net/tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
...
69: 1101A8C0:BB2F 9A447D4A:01BB 01 00000000:00000000 00:00000000 00000000 10093        0 75412 1 0000000000000000 20 3 19 10 -1
70: 1101A8C0:917C E3CB3AD8:01BB 01 00000000:00000000 00:00000000 00000000 10093        0 75553 1 0000000000000000 20 3 23 10 -1
71: 1101A8C0:C1E3 9C187D4A:01BB 01 00000000:00000000 00:00000000 00000000 10093        0 75458 1 0000000000000000 20 3 19 10 -1
...

Na saída acima, os campos mais relevantes para nós são:

  • rem_address: par de endereço remoto e número de porta (em representação hexadecimal).
  • tx_queue e rx_queue: a fila de dados de saída e entrada em termos de uso de memória do kernel. Esses campos dão uma indicação de quão ativamente a conexão está sendo usada.
  • uid: contém o UID efetivo do criador do socket.

Outra alternativa é usar o comando netstat, que também fornece informações sobre a atividade de rede para todo o sistema em um formato mais legível e pode ser facilmente filtrado de acordo com nossos requisitos. Por exemplo, podemos filtrá-lo facilmente por PID:

# netstat -p | grep 24685
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program Name
tcp        0      0 192.168.1.17:47368      172.217.194.103:https   CLOSE_WAIT  24685/com.google.android.youtube
tcp        0      0 192.168.1.17:47233      172.217.194.94:https    CLOSE_WAIT  24685/com.google.android.youtube
tcp        0      0 192.168.1.17:38480      sc-in-f100.1e100.:https ESTABLISHED 24685/com.google.android.youtube
tcp        0      0 192.168.1.17:44833      74.125.24.91:https      ESTABLISHED 24685/com.google.android.youtube
tcp        0      0 192.168.1.17:38481      sc-in-f100.1e100.:https ESTABLISHED 24685/com.google.android.youtube
...

A saída do netstat é claramente mais amigável para o usuário do que ler /proc/<pid>/net. Os campos mais relevantes para nós, semelhantes à saída anterior, são os seguintes:

  • Foreign Address: par de endereço remoto e número de porta (o número da porta pode ser substituído pelo nome bem conhecido de um protocolo associado à porta).
  • Recv-Q e Send-Q: estatísticas relacionadas à fila de recebimento e envio. Dão uma indicação de quão ativamente a conexão está sendo usada.
  • State: o estado de um socket, por exemplo, se o socket está em uso ativo (ESTABLISHED) ou fechado (CLOSED).