Como verificar se uma porta está aberta no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá técnicas essenciais para verificar o status das portas de rede em um sistema Linux. Compreender quais portas estão abertas é fundamental para a administração de rede, solução de problemas e análise de segurança.

Você começará usando o comando netstat com opções específicas para listar todas as portas TCP e UDP abertas que estão em estado de escuta (listening). Em seguida, você confirmará o status da porta usando o comando ss, mais moderno, que fornece estatísticas de rede semelhantes. Finalmente, você utilizará o comando nc (netcat) para testar ativamente a conectividade a uma porta específica, verificando se ela é acessível e aberta da perspectiva de um cliente. Ao concluir estas etapas, você obterá habilidades práticas na identificação e verificação de portas abertas em seu ambiente Linux.

Listar portas abertas com netstat -tuln

Nesta etapa, você aprenderá como listar as portas abertas em seu sistema Linux usando o comando netstat. Compreender quais portas estão abertas é crucial para a solução de problemas de rede e segurança.

O comando netstat (estatísticas de rede) é uma ferramenta de linha de comando que exibe conexões de rede, tabelas de roteamento, estatísticas de interface, conexões de mascaramento e associações multicast.

Usaremos as seguintes opções com netstat:

  • -t: Exibir conexões TCP.
  • -u: Exibir conexões UDP.
  • -l: Exibir sockets em escuta (portas abertas).
  • -n: Exibir endereços numéricos em vez de resolver nomes de host e nomes de serviço.

Abra seu terminal se ele ainda não estiver aberto. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.

Agora, digite o seguinte comando e pressione Enter:

netstat -tuln

Você verá uma saída semelhante a esta:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
udp        0      0 127.0.0.53:53           0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*

Vamos analisar a saída:

  • Proto: O protocolo do socket (por exemplo, tcp, udp).
  • Local Address: O endereço IP local e o número da porta. O formato é IP_Address:Port. 0.0.0.0 significa que o serviço está escutando em todas as interfaces IPv4 disponíveis, e ::: significa que está escutando em todas as interfaces IPv6 disponíveis.
  • Foreign Address: O endereço IP remoto e o número da porta. 0.0.0.0:* ou :::* indica que o socket não está conectado a um endereço remoto específico (está escutando).
  • State: O estado do socket. LISTEN significa que a porta está aberta e esperando por conexões de entrada.

Na saída de exemplo, você pode ver que a porta 53 (DNS) e a porta 22 (SSH) estão no estado LISTEN para IPv4 e IPv6.

Este comando é muito útil para verificar rapidamente quais serviços estão em execução e acessíveis em seu sistema.

Clique em Continuar para prosseguir para a próxima etapa.

Confirmar o status da porta usando ss -tuln

Na etapa anterior, você usou netstat para listar as portas abertas. Agora, vamos usar uma ferramenta mais moderna e, muitas vezes, mais rápida chamada ss (estatísticas de socket) para atingir o mesmo objetivo. ss foi projetado para substituir netstat e fornece informações mais detalhadas sobre sockets.

Usaremos opções semelhantes com ss como fizemos com netstat:

  • -t: Exibir sockets TCP.
  • -u: Exibir sockets UDP.
  • -l: Exibir sockets em escuta (portas abertas).
  • -n: Exibir endereços numéricos em vez de resolver nomes de host e nomes de serviço.

Abra seu terminal se ele ainda não estiver aberto.

Digite o seguinte comando e pressione Enter:

ss -tuln

Você verá uma saída semelhante a esta:

Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
udp    UNCONN     0      0      127.0.0.53%lo:53                 0.0.0.0:*
udp    UNCONN     0      0      0.0.0.0:68                       0.0.0.0:*
tcp    LISTEN     0      128    127.0.0.53%lo:53                 0.0.0.0:*
tcp    LISTEN     0      128    0.0.0.0:22                       0.0.0.0:*
tcp    LISTEN     0      128    [::]:22                          [::]:*

A saída é semelhante à de netstat, mostrando o protocolo (Netid), o estado (State), o endereço local e a porta (Local Address:Port) e o endereço e a porta do par (Peer Address:Port).

Você pode ver as mesmas portas (53 e 22) listadas como LISTEN, confirmando os resultados de netstat.

Embora o formato de saída seja ligeiramente diferente, ss fornece informações semelhantes sobre portas em escuta e é geralmente preferido em sistemas Linux modernos devido ao seu desempenho e recursos adicionais (que não abordaremos neste laboratório introdutório).

Usar netstat e ss pode ser útil para referenciar informações cruzadas e se familiarizar com as diferentes ferramentas disponíveis no Linux.

Clique em Continuar para passar para a próxima etapa.

Testar a conectividade da porta com nc -zv

Nas etapas anteriores, você aprendeu como listar portas abertas usando netstat e ss. Agora, vamos usar o comando nc (netcat) para testar se você pode realmente se conectar a uma porta específica. nc é um utilitário de rede versátil que pode ler e escrever em conexões de rede usando TCP ou UDP.

Usaremos nc com as seguintes opções:

  • -z: Especifica que nc deve apenas verificar se há daemons em escuta, sem enviar nenhum dado para eles. Isso é útil para verificar se uma porta está aberta.
  • -v: Habilita a saída verbose, mostrando mais detalhes sobre a tentativa de conexão.

Testaremos a conectividade com a porta 22 (SSH), que vimos estar em escuta nas etapas anteriores. Testaremos a conexão com a máquina local, que pode ser referenciada pelo endereço IP 127.0.0.1 ou pelo nome de host localhost.

Abra seu terminal se ele ainda não estiver aberto.

Digite o seguinte comando e pressione Enter:

nc -zv 127.0.0.1 22

Você deve ver uma saída semelhante a esta:

Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!

Esta saída confirma que nc conseguiu se conectar com sucesso à porta 22 em sua máquina local.

Agora, vamos tentar testar uma porta que provavelmente não está aberta, por exemplo, a porta 80 (HTTP), pois não há um servidor web em execução por padrão neste ambiente.

Digite o seguinte comando e pressione Enter:

nc -zv 127.0.0.1 80

Você provavelmente verá uma saída indicando uma conexão recusada ou tempo limite, semelhante a esta:

nc: connect to 127.0.0.1 port 80 (tcp) failed: Connection refused

Esta saída mostra que nc não conseguiu se conectar à porta 80, o que é esperado, pois nenhum serviço está em escuta nessa porta.

Usar nc -zv é uma maneira rápida e fácil de verificar se uma porta específica é acessível e aberta a partir de sua localização atual.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar se uma porta está aberta no Linux usando ferramentas de linha de comando. Você começou usando o comando netstat -tuln para listar todas as portas TCP e UDP abertas que estão em estado de escuta, compreendendo o formato da saída, incluindo protocolo, endereço local, endereço estrangeiro e estado.

Em seguida, você confirmou o status da porta usando o comando ss -tuln, que fornece informações semelhantes ao netstat, mas é frequentemente considerado uma alternativa mais moderna e rápida. Finalmente, você aprendeu como testar a conectividade com uma porta específica usando o comando nc -zv, que tenta estabelecer uma conexão e relata se a porta está aberta e acessível. Essas etapas fornecem habilidades essenciais para a solução de problemas de rede e análise de segurança em sistemas Linux.