Como listar portas abertas no Linux?

Como listar portas abertas no Linux?

Na networking, uma porta é um recurso interessante. É uma maneira de o tráfego de rede identificar o aplicativo de destino ou serviço. Cada processo/serviço recebe sua porta exclusiva. Uma porta sempre estará associada ao endereço IP do host junto com o protocolo.

Esta é a minha metáfora favorita para descrever o que é uma porta. Imagine um navio carregado de carga, que viajará para uma terra distante. Que informações são necessárias para chegar ao destino corretamente? Por uma questão de simplicidade, digamos que ele precisa do país (o endereço IP) e do porta o navio vai atracar.

Neste guia, verifique como listar portas abertas no Linux.

Portas no Linux

As portas atuam como um ponto final de comunicação. É um número de 16 bits (0 a 65535 em decimal). Embora o intervalo seja grande, para facilitar o uso, as portas são categorizadas em três categorias. Cada categoria é rotulada como o alcance do valor da porta:

  • 0 a 1023: Essas são as portas "conhecidas", também conhecidas como portas "do sistema", reservadas para processos do sistema que oferecem uma ampla variedade de serviços de rede. Para se vincular a uma porta "bem conhecida", um processo deve ter privilégio de superusuário.
  • 1024 a 49151: Essas são as portas "registradas", também conhecidas como portas "usuário", designadas pela IANA para serviços específicos. Mediante solicitação, um processo pode ter acesso a eles. No caso da maioria dos sistemas, não requer nenhum privilégio de superusuário para usar essas portas.
  • 49152 a 65535: Essas são as portas "dinâmicas", também conhecidas como portas "privadas". Essas portas não podem ser registradas na IANA. Essas portas estão abertas ao uso para serviços privados ou personalizados e também podem ser alocados automaticamente como portas efêmeras (portas de vida curta usadas pelo IP).

No Linux, existem várias maneiras de verificar as portas abertas. Por padrão, qualquer porta permanecerá fechada, a menos que um aplicativo esteja usando. Se uma porta estiver aberta, deve ser atribuída a um serviço/processo.

Listar portas abertas

É mais fácil identificar quais portas estão em uso e não quais portas estão abertas. É por isso que a seção a seguir apresentará métodos para listar todas as portas que estão atualmente em uso. No Linux, existem várias ferramentas disponíveis para a tarefa. A maioria deles vem embutida em qualquer distro Linux.

Aprender quais portas estão abertas atualmente podem ser úteis em vários cenários. É possível configurar uma porta dedicada para um determinado aplicativo. Uma porta aberta também pode ser uma forte indicação de intrusão na rede.

Os seguintes métodos são demonstrados no Ubuntu 20.04.1 lts.

Listar protocolos e portas abertas de /etc /serviços

O arquivo /etc /serviços contém informações sobre os serviços atualmente em execução. É um grande arquivo, tão pronto para ficar sobrecarregado.

$ cat /etc /serviços | menos

Listar portas abertas usando o netstat

A ferramenta NetStat é um utilitário para exibir conexões de rede para TCP, tabelas de roteamento e várias interfaces de rede. Também oferece estatísticas de protocolo de rede. Ao usar o NetStat, podemos listar todas as portas abertas do sistema.

Execute o seguinte comando netstat:

$ NETSTAT -ATU

Vamos ter um rápido colapso de todas as bandeiras que usamos neste comando.

  • a: Diz ao NetStat para mostrar todos os soquetes
  • t: Diz ao NetStat para listar as portas TCP
  • você: Diz ao NetStat para listar as portas UDP

Aqui está outra variação do comando netstat:

$ netstat -lntu

Existem duas novas bandeiras usadas no comando. O que eles querem dizer?

  • eu: Diz ao NetStat para imprimir apenas os soquetes de escuta
  • n: Diz ao NetStat para mostrar o número da porta

Para exibir o PID do processo que está usando uma porta, use o sinalizador "-p":

$ netstat -lntup

Liste portas abertas usando SS

A ferramenta SS é um utilitário para investigar o soquete. Seu uso é semelhante ao netstat.

Para listar as portas abertas, execute o seguinte comando SS:

$ ss -lntu

As bandeiras são semelhantes ao netstat. As funções que eles descrevem também são bastante semelhantes.

  • eu: Diz SS para exibir soquetes de escuta
  • n: Diz SS para não tentar resolver nomes de serviço
  • t: Diz ao SS para exibir soquetes TCP
  • você: Diz ao SS para exibir soquetes UDP

Liste portas abertas usando LSOF

O comando LSOF é listar arquivos abertos. No entanto, também pode ser usado para exibir as portas abertas.

Execute o seguinte comando LSOF:

$ lsof -i

Para obter as portas abertas de um protocolo específico (TCP, UDP, etc.) em seguida, defina-o após a bandeira "-i", use:

$ lsof -i

Liste portas abertas usando o NMAP

A ferramenta NMAP é poderosa para exploração de rede e verificação de segurança/porta. Ele pode relatar todas as portas abertas no sistema.

Para listar as portas TCP abertas, execute o seguinte comando nmap. Aqui, o endereço IP é do computador host:

$ sudo nmap -st -p- localhost

Aqui, há duas partes do argumento de comando.

  • -st: Esta seção informa ao NMAP para digitalizar portas TCP.
  • -p- : Isso diz ao NMAP para digitalizar todas as portas 65535. Se não for usado, o NMAP digitalizará apenas 1000 portas por padrão.

Se você precisar listar as portas UDP abertas, execute o seguinte comando nmap:

$ sudo nmap -su -p- localhost

Para obter as portas abertas TCP e UDP, use o seguinte comando:

$ sudo nmap -n -pn -st -su -p- localhost

Listar portas abertas usando o netcat

A ferramenta NetCat é um utilitário de linha de comando para leitura e gravação de dados entre conexões de rede sobre os protocolos TCP e UDP. Esta ferramenta também pode ser usada para listar portas abertas. Ele pode realizar testes em uma porta específica ou em uma variedade de portas.

O seguinte comando netcat escaneará a porta de 1 a 1000. O comando NetCat executará a varredura no protocolo TCP por padrão:

$ nc -z -v localhost 1-1000

Também pode ser estendido para toda a lista de possíveis portas:

$ nc -z -v localhost 1-65535

Vamos ter um rápido colapso das bandeiras.

  • z: Diz ao NetCat para digitalizar apenas portas abertas sem enviar nenhum dado
  • v: Diz ao NetCat para executar no modo detalhado

Para obter apenas as portas abertas desta lista, filtre a saída com o Grep para o termo "sucedido".

$ nc -z -v localhost 0-65535 2> & 1 | Grep conseguiu

Se você quiser executar a varredura no protocolo UDP, adicione a bandeira "-u".

$ nc -z -v -u localhost 0-65535 2> & 1 | Grep conseguiu

Pensamentos finais

Como demonstrado, existem várias maneiras de digitalizar portas abertas no Linux. Eu sugiro experimentar todos os métodos antes de decidir qual dominar. Se você estiver usando uma determinada ferramenta como o NetCat ou o NMAP regularmente, o domínio dos métodos associados será o mais benéfico.

Computação feliz!