Como monitorar a atividade da rede em um sistema Linux

Existem muitas razões pelas quais você pode querer monitorar a atividade da rede em seu sistema Linux. Você pode estar resolvendo um problema de rede, pode querer verificar se não há aplicativos maliciosos criando uma atividade de rede suspeita, ou pode simplesmente querer saber se algum processo está ligando para casa. Seja qual for o motivo, aqui estão alguns métodos para ver quais processos em seu sistema estão envolvidos na atividade da rede e com quem eles estão se comunicando.

Neste tutorial você aprenderá:

  • Como monitorar conexões de rede e serviços de escuta com netstat
  • Como monitorar conexões de rede e serviços de escuta com lsof
  • Como monitorar conexões de rede e serviços de escuta com ifconfig
  • Que ferramentas você pode usar para examinar os dados sendo enviado pela rede

Como monitorar a atividade da rede em um sistema Linux

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, Convenções ou Versão do Software Utilizado
Sistema Distribuição-independente
Software netstat, lsof, ifconfig, wireshark, tcpdump
Outros Acesso privilegiado ao seu sistema Linux como root ou através do comando sudo.
Convenções # – requer que determinados comandos linux sejam executados com privilégios de root diretamente como usuário root ou pelo uso do comando sudo
$ – requer que determinados comandos linux sejam executados como um usuário regular não-privilegiado

Netstat

Netstat é um poderoso utilitário que pode imprimir conexões de rede, tabelas de roteamento, estatísticas de interface, conexões de mascaramento e associações de multicast. Estaremos usando-o para realizar o antigo.

Instalando o Netstat

Em sistemas baseados em Debian e Debian como o Ubuntu, use apt.

# apt install net-tools

Em sistemas baseados no Red Hat Enterprise Linux e Red Hat, use yum,

# yum install net-tools

Em sistemas baseados em Arch, use pacman.

# pacman -S net-tools
Procurando por um Analista de Sistemas Linux !
O Instituto Geofísico UAF, está procurando por um Analista de Sistemas Linux experiente para se juntar a sua equipe de analistas e engenheiros de infra-estrutura cibernética de pesquisa. LOCALIZAÇÃO: Fairbanks, Alasca, EUA
APPLY NOW

NOTA
Nos exemplos seguintes estamos usando uma nova instalação do RHEL 8 rodando no VirtualBox com adições de convidados instaladas

Ver processos de escuta

Primeiro, vamos ver os processos que estão escutando por conexões. Para isso, digite o seguinte comando.

$ sudo netstat -tulpen

Neste comando t mostra TCP conexões, u mostra conexões UDP, l mostra somente soquetes de escuta, p mostra o programa ao qual a conexão pertence,e mostra informações estendidas, e n representa endereços, usuários e portas numericamente.

netstat -tulpen output

Ao considerar o modelo de servidor cliente no qual a maioria dos softwares de rede é baseada, os processos de escuta podem ser pensados como softwares que estão em modo “servidor”. Não há nada de surpreendente sobre a saída dada a nossa configuração. Estes são todos os processos que você esperaria estar escutando conexões de rede em uma nova instalação do RHEL 8 rodando emVirtualBox.
Para cada processo de escuta você pode ver o protocolo sendo usado, o endereço local e a porta em que ele está escutando, o usuário em que ele está rodando, e o nome do PID/Programa. Há uma distinção importante a ser notada aqui. Paratcp4/udp4conexões (simplesmente listado comotcpeudp) onde oLocal Addressestá listado como0.0.0.0o processo está escutando para conexões de qualquer máquina que é capaz de se conectar a ele através da rede, enquanto que quando está listado como127.0.0.1está escutando apenas para conexões no localhost (a máquina na qual está rodando ou ela mesma) e não pode ser conectada por outros computadores na rede. A mesma distinção é válida paratcp6/udp6quando se compara umLocal Addressde::(frente à rede) e::1(apenas localhost).

Ver todas as conexões de rede

Agora vamos dar uma olhada em todas as conexões de rede atuais. Para fazer isso digite o seguinte comando, que é similar ao anterior, exceto que usamos -a para ver todos os soquetes ao invés de -l para ver apenas soquetes de escuta.

$ sudo netstat -atupen

Além de nos mostrar que software temos escutando conexões como “servidores”, este comando também nos mostra conexões estabelecidas atualmente para esse software e quaisquer conexões de rede estabelecidas que temos usando software agindo como “cliente”, como um navegador web.

netstat -atupen output

Na captura de tela você notará 2 conexões no estadoESTABLISHED. Mais uma vez, não há surpresas aqui. Uma delas pertence ao NetworkManager e funciona como um cliente DHCP para habilitar a rede a partir do servidor gateway (neste caso, a máquina host). A outra é uma conexão SSH para a máquina que fizemos após o encaminhamento da porta do serviço ssh com o VirtualBox. Se tivéssemos visto algo inesperado aqui então poderia ser motivo para mais investigações.

