Comando netstat: portos, ligações e o sucessor ss

Terminal Linux a mostrar o resultado do comando netstat com portos à escuta e ligações ativas

Há perguntas que qualquer administrador de sistemas faz todos os dias: que portos estão abertos nesta máquina? Que processo está a ocupar o porto 443? Quem está ligado a este servidor neste momento? Durante décadas, a resposta começava sempre da mesma forma — escrever netstat no terminal. É por isso que este comando continua a aparecer em manuais, exames de certificação, guias de resposta a incidentes e na memória muscular de gerações de profissionais.

Saber ler o netstat continua a ser uma competência essencial, por duas razões: ainda o vai encontrar instalado em muitos sistemas antigos, appliances e contentores; e a sua sintaxe tem uma tradução quase direta para as ferramentas modernas que o substituíram. Neste artigo explicamos as opções que realmente interessam, mostramos os equivalentes atuais e pomos tudo à prova num simulador interativo.

O que faz o netstat

O netstat apresenta o estado da rede do ponto de vista do próprio sistema: sockets TCP e UDP (à escuta e ligados), sockets unix de comunicação entre processos, a tabela de encaminhamento, estatísticas por interface e contadores por protocolo. Faz parte do pacote net-tools, um conjunto de utilitários que deixou de ter manutenção ativa há mais de duas décadas e que já não vem instalado por omissão nas distribuições recentes. O sucessor oficial é o pacote iproute2, com o ss para sockets e o ip para interfaces e rotas.

A forma geral do comando combina um eventual modo alternativo com filtros de protocolo e opções de apresentação:

netstat [modo: -r | -i | -s | -g] [protocolo: -t -u -x] [-l | -a] [-n] [-p] [-e] [-c]

Uma diferença técnica importante face ao ss: o netstat obtém os dados a percorrer ficheiros de texto em /proc/net, enquanto o ss consulta o kernel diretamente por netlink. Em máquinas com muitos milhares de sockets, essa diferença traduz-se em segundos contra milissegundos.

As opções que interessam

Escolher o protocolo: -t, -u e -x

  • -t — restringe a listagem a sockets TCP;
  • -u — restringe a UDP. Repare que a coluna de estado fica vazia: o UDP não estabelece ligações, logo não tem estados;
  • -x — mostra os sockets de domínio unix, usados para comunicação entre processos na mesma máquina. Não têm porto: identificam-se por um caminho no sistema de ficheiros, como /run/dbus/system_bus_socket.

O que listar: -l e -a

Sem estas opções, o netstat mostra apenas ligações estabelecidas — omite tudo o que está à escuta. -l inverte o filtro e lista só os serviços à escuta; -a mostra tudo: servidores e ligações ativas. Para responder à pergunta «que portos tem esta máquina abertos?», o comando é:

netstat -tln
Proto Recv-Q Send-Q  Endereço local     Endereço remoto    Estado
tcp        0      0  0.0.0.0:22         0.0.0.0:*          LISTEN
tcp        0      0  0.0.0.0:443        0.0.0.0:*          LISTEN
tcp        0      0  127.0.0.1:3306     0.0.0.0:*          LISTEN

Como apresentar: -n, -p, -e e -c

  • -n — modo numérico: não traduz portos para nomes de serviço nem resolve endereços por DNS. Sem esta opção, o comando pode ficar bloqueado à espera de respostas de resolução — inclua-a por hábito;
  • -p — acrescenta o PID e o nome do processo dono de cada socket. Exige privilégios de root para ver processos de outros utilizadores; sem eles, a coluna aparece por preencher;
  • -e — informação alargada: utilizador dono e inode do socket;
  • -c — repete a listagem continuamente, segundo a segundo, até interromper com Ctrl+C.

A combinação mais famosa junta quase tudo isto num só comando — provavelmente o comando de diagnóstico de rede mais escrito da história do Linux, com tradução literal para o ss:

netstat -tulpn     # clássico
ss -tulpn          # equivalente moderno, mesmas letras, mesmo significado

Modos alternativos: -r, -i, -s e -g

