15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
30.10.2024

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. Ao auditar regularmente quais as portas abertas e quais os serviços ligados 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 e abrangente de como utilizar tanto netstat como ss — as duas ferramentas de linha de comandos mais amplamente utilizadas para inspeção de portas em Linux — juntamente com ferramentas complementares e melhores práticas do mundo real.

Índice

  1. Compreender Portas e os Seus Tipos
  2. Verificar Portas com netstat
  3. Verificar Portas com ss
  4. Comparar netstat vs. ss
  5. Outras Ferramentas para Verificar Portas Abertas
  6. Melhores Práticas de Segurança para Gestão de Portas Abertas
  7. Conclusão

1. Compreender Portas e os Seus Tipos {#understanding-ports}

Antes de mergulhar nas próprias ferramentas, é importante estabelecer uma compreensão clara do que são portas, como são categorizadas e por que é importante monitorá-las.

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 de entrada.
  • ESTABLISHED — Existe uma ligação ativa entre dois pontos finais.
  • TIME_WAIT — A ligação está a fechar; o sistema está à espera de garantir que a extremidade remota recebeu o reconhecimento final.
  • CLOSE_WAIT — A extremidade remota 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. Verificar Portas com netstat {#netstat}

O que é netstat?

netstat (estatísticas de rede) é um utilitário de linha de comandos clássico que apresenta ligações de rede ativas, tabelas de encaminhamento, estatísticas de interface e portas em escuta. Embora tenha sido oficialmente descontinuado a favor de ss em distribuições Linux modernas, netstat permanece amplamente implementado — especialmente em sistemas legados e em ambientes onde os administradores estão profundamente familiarizados com a sua sintaxe.

Instalar netstat

netstat faz parte do pacote net-tools, que já não é 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 Básica de netstat

sudo netstat [options]

Verificar Todas as Portas TCP e UDP em Escuta

sudo netstat -tuln

Análise de bandeiras:

BandeiraSignificado
-tApresentar ligações e portas TCP
-uApresentar ligações e portas UDP
-lMostrar apenas sockets em escuta (portas à espera de ligações)
-nApresentar endereços IP e números de porta numéricos (ignorar resolução DNS para velocidade)

Exemplo de resultado:

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

Ler o resultado:

  • 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á em escuta. 0.0.0.0 significa que o serviço está em escuta em todas as interfaces disponíveis; 127.0.0.1 significa que é apenas acessível localmente.
  • Foreign Address — O endereço do cliente remoto (mostrado como 0.0.0.0:* para portas em escuta sem ligação ativa).
  • State — O estado da ligação (LISTEN, ESTABLISHED, TIME_WAIT, etc.).

Incluir Informações de Processo

Para ver qual processo é proprietário de cada porta em escuta, adicione a bandeira -p:

sudo netstat -tulnp

Exemplo de resultado 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: Deve executar este comando com sudo para ver nomes de processo para todos os utilizadores, não apenas o seu.

Filtrar Resultado para Portas ou Serviços Específicos

Utilize grep para estreitar os resultados para 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"

Ver Todas as Ligações Ativas (Não Apenas em Escuta)

Para ver todas as ligações ativas, incluindo as estabelecidas, remova a bandeira -l:

sudo netstat -tunp

Apresentar Tabela de Encaminhamento

sudo netstat -r

Apresentar Estatísticas de Interface de Rede

sudo netstat -i

3. Verificar Portas com ss {#ss}

O que é ss?

ss (estatísticas de socket) é o substituto moderno de netstat, desenvolvido como parte do pacote iproute2. Comunica diretamente com o kernel Linux através de sockets Netlink, tornando-o significativamente mais rápido e eficiente do que netstat — particularmente em sistemas com milhares de ligaçõ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 Básica de ss

ss [options] [filter]

Verificar Todas as Portas TCP e UDP em Escuta

ss -tuln

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

BandeiraSignificado
-tMostrar sockets TCP
-uMostrar sockets UDP
-lMostrar apenas sockets em escuta
-nMostrar endereços numéricos (sem resolução DNS)

Exemplo de resultado:

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

Incluir Informações de Processo

sudo ss -tulnp

Exemplo de resultado:

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))

Filtrar por Protocolo

Mostrar apenas portas TCP em escuta:

ss -tl

Mostrar apenas portas UDP em escuta:

ss -ul

Mostrar todas as ligações TCP (incluindo estabelecidas):

ss -t

Filtragem Avançada com ss

Uma das características mais poderosas de ss é a sua filtragem baseada em expressões incorporada, que permite filtrar por porta, endereço, estado e muito mais — sem depender de 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 ligações para um anfitrião remoto específico:

ss -t dst 203.0.113.50

Combinar múltiplos filtros:

ss -t state established '( dport = :443 or sport = :443 )'

Apresentar Utilização de Memória de Socket

ss também pode mostrar utilização detalhada de memória por socket, o que é útil para diagnosticar problemas de desempenho:

ss -tm

Apresentar Informações de Temporizador

ss -to

Isto mostra temporizadores de retransmissão e temporizadores de keepalive para ligações TCP, o que é inestimável para diagnosticar problemas de estabilidade de ligação.

4. Comparar netstat vs. ss {#comparison}

Ambas as ferramentas realizam o mesmo objetivo fundamental, mas há diferenças significativas que devem guiar a 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 (utiliza interface kernel Netlink)
Desempenho em escalaDegrada com milhares de ligaçõesLida com grandes contagens de ligações eficientemente
Filtragem avançadaRequer canalização para grepFiltragem baseada em expressões incorporada
Detalhe de resultadoBomMais detalhado (memória, temporizadores, etc.)
Suporte IPv6AdequadoExcelente
Estado de manutençãoDescontinuadoAtivamente mantido
Curva de aprendizagemFamiliar para administradores antigosSintaxe ligeiramente diferente mas bem documentada

Quando Utilizar 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á utilizam sintaxe netstat.
  • Quando está mais confortável com o seu formato de resultado e não precisa de filtragem avançada.

Quando Utilizar ss

  • Em qualquer distribuição Linux moderna (Ubuntu 18.04+, CentOS 7+, Debian 9+ e mais recentes).
  • Ao gerir servidores com um alto volume de ligações simultâneas — como aqueles em execução em Servidores Dedicados sob carga pesada.
  • Quando precisa de filtragem avançada, informações de temporizador ou estatísticas de memória de socket.
  • Para automação e scripting onde o desempenho é importante.

5. Outras Ferramentas para Verificar Portas Abertas {#other-tools}

Para além de netstat e ss, vários outros utilitários são úteis para inspeção de portas e análise de rede em Linux.

lsof — Listar Ficheiros Abertos (Incluindo Sockets)

lsof (List Open Files) trata sockets de rede como ficheiros (consistente com a filosofia “tudo é um ficheiro” do Linux) e pode apresentar 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 utilizar a porta 80:

sudo lsof -i :80

Verificar qual processo está a utilizar a porta 443:

sudo lsof -i :443

Listar todas as ligações de rede:

sudo lsof -i

Listar todos os sockets TCP em escuta:

sudo lsof -i TCP -s TCP:LISTEN

Exemplo de resultado:

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 ferramenta poderosa de varrimento de rede utilizada para auditoria de segurança, descoberta de rede e varrimento de portas. Ao contrário de ss e netstat (que inspecionam o sistema local), nmap pode varrer anfitriões locais e remotos.

Instalar nmap:

# Debian/Ubuntu
sudo apt install nmap -y

# CentOS/RHEL
sudo yum install nmap -y

Varrer todas as portas TCP no localhost:

sudo nmap -sT localhost

Varrer portas abertas com deteção de SO:

sudo nmap -sT -O localhost

Varrer um intervalo de portas específico:

sudo nmap -p 1-1024 localhost

Varrer portas UDP (requer root):

sudo nmap -sU localhost

Varrer um servidor remoto:

sudo nmap -sT 203.0.113.50

> Importante: Apenas varre sistemas que possui ou para os quais tem permissão explícita para varrer. O varrimento de portas não autorizado pode violar leis e termos de serviço.

fuser — Identificar Processos Utilizando 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 porta diretamente do sistema de ficheiros virtual do kernel 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 apresentados 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 Gestão de Portas Abertas {#security}

Saber como verificar portas abertas é apenas metade da batalha. Agir sobre essa informação é o que mantém o 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 portas que são absolutamente necessárias para a sua aplicação funcionar. Cada porta aberta é um vetor de ataque potencial. Audite regularmente as suas portas em escuta e feche ou coloque firewall em qualquer coisa que não precise de ser 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 seja necessário. Por exemplo, um servidor de base de dados MySQL deve apenas estar em escuta em 127.0.0.1 se for apenas acedido localmente:

# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1

Utilizar uma Firewall

Utilize ufw (Ubuntu) ou firewalld / iptables (CentOS/RHEL) para restringir o acesso a 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

Auditar Regularmente Portas em Escuta

Agende auditorias regulares de portas utilizando tarefas cron ou ferramentas de monitorização. Uma nova porta em 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

Proteger Serviços com SSL/TLS

Qualquer serviço exposto à internet — servidores web, servidores de correio, painéis de controlo — deve utilizar ligações encriptadas. Emparelhe as suas portas abertas com Certificados SSL válidos para proteger dados em trânsito e prevenir ataques man-in-the-middle.

Monitorizar Alterações Inesperadas

Utilize ferramentas de deteção de intrusão como AIDE, Tripwire ou auditd para o alertar quando novos processos começam a estar em escuta em portas. Integre com registo centralizado (por exemplo, ELK Stack, Graylog) para visibilidade abrangente.

Desativar Serviços Não Utilizados

Se um serviço não for necessário, pare-o e desative-o de iniciar no arranque:

# 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 -tulnp###PPT_
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar