Como Verificar Portas Abertas no Ubuntu: Comandos Essenciais e Dicas de Segurança

1. Introdução

Na gestão de redes e operações de servidores, compreender com precisão o estado das portas é essencial. Especialmente ao usar o Ubuntu, verificar quais portas estão abertas e quais processos as estão utilizando ajuda a reforçar a segurança e permite uma solução de problemas mais rápida.

Este artigo explica os comandos e ferramentas básicos usados para checar portas no Ubuntu. Ele fornece passos práticos e de fácil compreensão para iniciantes e usuários intermediários, portanto, certifique‑se de ler até o final.

2. O que é uma Porta?

2.1 Conceito Básico de Portas

Uma porta é um ponto final de comunicação virtual que computadores e dispositivos de rede utilizam para enviar e receber dados. Especificamente, quando múltiplas aplicações se comunicam simultaneamente no mesmo endereço IP, as portas identificam e roteiam os dados para a aplicação correta.

Por exemplo, um servidor web usa a porta 80 para tráfego HTTP. Se o mesmo servidor permite acesso SSH, ele usa a porta 22. Como os serviços são diferenciados pelos números de porta, verificar o estado das portas é crucial na gestão de redes.

2.2 Tipos e Funções das Portas

As portas são categorizadas em três grupos principais:

  1. Portas Bem Conhecidas (0–1023)
  • Números de porta padronizados globalmente atribuídos a serviços comumente usados. wp:list /wp:list

    • Exemplos:
    • HTTP: 80
    • HTTPS: 443
    • SSH: 22
  1. Portas Registradas (1024–49151)
  • Portas usadas por aplicações ou empresas específicas. wp:list /wp:list

    • Exemplos:
    • MySQL: 3306
    • PostgreSQL: 5432
  1. Portas Dinâmicas (49152–65535)
  • Portas usadas temporariamente por aplicações, comumente em comunicações do lado do cliente.

Entender essa classificação facilita a determinação de para que cada número de porta é utilizado.

3. Como Verificar Portas no Ubuntu

O Ubuntu fornece várias ferramentas para checar o estado das portas. Esta seção explica quatro comandos particularmente úteis.

3.1 Usando o comando ss

O comando ss é uma ferramenta poderosa de gerenciamento de rede para sistemas Linux. Ele executa rapidamente e fornece informações detalhadas sobre conexões.

Comando Básico:

sudo ss -ltn

Detalhes das Opções:

  • -l : Exibe portas apenas no estado LISTEN.
  • -t : Mostra somente o protocolo TCP.
  • -n : Exibe endereços e números de porta em forma numérica.

Exemplo de Saída:

State       Recv-Q Send-Q      Local Address:Port        Peer Address:Port  
LISTEN      0      128              0.0.0.0:22               0.0.0.0:*

3.2 Usando o comando netstat

O comando netstat tem sido amplamente usado como ferramenta de gerenciamento de rede por muitos anos. Embora esteja sendo gradualmente substituído pelo ss, ainda está disponível em muitos sistemas.

Comando Básico:

sudo netstat -ltn

Exemplo de Saída:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

3.3 Usando o comando lsof

lsof é útil para identificar processos que estão usando portas específicas.

Verificar uma porta específica:

sudo lsof -i :80

Exemplo de Saída:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

3.4 Usando o comando nmap

nmap é uma ferramenta de varredura de rede frequentemente usada para diagnósticos de segurança.

Escanear o localhost:

sudo nmap localhost

Exemplo de Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-12-21 18:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

Pontos Principais:

  • Portas abertas e seus serviços associados são listados.
  • É possível escanear servidores externos, mas a devida autorização é necessária.

4. Verificando Configurações de Firewall

On Ubuntu, firewalls are commonly used to enhance security. ufw (Uncomplicated Firewall), in particular, is a simple yet powerful management tool widely used for this purpose. This section explains how to check the status of ports and modify configurations using ufw.

4.1 Verificar o status do ufw

Comando para verificar o status do firewall:

sudo ufw status verbose

Exemplo de Saída:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

Explicação:

  • Status: active — indica que o firewall está habilitado.
  • Logging: on — o registro está habilitado e a atividade do firewall está sendo gravada.
  • Default: deny (incoming), allow (outgoing) — conexões de entrada são negadas por padrão, enquanto conexões de saída são permitidas.
  • ALLOW — mostra portas ou serviços que são explicitamente permitidos (ex.: SSH e HTTP).

Dica:
Se o firewall estiver desativado (Status: inactive), habilite‑o com o seguinte comando:

sudo ufw enable

4.2 Permitindo ou Bloqueando Portas

Comando para permitir uma porta:

sudo ufw allow 22/tcp

Explicação:

  • Permite conexões TCP na porta 22 (SSH).

Comando para bloquear uma porta:

sudo ufw deny 80/tcp

Explicação:

  • Bloqueia o acesso à porta 80 (HTTP).

Exemplo: Permitir acesso apenas de um endereço IP específico

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

Explicação:

  • Permite conexões SSH apenas do endereço IP 192.168.1.100.

4.3 Redefinindo e Revisando Configurações

Para redefinir a configuração do firewall e começar de novo, execute o seguinte comando:

sudo ufw reset

Isso limpa todas as regras e devolve o firewall ao seu estado padrão. Se você redefinir as configurações, certifique‑se de revisar e reaplicar as regras necessárias.

5. Exemplo Prático: Verificando o Status de uma Porta Específica

Esta seção fornece um exemplo prático usando SSH (porta 22) para mostrar como verificar o status da porta.

5.1 Verificar o Status da Porta

Comando de Exemplo:

sudo ss -ltn | grep ':22'

Exemplo de Saída:

LISTEN      0      128        0.0.0.0:22            0.0.0.0:*

Pontos Principais:

  • Se LISTEN aparecer na saída, a porta está aberta e aguardando conexões.
  • 0.0.0.0 indica que conexões são aceitas de todos os endereços IP.

5.2 Verificar o Processo em Execução

Comando de Exemplo:

sudo lsof -i :22

Exemplo de Saída:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234  root   3u   IPv4  56789 0t0      TCP *:ssh (LISTEN)

Pontos Principais:

  • sshd é o processo daemon que gerencia conexões SSH.
  • Você pode parar ou reiniciar o processo usando seu ID de processo (PID).

Exemplo de como parar um processo:

sudo kill 1234

5.3 Exemplo de Solução de Problemas

Problema: O que fazer quando uma porta está fechada ou inacessível.

Passos:

  1. Verifique as configurações do firewall.
    sudo ufw status verbose
    
  1. Se a porta estiver bloqueada, permita‑a.
    sudo ufw allow 22/tcp
    
  1. Verifique o status do serviço e reinicie se necessário.
    sudo systemctl restart ssh
    

6. Gerenciamento de Portas e Segurança

O gerenciamento de portas está diretamente ligado à segurança de rede. Esta seção explica pontos chave sobre abrir e fechar portas e manter configurações seguras.

6.1 Fechando Portas Não Utilizadas

Portas que não estão em uso devem ser fechadas para reduzir o risco de acesso não autorizado.

Exemplo: Fechando a porta 80

sudo ufw deny 80/tcp

6.2 Contramedidas Contra Varredura de Portas

Varredura de portas é uma técnica que atacantes usam para identificar vulnerabilidades em um sistema. Os métodos a seguir ajudam a proteger seu servidor:

  1. Fortalecer regras do firewall:
    sudo ufw default deny incoming
    
  1. Monitorar logs:
    sudo tail -f /var/log/ufw.log
    
  1. Instalar ferramentas de detecção de varredura de portas: Use ferramentas como fail2ban para bloquear automaticamente tentativas de acesso não autorizadas.

7. Resumo

Este artigo explicou métodos e comandos específicos para verificar portas no Ubuntu. Também abordou o gerenciamento de firewall usando ufw e medidas práticas de segurança.

