Por experiência, digo que é comum ao administrar servidores linux verificar quais portas estão abertas no servidor e quais serviços estão usando-as, seja, para identificar problemas (como: address already in use) ou como uma medida para prevenir ataques devido a portas expostas.
Os comandos ss, lsof e nmap podem ajudar a descobrir portas abertas no linux e saber qual processo está utilizando a porta em um servidor.
Neste artigo, você aprenderá a instalar esses três comandos em diferentes distribuições linux, entender sua sintaxe e utilizar exemplos práticos para descobrir portas abertas no linux.
Descobrir portas abertas no linux com o comando ss
O comando ss (abreviação para Socket Statistics) é uma ferramenta moderna e extremamente rápida usada para mostrar sockets de rede no sistema, sendo o substituto oficial em distribuições linux atuais do antigo comando netstat.
Para realizar sua instalação no Ubuntu/Debian, o comando já costuma vir presente, mas caso não esteja, usando o usuário root instale o pacote iproute2:
apt update
apt install iproute2 -yNas distribuições RedHat, AlmaLinux e Rocky Linux, você utiliza o comando:
dnf install iproute -yA sintaxe do comando ss é:
ss [opções] <filtro>Explicação:
ss – É o próprio comando, usado para exibir informações sobre sockets de rede no linux, como conexões TCP/UDP, portas em escuta e o estado das conexões.
opções – representa parâmetros opcionais que modificam o comportamento e o formato da saída do comando ss.
filtro – Uma expressão opcional usada para selecionar quais sockets serão exibidos. Em vez de mostrar todas as conexões, é possível restringir a consulta utilizando critérios.
Para facilitar o aprendizado, abaixo tem uma lista com as opções mais comuns do comando ss:
| Opção | Descrição | Exemplos de Uso |
|---|---|---|
| -t | Mostra apenas sockets TCP do sistema. | ss -ta |
| -l | Lista sockets no estado “listening” (ouvindo). | ss -lt |
| -n | Não resolve nomes de serviços, mostrando apenas números das portas. | ss -n |
| -u | Exibe apenas sockets UDP do sistema. | ss -ua |
| -p | Exibe o processo (PID) que está usando o respectivo socket. | ss -p |
A seguir será ensinado alguns exemplos práticos de uso do comando ss para descobrir quais portas estão abertas no linux.
Exemplo 1: Para listar todas as portas TCP ativas no estado LISTEN, aguardando conexões em um servidor linux, execute o comando:
ss -tln
A opção “-l” mostra sockets em estado de escuta (LISTEN), “-t” exibe conexões do protocolo TCP e “-n” apresenta os números das portas sem tentar resolver nomes de serviços.
Exemplo 2: Você pode adicionar a opção “-p” do comando ss para identificar qual o processo está usando uma porta específica.
ss -tlnp
O comando é útil para auxiliar em casos que ao subir uma aplicação, você recebe um erro informando que a porta já está em uso, ao executar “ss -tlnp” é possível achar rapidamente o processo culpado e o seu PID.
Exemplo 3: Muitos serviços críticos, como os servidores de DNS ou de sincronização de tempo (NTP), comunicam-se via protocolo UDP. Para descobrir portas abertas no linux que utilizam o protocolo UDP execute o comando:
ss -uln
Exemplo 4: Você também pode utilizar o comando ss não para descobrir portas abertas no linux, mas para visualizar as conexões que usam o protocolo TCP que já estão estabelecidas. Utilize o filtro “state established”:
ss -tn state establishedPara aprofundar seus conhecimentos e ver todas as opções disponíveis, recomendo a leitura do manual do comando ss.
IMPORTANTE:
Para executar os comandos “lsof” e “nmap” do artigo é necessário ter privilégios administrativos, ou seja, você deve usar o usuário root ou o comando sudo.
Comando nmap para descobrir portas abertas no linux
O nmap é uma ferramenta de exploração e auditoria de rede utilizada para descobrir hosts, serviços e portas acessíveis. Diferentemente do comando ss, que analisam o próprio sistema, o nmap pode testar um host remotamente.
Para instalar o comando nmap no Ubuntu ou Debian, rode no terminal:
apt update
apt install nmap -yMas, se o servidor tem instalado o RHEL, AlmaLinux ou Rocky Linux, o comando para instalar o nmap é:
dnf install nmap -yA sintaxe do utilitário segue o formato:
nmap [opções] [alvo]Para realizar uma checagem rápida do próprio servidor e descobrir portas abertas no linux execute no terminal:
nmap localhost
No exemplo, localhost (127.0.0.1) é o endereço local, e existem 4 portas abertas.
Você também pode fazer um scan para descobrir portas abertas no linux de um servidor remoto, basta incluir o endereço IP após o comando nmap.
nmap 10.10.40.2
Se você quer aprender mais sobre o comando nmap não deixe de conferir nosso artigo completo para aprofundar seu conhecimento.
Verificando portas abertas no linux com o comando lsof
O comando lsof (List Open Files) lista todos os arquivos abertos no sistema, podendo mapear portas abertas no linux.
Caso ele não venha por padrão, sua instalação no Ubuntu/Debian é feita executando:
apt update
apt install lsof -yJá nas distribuições linux como Red Hat, AlmaLinux e Rocky Linux, instale rodando:
dnf install lsof -yA sintaxe do comando lsof segue o padrão:
lsof [opções]A seguir você aprenderá alguns exemplos práticos de uso do comando lsof para descobrir portas abertas no linux.
Para listar as portas abertas no linux e conexões existentes utilize o comando lsof com a opção “-i” que vai mostrar arquivos relacionados à rede e as portas utilizadas.
lsof -i
Na última coluna tem “endereço ip:porta”, as portas com estados LISTEN indica portas abertas por aplicações que usam o protocolo TCP, e as outras são portas abertas usando protocolo UDP, com exceção das que tem o estado ESTABLISHED.
Precisa encontrar portas específicas que estão abertas ? Após a opção “-i” inclua o caractere “:” dois pontos seguido do número da porta. Por exemplo, você pode verificar se a porta 25 está aberta por uma aplicação:
lsof -P -i :25
A opção “-P” do comando lsof inibi resolver número de portas para nomes de serviços.
Se precisar listar somente portas abertas do protocolo UDP, execute o comando no terminal:
lsof -iUDP -PnA opção “-iUDP” seleciona somente sockets do protocolo UDP.
Caso precise exibir na tela somente portas TCP abertas e usadas em conexões existentes utilize a opção “-iTCP”.
lsof -iTCP -PnMas, se a necessidade é descobrir portas abertas no linux relacionadas ao protocolo TCP, filtrando por um estado específico, como LISTEN, execute o comando:
lsof -i -sTCP:LISTEN
A opção “-sTCP:LISTEN” procura somente sockets TCP cujo estado é LISTEN.
Quer aprender ainda mais sobre o comando lsof ? Consulte seu manual do online.
Conclusão
Descobrir quais portas estão abertas no linux é fundamental para administração, troubleshooting e segurança do servidor. Use o comando ss para analisar sockets e o lsof para relacionar portas a processos.
Não basta encontrar uma porta aberta, identifique o serviço responsável, confirme se ele é necessário e avalie se o acesso está corretamente protegido pelo firewall.
Ficou alguma dúvida sobre algum exemplo apresentado ou tem sugestões ou quer simplesmente deixar um elogio ? Deixe o seu comentário logo abaixo!
Perguntas frequentes (FAQ)
Como descobrir qual processo está usando uma porta no linux ?
Execute o comando lsof, por exemplo para descobrir qual processo está usando a porta 9090 execute: lsof -i :9090
Qual a diferença entre ss, lsof e nmap ?
O comando ss analisa sockets e conexões locais, o lsof relaciona arquivos e sockets aos processos e o nmap realiza escaneamentos de rede contra um host ou conjunto de hosts.
Por que o comando ss mostra o estado UNCONN para portas UDP ?
Porque o protocolo UDP não estabelece uma conexão como o TCP. Por isso, ao listar sockets UDP, o comando ss normalmente mostra o estado UNCONN (unconnected), indicando um socket sem uma conexão estabelecida, algo comum em sockets UDP.
É recomendado utilizar as opções “-n” e “-P” do comando lsof ?
Para não ter lentidão é recomendado utilizar a opção “-P” para evitar resolver portas em nomes de serviços e “-n” para inibir resolver endereços IP em nomes de hosts.

