Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Segurança

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

IntervaloCategoriaDescrição
0–1023Portas Bem ConhecidasReservadas para serviços de sistema padrão (HTTP, SSH, FTP, etc.)
1024–49151Portas RegistadasUtilizadas por aplicações e middleware (MySQL, PostgreSQL, etc.)
49152–65535Portas Dinâmicas/EfémerasAtribuí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 -y

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -y

Arch Linux:

sudo pacman -S net-tools

Sintaxe Principal do netstat

sudo netstat [options]

Verificação de Todas as Portas TCP e UDP de Escuta

sudo netstat -tuln

Detalhamento das flags:

FlagSignificado
-tExibir conexões TCP e portas
-uExibir conexões UDP e portas
-lMostrar apenas sockets de escuta (portas aguardando conexões)
-nExibir 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.0 significa que o serviço escuta em todas as interfaces disponíveis; 127.0.0.1 significa 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 -tulnp

Exemplo 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 -tunp

Exibindo Tabela de Roteamento

sudo netstat -r

Exibindo Estatísticas de Interface de Rede

sudo netstat -i

3. 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 -tuln

As flags têm o mesmo significado que em netstat:

FlagSignificado
-tMostrar sockets TCP
-uMostrar sockets UDP
-lMostrar apenas sockets em escuta
-nMostrar 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 -tulnp

Exemplo 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 -tl

Mostrar apenas portas UDP em escuta:

ss -ul

Mostrar todas as conexões TCP (incluindo estabelecidas):

ss -t

Filtragem 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 = :22

Filtrar por porta de destino:

ss -tuln dport = :3306

Mostrar todos os sockets em estado ESTABLISHED:

ss -t state established

Mostrar todos os sockets em estado LISTEN:

ss -t state listening

Filtrar por endereço IP de origem:

ss -tuln src 192.168.1.100

Mostrar conexões para um host remoto específico:

ss -t dst 203.0.113.50

Combinar 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 -tm

Exibição de Informações de Temporizador

ss -to

Isto 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:

Funcionalidadenetstatss
Pacotenet-tools (frequentemente não pré-instalado)iproute2 (pré-instalado em distribuições modernas)
VelocidadeMais lento (lê de /proc/net/)Mais rápido (usa interface Netlink do kernel)
Desempenho em escalaDegrada com milhares de conexõesLida com grandes quantidades de conexões eficientemente
Filtragem avançadaRequer piping para grepFiltragem baseada em expressões integrada
Detalhe de saídaBomMais detalhado (memória, timers, etc.)
Suporte IPv6AdequadoExcelente
Status de manutençãoDescontinuadoAtivamente mantido
Curva de aprendizadoFamiliar para administradores experientesSintaxe ligeiramente diferente mas bem documentada

Quando usar netstat

  • Ao administrar sistemas Linux mais antigos (CentOS 6, Debian 7, etc.) onde ss pode 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 -y

Verificar qual processo está a usar a porta 80:

sudo lsof -i :80

Verificar qual processo está a usar a porta 443:

sudo lsof -i :443

Listar todas as conexões de rede:

sudo lsof -i

Listar todos os sockets TCP em escuta:

sudo lsof -i TCP -s TCP:LISTEN

Exemplo 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 -y

Digitalizar todas as portas TCP no localhost:

sudo nmap -sT localhost

Digitalizar portas abertas com detecção de SO:

sudo nmap -sT -O localhost

Digitalizar um intervalo de portas específico:

sudo nmap -p 1-1024 localhost

Digitalizar portas UDP (requer root):

sudo nmap -sU localhost

Digitalizar 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/udp

Note 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.1

Use 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 22

Audite 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).txt

Proteja 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

TarefaComando netstatComando ss
Todas as portas TCP/UDP em escutasudo netstat -tulnsudo ss -tuln
Todas as portas em escuta com PIDssudo netstat -tulnpsudo ss -tulnp
Apenas portas TCP em escutasudo netstat -tlnsudo ss -tl
Apenas portas UDP em escutasudo netstat -ulnsudo ss -ul
Filtrar pela porta 80`sudo netstat -tulngrep ":80"`sudo ss -tuln sport = :80
Todas as conexões estabelecidassudo netstat -tunpsudo ss -t state established
Mostrar tabela de roteamentosudo netstat -rip 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 ss como sua ferramenta principal em qualquer distribuição Linux moderna — é mais rápido, mais rico em recursos e mantido ativamente.
  • Use netstat ao trabalhar em sistemas legados ou quando scripts e fluxos de trabalho existentes dependem dele.
  • Complemente com lsof e nmap para 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.