Android

Como verificar (scan) para portas abertas no linux

Ajuda Linux - Dia 827 - Checar serviços rodando em portas no Linux - Parte 1

Ajuda Linux - Dia 827 - Checar serviços rodando em portas no Linux - Parte 1

Índice:

Anonim

Se você está solucionando problemas de conectividade de rede ou configurando um firewall, uma das primeiras coisas a verificar é quais portas estão realmente abertas no seu sistema.

Este artigo descreve várias abordagens para descobrir quais portas são abertas para o exterior no seu sistema Linux.

O que é porta aberta

Uma porta de escuta é uma porta de rede que um aplicativo escuta. Você pode obter uma lista das portas de atendimento no seu sistema consultando a pilha de rede com comandos como ss , netstat ou lsof . Cada porta de escuta pode ser aberta ou fechada (filtrada) usando um firewall.

Em termos gerais, uma porta aberta é uma porta de rede que aceita pacotes recebidos de locais remotos.

Por exemplo, se você estiver executando um servidor da Web que escute nas portas 80 e 443 e essas portas estiverem abertas no firewall, qualquer pessoa (exceto ips bloqueados) poderá acessar sites hospedados no servidor da Web usando o navegador dele. Nesse caso, 80 e 443 são portas abertas.

As portas abertas podem representar um risco de segurança, pois cada porta aberta pode ser usada pelos invasores para explorar uma vulnerabilidade ou executar qualquer outro tipo de ataque. Você deve expor apenas as portas necessárias para a funcionalidade do seu aplicativo e fechar todas as outras portas.

Verificar portas abertas com o nmap

O Nmap é uma poderosa ferramenta de digitalização em rede que pode digitalizar hosts únicos e redes grandes. É usado principalmente para auditorias de segurança e testes de penetração.

Se disponível, o nmap deve ser sua primeira ferramenta no que diz respeito à varredura de portas. Além do escaneamento de portas, o nmap também pode detectar o endereço do Mac, o tipo do SO, as versões do kernel e muito mais.

O seguinte comando emitido pelo console determina quais portas estão atendendo às conexões TCP da rede:

sudo nmap -sT -p- 10.10.8.8

O -sT diz ao nmap para procurar portas TCP e -p- para procurar todas as portas 65535. Se -p- não for usado, o nmap verificará apenas 1000 portas.

Starting Nmap 7.60 (https://nmap.org) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

A saída acima mostra que apenas as portas 22 , 80 e 8069 estão abertas no sistema de destino.

Para procurar portas UDP, use -sU vez de -sT :

sudo nmap -sU -p- 10.10.8.8

Para obter mais informações, visite a página do manual nmap e leia sobre todas as outras opções poderosas dessa ferramenta.

Verificar portas abertas com o netcat

O Netcat (ou nc ) é uma ferramenta de linha de comando que pode ler e gravar dados nas conexões de rede, usando os protocolos TCP ou UDP.

Com o netcat você pode digitalizar uma única porta ou um intervalo de portas.

Por exemplo, para procurar portas TCP abertas em uma máquina remota com o endereço IP 10.10.8.8 no intervalo de 20-80 a 20-80 você usaria o seguinte comando:

nc -z -v 10.10.8.8 20-80

A opção -z diz ao nc para procurar apenas portas abertas, sem enviar nenhum dado e o -v é para informações mais detalhadas.

A saída será mais ou menos assim:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded!… Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Para procurar portas UDP, passe a opção -u para o comando nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

Verificar portas abertas usando o pseudo-dispositivo Bash

Outra maneira de verificar se uma certa porta está aberta ou fechada é usando o pseudo dispositivo Bash shell /dev/tcp/.. ou /dev/udp/..

Ao executar um comando em um pseudo-dispositivo /dev/$PROTOCOL/$HOST/$IP , o Bash abrirá uma conexão TCP ou UDP para o host especificado na porta especificada.

A seguinte instrução if..else verificará se a porta 443 no kernel.org está aberta:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

Como o código acima funciona?

O tempo limite padrão ao conectar-se a uma porta usando um pseudo dispositivo é enorme, portanto, estamos usando o comando timeout para interromper o comando test após 5 segundos. Se a conexão for estabelecida com a porta 443 do kernel.org o comando test retornará true.

Você também pode usar o loop for para verificar um intervalo de portas:

for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done

A saída será mais ou menos assim:

port 22 is open port 80 is open

Conclusão

Mostramos várias ferramentas que você pode usar para procurar portas abertas. Também existem outros utilitários e métodos para verificar portas abertas; por exemplo, você pode usar o módulo de socket Python, curl , telnet ou wget .

terminal