Em rede, uma porta é uma característica interessante. É uma forma de o tráfego de rede identificar a aplicação ou serviço de destino. Cada processo/serviço recebe a sua porta única. Uma porta será sempre associada ao endereço IP do anfitrião juntamente com o protocolo.
Esta é uma metáfora favorita minha para descrever o que é uma porta. Imagine um navio carregado com carga, que irá viajar para uma terra distante. Que informação é necessária para se chegar ao destino de forma adequada? Para simplificar, digamos que precisa do país (o endereço IP) e do porto que o navio atracará.
Neste guia, verifique como listar portos abertos em Linux.
Portos em Linux
Portos actuam como um ponto final de comunicação. É um número de 16 bits (0 a 65535 em decimal). Embora a gama seja grande, para facilidade de utilização, os portos são categorizados em três categorias. Cada categoria é rotulada como o intervalo do valor da porta:
- 0 a 1023: Estas são as portas “Bem conhecidas”, também conhecidas como as portas “Sistema”, que são reservadas para processos de sistema que oferecem uma grande variedade de serviços de rede. Para se ligar a uma porta “bem conhecida”, um processo deve ter privilégio de superutilizador.
- 1024 a 49151: Estes são os portos “Registados”, também conhecidos como os portos “Utilizador”, que são designados pela IANA para serviços específicos. Mediante pedido, um processo pode ter acesso a eles. No caso da maioria dos sistemas, não é necessário qualquer privilégio de superutilizador para utilizar estes portos.
- 49152 a 65535: Estes são os portos “Dinâmicos”, também conhecidos como os portos “Privados”. Estes portos não podem ser registados na IANA. Estas portas estão abertas à utilização para serviços privados ou personalizados e podem também ser automaticamente atribuídas como portos efémeros (portos de curta duração utilizados por IP).
No Linux, existem múltiplas formas de verificar os portos abertos. Por defeito, qualquer porta permanecerá fechada a menos que uma aplicação esteja a utilizá-la. Se uma porta estiver aberta, então deve ser atribuída a um serviço/processo.
Lista Portas Abertas
É mais fácil identificar quais as portas que estão a ser utilizadas do que quais as portas que estão abertas. É por isso que a secção seguinte irá apresentar métodos para listar todas as portas que estão actualmente em uso. No Linux, há múltiplas ferramentas disponíveis para a tarefa. A maioria delas vem integrada em qualquer distro.
Aprender quais as portas que estão actualmente abertas pode ser útil em vários cenários. É possível configurar uma porta dedicada para uma determinada aplicação. Uma porta aberta pode também ser uma forte indicação de intrusão na rede.
Os seguintes métodos são demonstrados no Ubuntu 20.04.1 LTS.
Lista de protocolos e portas abertas de /etc/services
O ficheiro /etc/services contém informações sobre os serviços actualmente em execução. É um ficheiro grande, tão pronto a ficar sobrecarregado.
Lista portas abertas usando netstat
A ferramenta netstat é um utilitário para exibir ligações de rede para TCP, tabelas de encaminhamento, e várias interfaces de rede. Oferece também estatísticas de protocolo de rede. Utilizando o netstat, podemos listar todas as portas abertas do sistema.
Executar o seguinte comando netstat:
Vamos ter uma rápida decomposição de todas as bandeiras que utilizámos neste comando.
- a: Diz à netstat para mostrar todas as tomadas
- t: Diz netstat para listar as portas TCP
- u: Diz netstat para listar as portas UDP
Aqui está outra variação do comando netstat:
Existem duas novas bandeiras utilizadas no comando. O que significam?
- l: Diz à netstat para imprimir apenas as tomadas de escuta
- n: Diz netstat para mostrar o número da porta
Para mostrar o PID do processo que está a utilizar uma porta, utilizar a bandeira “-p”:
Lista de portas abertas usando ss
A ferramenta ss é uma utilidade para investigar soquetes. A sua utilização é semelhante à netstat.
Para listar as portas abertas, executar o seguinte comando ss:
As bandeiras são semelhantes a netstat. As funções que descrevem são também bastante semelhantes.
- l: Diz ss para exibir tomadas de escuta
- n: Diz ao ss para não tentar resolver nomes de serviços
- t: Diz ss para exibir tomadas TCP
- u: Diz ss para exibir tomadas UDP
Lista portas abertas usando lsof
O comando lsof é para listar ficheiros abertos. No entanto, também pode ser usado para exibir as portas abertas.
Executar o seguinte comando lsof:
Para obter as portas abertas de um protocolo específico (TCP, UDP, etc.).) e depois defini-la após a bandeira “-i”, utilizar:
Lista de portas abertas usando nmap
A ferramenta nmap é uma poderosa ferramenta para exploração de rede e segurança/portagem de scanning. Pode relatar todas as portas abertas no sistema.
Para listar as portas TCP abertas, executar o seguinte comando nmap. Aqui, o endereço IP é do computador anfitrião:
Aqui, há duas porções do argumento de comando.
- -sT: Esta secção diz ao nmap para procurar as portas TCP.
- -p-: Isto diz ao nmap para procurar todas as 65535 portas. Se não for utilizado, então o nmap irá digitalizar apenas 1000 portas por defeito.
Se precisar de listar as portas UDP abertas, então execute o seguinte comando nmap:
Para obter as portas TCP e UDP abertas, use o seguinte comando:
Lista portas abertas usando netcat
A ferramenta netcat é um utilitário de linha de comando para leitura e escrita de dados através de ligações de rede através dos protocolos TCP e UDP. Esta ferramenta também pode ser usada para listar portas abertas. Pode realizar testes numa porta específica ou numa gama de portas.
O seguinte comando netcat digitalizará a porta de 1 a 1000. O comando netcat realizará a varredura no protocolo TCP por defeito:
Também pode ser alargado a toda a lista de portas possíveis:
Vamos ter uma rápida quebra das bandeiras.
- z: Diz à netcat para procurar apenas portas abertas sem enviar quaisquer dados
- v: Diz netcat para correr em modo verboso
Para obter apenas as portas abertas desta lista, filtrar a saída com grep para o termo “bem sucedido”.
Se quiser realizar o scan no protocolo UDP, então adicione a bandeira “-u”.
Final Thoughts
As demonstrated, há toneladas de formas de procurar portas abertas no Linux. Sugiro que experimente todos os métodos antes de decidir qual deles deve dominar. Se estiver a utilizar regularmente uma certa ferramenta como netcat ou nmap, então dominar os métodos associados será o mais benéfico.
Computação Feliz!