7.1 Principais Conclusões

  • Conceitos básicos e categorias de portas: As portas servem como pontos de entrada de comunicação e são classificadas como bem conhecidas, registradas e dinâmicas.
  • Como verificar portas: Comandos como ss, netstat, lsof e nmap fornecem informações sobre o status de portas e processos.
  • Gerenciamento de firewall: Usando ufw, você pode permitir ou bloquear portas para melhorar a segurança do sistema.
  • Importância da segurança: Fechar portas não utilizadas, monitorar logs e usar ferramentas de segurança ajudam a manter um ambiente de rede seguro.

7.2 Aplicação Prática

O gerenciamento de portas é um aspecto fundamental da segurança de rede. Aplique o conhecimento adquirido neste artigo para manter um ambiente de servidor seguro e estável.

FAQ: Perguntas Frequentes Sobre Verificação de Portas no Ubuntu

Q1. O que devo fazer se uma porta não estiver aberta no Ubuntu?

R:
Tente os seguintes passos:

  1. Verificar as configurações do firewall:
    sudo ufw status verbose
    

Se a porta estiver bloqueada, permita-a com:

sudo ufw allow [portnumber]/tcp
  1. Verificar se o serviço está em execução:
    sudo systemctl status [servicename]
    

Exemplo para SSH:
sudo systemctl status ssh

Reinicie se necessário:

sudo systemctl restart [servicename]
  1. Confirmar se a porta correta está configurada: Verifique o arquivo de configuração do serviço, como /etc/ssh/sshd_config para SSH, para confirmar o número da porta apropriado.

Q2. Qual a diferença entre ss e netstat?

R:
Ambas as ferramentas são usadas para verificar conexões de rede, mas diferem da seguinte forma:

  • ss: A ferramenta recomendada para sistemas Linux modernos. Mais rápida e fornece informações mais detalhadas. Exemplo: sudo ss -ltn
  • netstat: Uma ferramenta mais antiga, gradualmente sendo descontinuada, mas ainda amplamente disponível em sistemas legados. Exemplo: sudo netstat -ltn

Para sistemas mais recentes, ss é recomendado.

Q3. Como posso detectar varredura de portas?

R:
Use os seguintes métodos:

  1. Verificar logs do firewall:
    sudo tail -f /var/log/ufw.log
    

Procure por endereços IP suspeitos ou tentativas de acesso repetidas.

  1. Instalar ferramentas IDS/IPS:
  • Use ferramentas como fail2ban ou Snort para bloquear automaticamente tentativas de acesso não autorizadas.
  1. Escanear seu próprio servidor com nmap:
    sudo nmap localhost
    

Identifique portas abertas desnecessárias e feche-as.

Q4. Como posso verificar qual processo está usando uma porta específica?

R:
Use o comando lsof:

sudo lsof -i :[portnumber]

Exemplo para a porta 80:

sudo lsof -i :80

Saída de Exemplo:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

Q5. Como permito apenas um endereço IP específico usando ufw?

R:
Use o seguinte comando:

sudo ufw allow from [IP address] to any port [portnumber] proto tcp

Exemplo: Permitir acesso SSH de 192.168.1.100:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

Q6. Como posso alterar o número da porta?

R:
Edite o arquivo de configuração do serviço correspondente.
Exemplo para SSH:

  1. Edite o arquivo de configuração:
    sudo nano /etc/ssh/sshd_config
    
  1. Encontre a diretiva Port e defina um novo número de porta:
    Port 2222
    
  1. Reinicie o serviço SSH:
    sudo systemctl restart ssh
    
  1. Permita a nova porta através do firewall:
    sudo ufw allow 2222/tcp
    

Q7. Posso permitir várias portas ao mesmo tempo?

R:
Sim, você pode permitir várias portas usando os seguintes métodos:

  1. Permitindo uma faixa de portas:
    sudo ufw allow 1000:2000/tcp
    

Explicação: Permite portas de 1000 a 2000.

  1. Permitindo portas individualmente:
    sudo ufw allow 22/tcp
    sudo ufw allow 80/tcp