Estas opções trocam a listagem de sockets por outras vistas do subsistema de rede:

  • -r — a tabela de encaminhamento do kernel. A rota default (ou 0.0.0.0 com -n) indica por onde sai o tráfego que não é local. Equivalente moderno: ip route;
  • -i — estatísticas por interface: pacotes recebidos e enviados e, sobretudo, erros e descartes, os primeiros indícios de problemas físicos ou de congestão. Equivalente: ip -s link;
  • -s — contadores acumulados por protocolo. Os segmentos TCP retransmitidos são o campo a vigiar numa rede com perdas. Equivalente: nstat -az, com a vantagem de mostrar diferenças entre leituras;
  • -g — grupos multicast a que cada interface pertence. Equivalente: ip maddr.

E já agora, os restantes utilitários do net-tools também têm sucessores no iproute2: ifconfig deu lugar a ip addr, route add a ip route add e arp -a a ip neigh.


netstat em cibersegurança

Poucas ferramentas dão tanto retorno numa investigação de segurança com tão pouco esforço:

  • Inventário de superfície de ataquenetstat -tulpn (ou ss -tulpn) responde de imediato à pergunta central do hardening: que serviços estão expostos e a que endereços? Um serviço à escuta em 0.0.0.0 está aberto a todas as redes; em 127.0.0.1, só à própria máquina. Uma base de dados exposta a 0.0.0.0 sem necessidade é uma correção imediata.
  • Deteção de intrusões — durante a resposta a um incidente, um porto à escuta que não corresponde a nenhum serviço legítimo, ou uma ligação estabelecida para um endereço externo desconhecido, pode denunciar uma backdoor ou um canal de comando e controlo. Cruzar o PID devolvido por -p com ps e com o sistema de ficheiros é o passo seguinte natural.
  • Análise de ataques em curso — uma acumulação anormal de estados SYN_RECV é o sintoma típico de um SYN flood; muitos CLOSE_WAIT persistentes apontam para uma aplicação que não fecha ligações. Os estados TCP contam a história do que se está a passar.
  • Forense em sistemas legados — em servidores antigos, appliances e imagens mínimas, o netstat pode ser a única ferramenta disponível. Num cenário de compromisso, convém ainda lembrar que um atacante com root pode ter substituído o binário ou instalado um rootkit que esconde sockets — em forense séria, compara-se o resultado local com um varrimento externo.

Experimente no simulador interativo

O simulador abaixo reproduz um terminal Linux com um conjunto realista de sockets, rotas e interfaces. Clique nas opções (-t, -l, -n, -p, -r…) para as combinar e ver o resultado no ecrã, com a nota explicativa a acompanhar cada escolha; o painel «equivalente moderno» mostra sempre o comando ss ou ip correspondente. O botão «Demonstrar tudo» percorre automaticamente uma sequência guiada de exemplos, e os botões «Anterior»/«Seguinte» permitem avançar ao seu ritmo. No fim, abra a referência completa com a tabela de equivalências.

Erros comuns e boas práticas

  • Esquecer o -n — sem ele, o comando tenta resolver nomes por DNS e pode bloquear durante segundos, precisamente quando a rede está com problemas.
  • Correr sem privilégios e confiar no resultado — sem root, o -p não consegue identificar processos de outros utilizadores e a coluna fica vazia. Não é um erro do comando: repita com sudo.
  • Esquecer que o predefinido omite os servidores — sem -l nem -a, o netstat só mostra ligações estabelecidas. Um serviço à escuta pode passar despercebido por causa de uma letra.
  • Ignorar as colunas Recv-Q e Send-Q — filas a crescer indicam uma aplicação que não consome dados ou uma rede que não os escoa. É informação de diagnóstico valiosa que quase toda a gente salta.
  • Escrever documentação nova com netstat — em scripts e procedimentos novos, use ss e ip: estão em todas as distribuições atuais, são mais rápidos e continuam a evoluir. Guarde o netstat para os sistemas onde é o único disponível.

Conclusão

O netstat é simultaneamente uma peça de história e uma ferramenta de trabalho: ensina a raciocinar sobre sockets, portos e estados TCP, e essa leitura transfere-se sem esforço para o ss e para o ip. Dominar o par clássico/moderno é meio caminho andado tanto para administrar sistemas como para os defender. Se quer levar estas competências mais longe — de auditorias de superfície de ataque a resposta a incidentes —, conheça a formação e a consultoria disponíveis no nosso catálogo de serviços. E se está a construir a sua base de administração Linux, veja também o artigo sobre o useradd.

Este artigo faz parte da série “Comandos Linux, um a um” do blog HJFR — fique atento aos próximos comandos.