Voltar ao blog

Utilitário Netcat no Linux: Testando Conexões TCP/UDP em um VPS com o Netcat

Utilitário Netcat no Linux: Testando Conexões TCP/UDP em um VPS com o Netcat

Introdução

Uma das maiores vantagens de usar Linux é a infinidade de utilitários úteis que ele fornece. Os recursos internos do programa geralmente são suficientes para a maioria dos programadores realizarem seu trabalho. Isso significa que, na maioria das vezes, você não precisará baixar programas e softwares externos. As ferramentas integradas fornecerão utilidade suficiente. Entre esses recursos úteis está o utilitário netcat.

Quando se trata do mundo das ferramentas de rede, o netcat é uma espécie de arma superpoderosa. É um comando incrivelmente versátil que você pode usar para múltiplos propósitos. Por exemplo, você pode usar esta única ferramenta para monitorar, testar, bem como transferir todos os tipos de arquivos e dados através das conexões do seu sistema. Neste guia, exploraremos como realizar todas essas ações em um VPS usando o netcat.

Encontrando o Netcat

O Netcat normalmente está disponível em todas as distribuições Linux modernas. O que significa que você provavelmente já o possui e não precisa se esforçar para instalá-lo. Em nosso tutorial, usaremos o VPS Ubuntu 12.04. Você pode instalar seu próprio servidor Ubuntu seguindo nosso tutorial.  O Ubuntu normalmente vem com a variante BSD do utilitário netcat. Tenha em mente que, se você tiver outra versão, ela pode funcionar de maneira um pouco diferente.

Analisando a Sintaxe Básica

Começamos aprendendo sobre a sintaxe geral que funciona no utilitário netcat. Você pode operar o netcat iniciando uma conexão TCP. A conexão deve ser iniciada para um host remoto. Aqui está a sintaxe básica para o netcat:

Este comando tentará iniciar uma conexão TCP com um host remoto. O host ao qual ele se conecta depende do número da porta que você especificar no comando. A conexão não será criptografada. Como você pode ver, este comando funciona de maneira semelhante à forma como o comando telnet funciona.

Por outro lado, você também pode iniciar uma conexão UDP. Para enviar um pacote UDP em vez de TCP, você deve usar a opção -u. Seria algo assim:

Se desejar, você também pode especificar um intervalo de portas. Para fazer isso, você precisa colocar um hífen entre a primeira e a última porta. Aqui está um exemplo:

Você também pode adicionar mais flags a isso. Outra coisa a notar é que você pode usar netcat e nc de forma intercambiável. Eles iniciarão o mesmo comando, o que significa que são aliases um do outro.

Usando o Netcat para Varredura de Portas

Para começar, vamos explorar um dos usos mais comuns do netcat. Vamos descobrir como usá-lo como um scanner de portas. Na maioria das situações, é melhor usar uma ferramenta como o nmap. No entanto, se você precisa apenas realizar varreduras de portas simples, o netcat é útil. Ele pode ajudá-lo a identificar portas abertas com facilidade.

Para usar o netcat como um scanner de portas, você precisa mencionar o intervalo de portas. Você fará isso usando a opção -z. Assim, o sistema varrerá o intervalo de portas em vez de tentar uma conexão. Digamos que queremos varrer da porta 1 até a porta 1000:

Além do comando -z, também usamos a opção -v. Esta última nos permite fornecer mais informações ao comando. Ela nos permite ser mais 'verbosos'.

Você obterá uma saída como esta em retorno:

port scanning netcat utility

A saída mostra muitas informações para cada porta individual. Você sabe o status da conexão de cada porta. Por outro lado, você pode usar o endereço IP no lugar do nome de domínio, se o souber. Isso torna o processo muito mais rápido. Aqui está um exemplo:

Usamos a flag -n para indicar que o sistema não precisa usar o DNS para resolver o endereço IP.

Normalmente, as mensagens de retorno são enviadas para a saída de erro padrão (stderr). Para filtrar os resultados mais rapidamente, você pode redirecioná-los para a saída padrão (stdout). Usaremos a sintaxe bash 2>&1 para fazer isso. Posteriormente, filtraremos os resultados usando o grep. Vamos aplicar isso ao nosso exemplo:

A saída será semelhante a esta:

port scan succeeded

A saída mostra que apenas a porta 22 está aberta para conexão no intervalo fornecido. A porta 22 por acaso é a porta SSH tradicional.

Comunicação através do Netcat: Como funciona?

A seguir, veremos como você pode usar o netcat para enviar pacotes TCP e UDP. Não apenas isso, mas ele também pode receber pacotes em várias portas. Como resultado dessa capacidade, você pode usar duas instâncias do netcat para criar uma relação cliente-servidor. No início, você determinará o cliente e o servidor. Após a configuração inicial, ambos os clientes podem enviar e receber pacotes em qualquer direção.

