Verificando Portas Abertas e em Escuta no Linux Usando netstat e ss
Monitorizar portas abertas e em escuta num sistema Linux é uma das práticas mais críticas para manter a segurança do servidor, diagnosticar problemas de rede e gerir a sua infraestrutura de forma eficaz. Auditando regularmente quais as portas abertas e quais os serviços vinculados a elas, pode identificar proativamente tentativas de acesso não autorizado, detetar configurações incorretas e eliminar superfícies de ataque desnecessárias antes de se tornarem vulnerabilidades graves.
Quer esteja a executar uma aplicação de alto tráfego num plano de VPS Hosting ou a gerir uma frota de máquinas bare-metal, compreender a exposição de rede do seu servidor Linux é inegociável. Este guia fornece uma explicação técnica abrangente e precisa sobre como utilizar tanto netstat como ss — as duas ferramentas de linha de comandos mais utilizadas para inspeção de portas em Linux — juntamente com ferramentas complementares e melhores práticas do mundo real.
1. Compreender Portas e Seus Tipos
Antes de mergulhar nas ferramentas em si, é importante estabelecer uma compreensão clara do que são portas, como são categorizadas e por que monitorá-las é importante.
O Que É uma Porta de Rede?
Uma porta de rede é um ponto final de comunicação lógico associado a um processo ou serviço específico num anfitrião. As portas permitem que um único servidor com um endereço IP execute múltiplos serviços em rede simultaneamente — por exemplo, um servidor web na porta 80, um daemon SSH na porta 22 e uma base de dados na porta 3306.
Categorias de Portas
| Intervalo | Categoria | Descrição |
|---|---|---|
| 0–1023 | Portas Bem Conhecidas | Reservadas para serviços de sistema padrão (HTTP, SSH, FTP, etc.) |
| 1024–49151 | Portas Registadas | Utilizadas por aplicações e middleware (MySQL, PostgreSQL, etc.) |
| 49152–65535 | Portas Dinâmicas/Efémeras | Atribuídas temporariamente para ligações de cliente de saída |
Estados de Porta Que Encontrará
- LISTEN — A porta está aberta e um serviço está ativamente à espera de ligações recebidas.
- ESTABLISHED — Existe uma ligação ativa entre dois pontos finais.
- TIME_WAIT — A ligação está a fechar; o sistema está à espera para garantir que o ponto final remoto recebeu o reconhecimento final.
- CLOSE_WAIT — O ponto final remoto fechou a ligação; a aplicação local ainda não fechou o seu lado.
Protocolos de Transporte
- TCP (Transmission Control Protocol): Orientado à ligação, fiável, com verificação de erros e entrega garantida. Utilizado por HTTP, HTTPS, SSH, FTP e a maioria dos protocolos de camada de aplicação.
- UDP (User Datagram Protocol): Sem ligação, mais rápido, mas sem garantias de entrega. Utilizado por DNS, NTP, DHCP e serviços de transmissão.
2. Verificação de Portas com netstat
O que é netstat?
netstat (estatísticas de rede) é um utilitário clássico de linha de comando que exibe conexões de rede ativas, tabelas de roteamento, estatísticas de interface e portas de escuta. Embora tenha sido oficialmente descontinuado em favor de ss em distribuições Linux modernas, netstat continua amplamente implementado — especialmente em sistemas legados e em ambientes onde os administradores estão profundamente familiarizados com sua sintaxe.
Instalando netstat
netstat faz parte do pacote net-tools, que não é mais instalado por padrão em muitas distribuições modernas. Instale-o da seguinte forma:
Debian / Ubuntu:
sudo apt update && sudo apt install net-tools -yCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -yArch Linux:
sudo pacman -S net-toolsSintaxe Principal do netstat
sudo netstat [options]Verificação de Todas as Portas TCP e UDP de Escuta
sudo netstat -tulnDetalhamento das flags:
| Flag | Significado |
|---|---|
-t | Exibir conexões TCP e portas |
-u | Exibir conexões UDP e portas |
-l | Mostrar apenas sockets de escuta (portas aguardando conexões) |
-n | Exibir endereços IP e números de porta numéricos (ignorar resolução DNS para velocidade) |
Exemplo de saída:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*Leitura da saída:
- Proto — O protocolo em uso (tcp, udp, tcp6, udp6).
- Local Address — O endereço IP e número de porta em que o serviço está escutando.
0.0.0.0significa que o serviço escuta em todas as interfaces disponíveis;127.0.0.1significa que é acessível apenas localmente. - Foreign Address — O endereço do cliente remoto (mostrado como
0.0.0.0:*para portas de escuta sem conexão ativa). - State — O estado da conexão (
LISTEN,ESTABLISHED,TIME_WAIT, etc.).
Incluindo Informações de Processo
Para ver qual processo possui cada porta de escuta, adicione a flag -p:
sudo netstat -tulnpExemplo de saída com informações de processo:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1023/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2847/nginx
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3102/mysqld> Nota: Você deve executar este comando com sudo para ver nomes de processo para todos os usuários, não apenas o seu.
Filtrando Saída para Portas ou Serviços Específicos
Use grep para restringir os resultados a uma porta ou serviço específico:
# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"
# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"
# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"
# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"Visualizando Todas as Conexões Ativas (Não Apenas de Escuta)
Para ver todas as conexões ativas, incluindo as estabelecidas, remova a flag -l:
sudo netstat -tunpExibindo Tabela de Roteamento
sudo netstat -rExibindo Estatísticas de Interface de Rede
sudo netstat -i3. Verificação de Portas com ss
O que é ss?
ss (estatísticas de socket) é o substituto moderno para netstat, desenvolvido como parte do pacote iproute2. Comunica-se diretamente com o kernel Linux via sockets Netlink, tornando-o significativamente mais rápido e eficiente do que netstat — particularmente em sistemas com milhares de conexões simultâneas.
ss é instalado por padrão em praticamente todas as distribuições Linux modernas, incluindo Ubuntu 18.04+, CentOS 7+, Debian 9+ e seus derivados.
Sintaxe Principal do ss
ss [options] [filter]Verificação de Todas as Portas TCP e UDP em Escuta
ss -tulnAs flags têm o mesmo significado que em netstat:
| Flag | Significado |
|---|---|
-t | Mostrar sockets TCP |
-u | Mostrar sockets UDP |
-l | Mostrar apenas sockets em escuta |
-n | Mostrar endereços numéricos (sem resolução DNS) |
Exemplo de saída:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 511 [::]:443 [::]:*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*Incluindo Informações de Processo
sudo ss -tulnpExemplo de saída:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1023,fd=3))
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2847,fd=6))
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=3102,fd=21))Filtragem por Protocolo
Mostrar apenas portas TCP em escuta:
ss -tlMostrar apenas portas UDP em escuta:
ss -ulMostrar todas as conexões TCP (incluindo estabelecidas):
ss -tFiltragem Avançada com ss
Uma das funcionalidades mais poderosas do ss é sua filtragem integrada baseada em expressões, que permite filtrar por porta, endereço, estado e muito mais — sem depender do grep.
Filtrar por número de porta específico:
ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22Filtrar por porta de destino:
ss -tuln dport = :3306Mostrar todos os sockets em estado ESTABLISHED:
ss -t state establishedMostrar todos os sockets em estado LISTEN:
ss -t state listeningFiltrar por endereço IP de origem:
ss -tuln src 192.168.1.100Mostrar conexões para um host remoto específico:
ss -t dst 203.0.113.50Combinar múltiplos filtros:
ss -t state established '( dport = :443 or sport = :443 )'Exibição do Uso de Memória de Socket
ss também pode mostrar o uso detalhado de memória por socket, o que é útil para diagnosticar problemas de desempenho:
ss -tmExibição de Informações de Temporizador
ss -toIsto mostra temporizadores de retransmissão e temporizadores de keepalive para conexões TCP, o que é inestimável para diagnosticar problemas de estabilidade de conexão.
4. Comparando netstat vs. ss
Ambas as ferramentas atingem o mesmo objetivo fundamental, mas existem diferenças significativas que devem orientar sua escolha:
| Funcionalidade | netstat | ss |
|---|---|---|
| Pacote | net-tools (frequentemente não pré-instalado) | iproute2 (pré-instalado em distribuições modernas) |
| Velocidade | Mais lento (lê de /proc/net/) | Mais rápido (usa interface Netlink do kernel) |
| Desempenho em escala | Degrada com milhares de conexões | Lida com grandes quantidades de conexões eficientemente |
| Filtragem avançada | Requer piping para grep | Filtragem baseada em expressões integrada |
| Detalhe de saída | Bom | Mais detalhado (memória, timers, etc.) |
| Suporte IPv6 | Adequado | Excelente |
| Status de manutenção | Descontinuado | Ativamente mantido |
| Curva de aprendizado | Familiar para administradores experientes | Sintaxe ligeiramente diferente mas bem documentada |
Quando usar netstat
- Ao administrar sistemas Linux mais antigos (CentOS 6, Debian 7, etc.) onde
sspode não estar disponível. - Ao trabalhar com scripts ou documentação que já usam sintaxe
netstat. - Quando você está mais confortável com seu formato de saída e não precisa de filtragem avançada.
Quando usar ss
- Em qualquer distribuição Linux moderna (Ubuntu 18.04+, CentOS 7+, Debian 9+, e mais recentes).
- Ao gerenciar servidores com um alto volume de conexões simultâneas — como aqueles em execução em Servidores Dedicados sob carga pesada.
- Quando você precisa de filtragem avançada, informações de timer ou estatísticas de memória de socket.
- Para automação e scripting onde o desempenho importa.
5. Outras Ferramentas para Verificar Portas Abertas
Além de netstat e ss, vários outros utilitários são úteis para inspeção de portas e análise de rede no Linux.
lsof — List Open Files (Incluindo Sockets)
lsof (List Open Files) trata sockets de rede como ficheiros (consistente com a filosofia do Linux de “tudo é um ficheiro”) e pode exibir qual processo tem uma porta específica aberta.
Instalar lsof:
# Debian/Ubuntu
sudo apt install lsof -y
# CentOS/RHEL
sudo yum install lsof -yVerificar qual processo está a usar a porta 80:
sudo lsof -i :80Verificar qual processo está a usar a porta 443:
sudo lsof -i :443Listar todas as conexões de rede:
sudo lsof -iListar todos os sockets TCP em escuta:
sudo lsof -i TCP -s TCP:LISTENExemplo de saída:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 2847 root 6u IPv4 23456 0t0 TCP *:http (LISTEN)
nginx 2848 www-data 6u IPv4 23456 0t0 TCP *:http (LISTEN)nmap — Network Mapper
nmap é uma poderosa ferramenta de digitalização de rede utilizada para auditoria de segurança, descoberta de rede e digitalização de portas. Ao contrário de ss e netstat (que inspecionam o sistema local), nmap pode digitalizar anfitriões locais e remotos.
Instalar nmap:
# Debian/Ubuntu
sudo apt install nmap -y
# CentOS/RHEL
sudo yum install nmap -yDigitalizar todas as portas TCP no localhost:
sudo nmap -sT localhostDigitalizar portas abertas com detecção de SO:
sudo nmap -sT -O localhostDigitalizar um intervalo de portas específico:
sudo nmap -p 1-1024 localhostDigitalizar portas UDP (requer root):
sudo nmap -sU localhostDigitalizar um servidor remoto:
sudo nmap -sT 203.0.113.50> Importante: Digitalize apenas sistemas que possui ou para os quais tem permissão explícita. A digitalização não autorizada de portas pode violar leis e termos de serviço.
fuser — Identificar Processos que Utilizam Ficheiros ou Sockets
# Find which process is using port 80 (TCP)
sudo fuser 80/tcp
# Find which process is using port 53 (UDP)
sudo fuser 53/udp/proc/net/ — Interface Direta do Kernel
Para fins de scripting, pode ler informações de portas diretamente do sistema de ficheiros virtual do kernel do Linux:
# View raw TCP socket table
cat /proc/net/tcp
# View raw UDP socket table
cat /proc/net/udpNote que endereços e portas em /proc/net/tcp são exibidos em hexadecimal e requerem conversão para legibilidade humana. Ferramentas como ss e netstat analisam estes dados automaticamente.
6. Melhores Práticas de Segurança para Gerenciamento de Portas Abertas
Saber como verificar portas abertas é apenas metade da batalha. Agir com base nessas informações é o que mantém seu servidor seguro. Aqui estão as melhores práticas acionáveis que todo administrador Linux deve seguir:
Princípio da Menor Exposição
Exponha apenas as portas absolutamente necessárias para sua aplicação funcionar. Cada porta aberta é um vetor de ataque potencial. Audite regularmente suas portas de escuta e feche ou bloqueie com firewall qualquer coisa que não precise estar acessível publicamente.
Vincular Serviços a Interfaces Específicas
Evite vincular serviços a 0.0.0.0 (todas as interfaces) a menos que necessário. Por exemplo, um servidor de banco de dados MySQL deve escutar apenas em 127.0.0.1 se for acessado apenas localmente:
# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1Use um Firewall
Use ufw (Ubuntu) ou firewalld / iptables (CentOS/RHEL) para restringir o acesso às portas abertas por endereço IP, sub-rede ou interface de rede:
# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22
# Deny all other access to port 22
sudo ufw deny 22Audite Regularmente as Portas de Escuta
Agende auditorias regulares de portas usando cron jobs ou ferramentas de monitoramento. Uma nova porta de escuta repentina pode indicar um serviço comprometido, uma configuração incorreta ou — no pior dos casos — malware:
# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txtProteja Serviços com SSL/TLS
Qualquer serviço exposto à internet — servidores web, servidores de correio, painéis de controle — deve usar conexões criptografadas. Combine suas portas abertas com Certificados SSL válidos para proteger dados em trânsito e prevenir ataques man-in-the-middle.
Monitore Mudanças Inesperadas
Use ferramentas de detecção de intrusão como AIDE, Tripwire ou auditd para alertá-lo quando novos processos começarem a escutar em portas. Integre com logging centralizado (por exemplo, ELK Stack, Graylog) para visibilidade abrangente.
Desative Serviços Não Utilizados
Se um serviço não for necessário, pare-o e desative-o para não iniciar na inicialização:
# Stop and disable a service (systemd)
sudo systemctl stop <service-name>
sudo systemctl disable <service-name>Referência Rápida: Comandos Mais Úteis
| Tarefa | Comando netstat | Comando ss | |
|---|---|---|---|
| Todas as portas TCP/UDP em escuta | sudo netstat -tuln | sudo ss -tuln | |
| Todas as portas em escuta com PIDs | sudo netstat -tulnp | sudo ss -tulnp | |
| Apenas portas TCP em escuta | sudo netstat -tln | sudo ss -tl | |
| Apenas portas UDP em escuta | sudo netstat -uln | sudo ss -ul | |
| Filtrar pela porta 80 | `sudo netstat -tuln | grep ":80"` | sudo ss -tuln sport = :80 |
| Todas as conexões estabelecidas | sudo netstat -tunp | sudo ss -t state established | |
| Mostrar tabela de roteamento | sudo netstat -r | ip route show |
Conclusão
Monitorar portas abertas e em escuta é uma habilidade fundamental para qualquer administrador de sistemas Linux ou engenheiro DevOps. Quer você esteja protegendo um servidor web de produção, resolvendo um problema de conectividade ou realizando uma auditoria de segurança rotineira, netstat e ss oferecem visibilidade imediata e acionável da exposição de rede do seu sistema.
Para resumir os principais pontos:
- Use
sscomo sua ferramenta principal em qualquer distribuição Linux moderna — é mais rápido, mais rico em recursos e mantido ativamente. - Use
netstatao trabalhar em sistemas legados ou quando scripts e fluxos de trabalho existentes dependem dele. - Complemente com
lsofenmappara inspeção mais profunda em nível de processo e varredura de portas externa. - Sempre aja com base em suas descobertas — feche portas desnecessárias, vincule serviços às interfaces corretas e aplique regras de firewall.
- Proteja serviços expostos com Certificados SSL apropriados e controles de acesso.
Se você está procurando um ambiente de hospedagem que lhe dê acesso root completo para implementar essas práticas de segurança, os planos de VPS Hosting da AlexHost fornecem controle total sobre a configuração do seu servidor Linux — incluindo gerenciamento de firewall, endurecimento de serviços e monitoramento de rede. Para equipes que precisam de máximo desempenho e recursos dedicados, nossos Servidores Dedicados oferecem a potência bruta e o isolamento necessários para operações de segurança de nível empresarial. E se você preferir um ambiente gerenciado com uma interface familiar, explore nossas opções de VPS com cPanel para gerenciamento simplificado do servidor sem sacrificar o controle.
Auditoria regular de portas, combinada com uma configuração de servidor endurecida, é uma das defesas mais eficazes contra acesso não autorizado e violações de dados. Torne-a uma parte rotineira de sua prática de administração de sistemas.
em todos os serviços de alojamento