SSD Nodes Learn
Guias Matt ConnorPor Matt Connor · Atualizado 2026-07-24

O que são ports e como ver serviços no Linux

Entenda o funcionamento de ports TCP/UDP e aprenda a usar o comando ss para identificar quais serviços estão listening em portas locais ou públicas.

O que um port realmente é

Um port é um número que permite que um servidor execute muitos serviços simultaneamente sem misturar o tráfego. Seu VPS possui um endereço IP, mas pode rodar um servidor web, um servidor SSH e um banco de dados ao mesmo tempo. Quando um pacote chega, o sistema operacional precisa saber para qual deles ele se destina. O número do port é a resposta. O tráfego web vai para o port 443, o SSH para o port 22. O endereço IP entrega o pacote ao seu servidor; o port o entrega ao programa correto dentro desse servidor.

Um port é um número de 16 bits: 16 bits permitem de 0 a 65535, e o 0 é reservado, então os ports operam de 1 a 65535 na prática. Ports abaixo de 1024 são os ports "well-known" e exigem privilégios de root para serem abertos, por isso os serviços padrão residem neles: 22 para SSH, 80 para HTTP, 443 para HTTPS, 53 para DNS. Qualquer valor acima de 1024 está disponível para programas comuns.

Existem dois tipos, TCP e UDP, e um número de port em um é separado do mesmo número no outro. TCP é o protocolo baseado em conexão usado pela maioria dos serviços, como SSH, HTTP e bancos de dados. UDP não possui conexão e é usado para coisas como DNS e alguns VPNs. Ao configurar um firewall, você geralmente especifica qual deles, por exemplo 22/tcp.

Listening significa que um programa está aguardando em um port

Um programa que deseja receber conexões solicita ao kernel para "listen" em um port. A partir desse momento, o port está aberto na máquina e o programa responde a qualquer coisa que chegue ali, dependendo do firewall. Um port sem nada em listening simplesmente recusa conexões. Portanto, a primeira pergunta em qualquer verificação de segurança é: o que está em listening e onde.

O comando para responder a isso é ss:

sudo ss -tlnp

As flags significam TCP (t), apenas sockets em listening (l), ports numéricos (n, para ver 22 em vez de ssh) e o processo proprietário (p). Um resultado típico:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

A coluna Process informa qual programa é o dono de cada port, que é como você rastreia algo que não pretendia deixar rodando.

A coluna Local Address é a parte que importa

Leia o endereço à frente de cada port com atenção, pois ele decide quem pode alcançar o serviço. Existem três casos que você verá constantemente.

0.0.0.0:22 significa "escutar em todos os endereços IPv4 que esta máquina possui", incluindo o público. O serviço é acessível pela internet via IPv4, se o firewall permitir.

[::]:80 significa o mesmo para IPv6: escutar em todos os endereços IPv6, incluindo o público. Muitos programas fazem o bind aqui por padrão, e no Linux um socket :: frequentemente aceita IPv4 também.

127.0.0.1:5432 significa "escutar apenas em loopback". 127.0.0.1 é o endereço que uma máquina usa para falar consigo mesma, e não é roteável de nenhum outro lugar. Um serviço com bind aqui é acessível apenas do mesmo servidor, nunca da internet, independentemente do que o seu firewall diga. Aquela linha do Postgres acima é segura por construção.

A regra prática deriva diretamente disso: um banco de dados, um cache ou um painel de administração que apenas suas próprias aplicações utilizam deve fazer o bind em 127.0.0.1, não em 0.0.0.0. Se ele nunca escuta em um endereço público, não há nada que um atacante possa alcançar.

Listening não é o mesmo que ser acessível

Mais uma distinção evita muita confusão. Um port estar aberto na máquina, significando que um programa está em listening, é diferente de esse port ser acessível externamente, significando que o firewall permite. Ambos devem ser verdadeiros para que um cliente remoto se conecte.

Portanto, existem duas camadas de controle. Você decide o que escuta, definindo o endereço de bind de cada serviço. E você decide o que o mundo externo pode alcançar, com um firewall. Um servidor bem configurado usa ambos: serviços fazem o bind apenas onde precisam, e um firewall nega tudo o que você não permitiu explicitamente. Ler o que está em listening com ss é o primeiro passo; decidir o que o firewall permite é o segundo passo, abordado em firewalls 101 com UFW.

Existe uma sutileza que engana as pessoas aqui. IPv4 e IPv6 são separados, e um firewall que cobre apenas IPv4 deixa os serviços [::] abertos no IPv6. Esse erro específico tem seu próprio post: a armadilha do firewall IPv6.

FAQ

Como eu vejo quais ports estão abertos no meu servidor Linux?

Execute sudo ss -tlnp para TCP ou sudo ss -ulnp para UDP. Isso lista cada socket em listening, o port, o endereço local ao qual está vinculado e o processo proprietário. Leia a coluna Local Address: 0.0.0.0 ou [::] significa que o serviço está exposto à rede, enquanto 127.0.0.1 significa que ele escuta apenas na própria máquina.

Qual é a diferença entre 0.0.0.0 e 127.0.0.1?

0.0.0.0 significa "escutar em todos os endereços IPv4", incluindo o público, portanto o serviço pode ser alcançado pela rede. 127.0.0.1 é loopback, o endereço que a máquina usa para falar consigo mesma, e não é roteável de nenhum outro lugar, então um serviço com bind nele é acessível apenas localmente. Faça o bind de serviços internos em 127.0.0.1 para que eles nunca fiquem expostos.

Eu preciso abrir um port no firewall para um serviço funcionar?

Apenas para serviços que devem ser alcançados de outras máquinas. Um serviço com bind em 127.0.0.1 não precisa de regra de firewall porque nada externo pode alcançá-lo de qualquer maneira. Um serviço em 0.0.0.0 ou [::] precisa de uma regra de firewall para permitir o tráfego, e deve ser negado por padrão até que você adicione uma.

Qual é a diferença entre um port TCP e um port UDP?

TCP é baseado em conexão e é usado pela maioria dos serviços, como SSH, servidores web e bancos de dados. UDP não possui conexão e é usado por DNS e alguns VPNs. O mesmo número em TCP e UDP são ports separados, portanto 53/tcp e 53/udp são diferentes. Ao escrever regras de firewall, você especifica o protocolo, por exemplo 22/tcp.