Naturalmente, você terá que configurar o netcat em um sistema para escutar conexões em uma porta. Para fazer isso, você deve usar o parâmetro -l. Com isso, você pode selecionar a porta de sua escolha assim:

Agora o TCP nesta máquina estará escutando conexões na porta 4444. Um ponto a ser observado é que, se você for um usuário não-root ou comum, não poderá acessar portas abaixo de 1000.

Em seguida, você deve configurar uma segunda máquina para estabelecer uma conexão. Você usará o mesmo número de porta e indicará um nome de domínio específico assim:

A execução deste comando não fornecerá nenhuma saída. No entanto, ele estabelecerá a conexão. Isso significa que você pode começar a enviar mensagens de qualquer um dos servidores para o outro. Para fazer isso, tudo o que você precisa fazer é digitar a mensagem e pressionar ENTER. A mensagem aparecerá em ambas as telas.

Quando terminar, você pode fechar a conexão TCP pressionando CTRL+D.

É possível enviar arquivos usando o Netcat?

A seguir, mostraremos como você pode enviar arquivos através do netcat. Com uma conexão TCP, você pode enviar mensagens, bem como outros tipos de dados. Para começar, você deve selecionar uma máquina para escutar conexões. No entanto, em vez de digitar as informações no comando, nós as colocaremos em um arquivo como este:

Na outra máquina, você terá que criar um novo arquivo de texto. Aqui está o comando a ser usado:

Para transmitir o arquivo, você o usará como entrada para a conexão no computador que está escutando:

O outro computador mostrará um novo arquivo chamado ‘received_file.’ Ele conterá todas as informações que digitamos:

file transmissionVocê pode usar este utilitário e transformá-lo em um programa de transferência de arquivos. Digamos que você queira transferir o conteúdo de um diretório. Faremos isso criando um tarball sem nome que transferiremos para o sistema e descompactaremos no diretório remoto. Na outra máquina, precisamos nos preparar para receber o arquivo. Sabemos que precisaremos descompactá-lo e extraí-lo. Para fazer isso, execute este comando:

O hífen indica que o tar operará na entrada padrão. Isso vem do netcat no servidor inicial quando estabelecemos a conexão inicial.

Finalmente, podemos colocar o conteúdo de todo o diretório em um tarball e enviá-lo através do netcat assim:

O hífen no comando tar mostra que estamos dizendo ao sistema para compactar e empacotar o conteúdo do diretório. Ele também o instrui a gravar o resultado na saída padrão. O arquivo passará pela conexão TCP para a outra extremidade. O servidor receptor irá descompactá-lo e salvá-lo no diretório remoto atual.

Assim como isso, você também pode transferir outros tipos de dados através do netcat. Muitas pessoas usam o comando dd para criar imagens de discos e transferi-las. Para outra maneira de transferir dados e arquivos, dê uma olhada no nosso tutorial mostrando como garantir a segurança ao transferir arquivos com  SFTP.

Usando o Netcat como um Servidor Web

Outra função útil do netcat é que você pode usá-lo para testar suas páginas. Digamos que estamos usando um servidor para criar um arquivo HTML como este:

Este é o código HTML que o arquivo contém:

Insira isso no arquivo, depois salve e feche-o. Normalmente, a porta 80 é a porta web padrão. Como um usuário comum, não root, selecionaremos a porta 8888. Assumindo que você deseja servir e verificar a página uma vez, você deve usar este comando:

Para visualizar o conteúdo do arquivo, acesse o seu navegador. Visite o seguinte:

Você poderá ver a página que codificou com o arquivo HTML:

output html page netcat utility

Assim que você acessar a página, a conexão netcat será fechada. Isso significa que atualizar a página resultará em um erro em vez do conteúdo. Isso ocorre porque a configuramos para servir a página apenas uma vez. Se você quiser continuar recebendo conexões para ver a página indefinidamente, usará um código diferente:

Aqui, envolvemos o último comando em um loop infinito. Se quiser parar o loop, tudo o que precisa fazer é digitar CTRL-C. Agora você pode continuar visualizando sua página e sua renderização mesmo após o fechamento da primeira conexão. No entanto, esta é a funcionalidade máxima que você pode extrair do uso do utilitário netcat como um servidor web. Não tente usá-lo para servir sites reais, pois ele não oferece nenhuma segurança. Em vez disso, você pode dar uma olhada em nossos tutoriais sobre como instalar software de servidor web como o Nginx ou Apache.

Conclusão

Neste tutorial, abordamos o utilitário netcat e exploramos sua versatilidade como uma ferramenta no Ubuntu. Como abordamos nas seções acima, você pode usá-lo para fins de comunicação, transferência de dados e exibição de páginas. Ele funciona perfeitamente para interações rápidas entre servidores por meio de conexões TCP/UDP. É um recurso muito útil para muitas funcionalidades básicas e diagnósticos.

Feliz Computação!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.