Ver conexões estabelecidas

Você pode se encontrar em uma situação onde você só quer ver as conexões ESTABLISHED. Isto é tão fácil quanto canalizar a saída do netstat para o grep como assim.

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

Entramos o comando acima após navegar para wikipedia.com no firefox e a captura de tela captura as conexões estabelecidas pelo firefox ao chegar ao site. Como você pode ver, existem quatro servidores aos quais o firefox se conectou; 91.198.174.192, 172.217.23.100, 216.58.215.67, e 104.111.215.142. Para ver a quem pertencem estes servidores podemos consultar os endereços ip com whois like so.

$ whois 91.198.174.192| less

Fazendo isso para cada um deles revela que eles pertencem à Wikimedia, Google, Google, e Akamai respectivamente. Isto faz sentido considerando que a Wikimedia possui e hospeda wikipedia e é muito comum que sites carreguem recursos que são hospedados em servidores de propriedade da Google e da Akamai. De facto, examinando o código fonte da página inicial da wikipedia revela que ela carrega o app-badge da Google Play Store de google.com e o app-badge da Apple AppStore de apple.com.
Navigating to the urls para estes 2 crachás de aplicação individualmente e emitindo o comando netstat acima verifica de facto que eles estão alojados em servidores propriedade da Google e da Akamai respectivamente.

Se isto despertou o seu interesse em netstat então temos um artigo que pode ler para Aprender mais sobre o uso do comando netstat

ss

O comando netstat tem sido há muito um favorito dos sysadmins, no entanto foi recentemente substituído pelo comando ss que se gaba de ser mais rápido, mais fácil e mais legível para o ser humano do que netstat. Vamos ver como realizar as mesmas ações executadas acima usando o comando ss. Ss também tem uma opção -e para ver informação alargada, mas essa opção foi omitida dos exemplos abaixo porque produz informação adicional que pode resultar numa saída menos legível.

Ver processos de escuta

Para ver todos os processos de escuta introduza o seguinte.

$ sudo ss -tlunp

Neste comando t mostra TCP conexões, l mostra somente soquetes de escuta, u mostra conexões UDP, n representa endereços, usuários e portas numericamente, e p mostra o programa ao qual a conexão pertence.

>

Exibir todas as conexões de rede

Para ver todas as conexões de rede, digite o seguinte, onde a substitui l e mostra todos os soquetes de rede não apenas os que estão escutando.

$ sudo ss -taunp

Exibir conexões estabelecidas

Se -a ou -l não estiverem incluídos, então ss mostrará apenas as conexões estabelecidas. Para ver apenas as conexões estabelecidas entre o seguinte.

$ sudo ss -tunp

lsof

Apenas no caso de netstat e ss não serem suficientes para você, nós apresentamos lsof. Lsof é usado para listar arquivos abertos. GNU/Linux herdou o princípio do design UNIX de que tudo é um arquivo; isto inclui conexões de rede. Como resultado, lsof pode ser usado para ver a atividade de rede de uma maneira similar aos comandos acima.

Ver todas as conexões de rede

Para ver todas as conexões de rede, digite o seguinte.

$ sudo lsof -nP -i

Neste comando n representa os endereços numericamente, P representa as portas numericamente, e i suprime a listagem de quaisquer arquivos abertos que não são considerados arquivos de rede.

Ver conexões estabelecidas

Para ver apenas as conexões estabelecidas, digite o seguinte onde os switches adicionais listam todas as conexões estabelecidas TCP conexões.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Ver processos de escuta

Para ver processos de escuta usando lsof digite o seguinte.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Isso irá perder qualquer processo que esteja escutando sobre o UDP, então pode ser desejável digitar o seguinte para incluir esses também.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Monitorando dados sendo enviados através da rede

Vimos como netstat, ss, e ifconfig podem ser usados para monitorar quais conexões de rede estão sendo feitas e para quem, mas muitas vezes é desejável ver exatamente quais dados estão sendo enviados através da rede. Para atingir este objetivo, precisamos de aplicativos que sejam capazes de cheirar os pacotes. Dois programas especializados nesta área são tcpdump e wireshark.
Temos guias previamente escritos sobre como instalar wireshark no RHEL 8, The Basics of network protocol analyzer Wireshark On Linux, Filtering Packets In Wireshark on Kali Linux, e a seção Network Monitoring do sistema Linux e monitoramento de hardware feito eficiente inclui uma boa introdução a tcpdump.

Conclusion

Deixe uma resposta

O seu endereço de email não será publicado.