Transferências Triviais com TFTP, Parte 3: Uso

Abr 27, 2021
admin

Em artigos anteriores, nós introduzimos o TFTP e discutimos porque você poderia querer usá-lo, e olhamos para várias opções de configuração. Agora vamos tentar mover alguns arquivos. Você pode fazer isso com algum conforto agora que você sabe como proteger o seu servidor um pouco melhor.

Testing 1, 2, 3

Para testar o seu servidor, você obviamente precisa de um cliente para se conectar. Felizmente, nós podemos instalar um muito facilmente:

# apt-get install tftp

Derivadas da Red Hat devem gerenciar a instalação de um cliente como assim:

# yum install tftp

Se você procurar o endereço IP do seu servidor usando um comando como o abaixo, então é possível conectar-se ao seu servidor TFTP de qualquer lugar (assumindo que a configuração de seus TCP Wrappers ou regras de IPtables o permitam, é claro).

# ip a

Embora você saiba o endereço IP, é muito simples de começar. Você pode conectar-se assim ao servidor a partir do cliente:

# tftp 10.10.10.10

Agora você deve estar conectado. (Se não funcionar, verifique o seu firewalling ou pode “telnet” para a porta 69 no endereço IP do servidor do seu TFTP). A seguir, você pode executar um comando “status” como segue:

tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds

Neste ponto, eu prefiro usar saída verbosa simplesmente digitando este comando:

tftp> verbose

Você pode optar por baixar binários ou arquivos de texto puro digitando isto para texto puro:

tftp> ascii

Or, você pode forçar os binários a baixar corretamente com:

tftp> binary

Para nos dar algum conteúdo para baixar, eu criei um arquivo de texto simples como este:

# echo hello > HERE_I_AM

Isso significa que o arquivo AQUI_I_AM contém a palavra “olá”. Eu então movi esse arquivo para nosso diretório TFTP padrão, que vimos em uso anteriormente no arquivo de configuração principal, /etc/inetd.conf. Esse diretório – do qual nosso fiel daemon está servindo – chama-se /srv/tftp, como podemos ver em Listing 3.

Porque este é apenas um simples arquivo de texto, há pouca necessidade de ativar o modo binário, e nós já escrevemos verbose, então agora é apenas um caso de transferir nosso arquivo.

Se você está familiarizado com FTP na linha de comando, então você não terá nenhuma dificuldade para pegar a linguagem. É simplesmente “get” para receber e “put” para colocar. O meu ficheiro de amostra AQUI_I_AM pode ser recuperado da seguinte forma.

tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds 

O exemplo acima oferece a saída verbosa quando esse modo está activado. Você pode obter informações úteis, como por exemplo que não estamos usando o modo binário, mas apenas o modo “netascii”. Além disso, você pode ver quantos bytes foram transferidos e com que rapidez. Neste caso, os dados tinham sete bytes de tamanho e demoravam um décimo de segundo, a meio kilobyte (ou assim) por segundo, para serem completados.

Compare e contraste isso com a saída em modo não-verbose, e tenho certeza que você vai concordar que vale a pena usar:

tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds

Se você sentir a necessidade de ofuscar o número da porta do seu servidor TFTP então, após editar o arquivo /etc/services, você precisa se conectar com o seu software cliente, assim:

# tftp 10.10.10.10 11111

Adicionalmente, não tenha muito medo de pedir múltiplos arquivos em uma linha. Atinja isso mesmo usando esta sintaxe:

# get one.txt two.txt three.txt four.txt five.txt

Se tiver problemas, há algumas opções de resolução de problemas a explorar. Você pode, por exemplo, ter um link de rede saturado devido a uma tempestade de transmissão ou um dispositivo mal-comportado causando estranhas odds de rede. Você ficará satisfeito em saber, no entanto, que você pode ajustar os timeouts. Primeiro, a partir do prompt do cliente TFTP, podemos definir os timeouts por pacote como so:

tftp> rexmt 10

Isto mostra-nos a definição dos timeouts de retransmissão por pacote para 10 segundos.

Para definir o timeout de transferência total, para toda a transacção, ajuste a seguinte definição, como isto:

tftp> timeout 30

Outra ferramenta útil para depuração é a funcionalidade “trace”. Ela pode ser habilitada da seguinte forma:

tftp> tracePacket tracing on.

Agora, cada transferência vai parecer muito barulhenta, como abaixo, o que deve ajudar na resolução de problemas:

tftp> get HERE_I_AMsent RRQ <file=HERE_I_AM, mode=netascii>received DATA <block=1, 512 bytes> sent ACK <block=1> received DATA <block=2, 512 bytes>sent ACK <block=2> received DATA <block=3, 512 bytes>

A partir da informação acima, você deve ser capaz de dizer em que ponto uma transferência falha e talvez discernir um padrão de comportamento.

Incidentalmente, se quiser sair do prompt do cliente TFTP, então carregar na tecla “q” deverá ser suficiente.

Nesta secção, vimos como configurar e receber ficheiros de um Servidor TFTP. Como mencionado, é uma boa idéia para firewall porta 69 do mundo exterior se você experimentar com este software e especialmente se você implementá-lo em produção.

Eu recomendo que você bloqueie o seu servidor para que ele só possa ser acessado por algumas máquinas usando IPtables ou TCP Wrappers. Embora seja uma tecnologia mais antiga, o TFTP é sem dúvida uma ferramenta útil para ter em sua caixa de ferramentas, e não deve ser descartado como sendo útil apenas para passar a configuração para estações de trabalho ou servidores enquanto eles inicializam.

Systemd

Incidentalmente, para iniciar e parar o servidor TFTP (ou reiniciá-lo depois de fazer uma mudança de configuração) em sistemas modernos de sistema você pode executar este comando, substituindo “stop” por “restart” ou “start” onde for necessário.

# systemctl stop openbsd-inetd

Em sistemas mais antigos, não há necessidade de lhe lembrar que na maioria dos casos um destes comandos será suficiente.

# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart

Simplesmente mude openbsd-inetd para o nome dos scripts inetd ou xinetd apropriados para a sua distribuição. Lembre-se que você pode encontrar nomes de serviços executando um comando como este:

# ls /etc/init.d

Isso funciona até mesmo em versões modernas do systemd, mas você precisa olhar atentamente a listagem de arquivos resultante, porque vamos encarar que ele conduz ao “inetd” pode ser considerado um throwback em alguns círculos e ter nomes de arquivos estranhos.

EOF

Se você decidir levar sua vida em suas próprias mãos e servir TFTP através da Internet, deixe-me oferecer uma palavra de aviso, bem, um acrônimo na verdade: NAT. Se a Network Address Translation está envolvida em conexões remotas, então você pode ter dificuldades com as transferências TFTP por causa do fato de que elas usam UDP. Você precisa do roteador NAT para agir como um proxy um pouco mais avançado para fazer isso funcionar. Você pode olhar para o renomado software de segurança, pfSense, que aparentemente pode ajudar.

Vemos uma série de características do TFTP. Claramente, existem circunstâncias específicas quando o excelente TFTP é uma ferramenta útil que pode ser usada rápida e eficazmente com pouca configuração.

Outras vezes, reconhecidamente, o TFTP não corta bem a mostarda. Nesses casos, sFTP e FTP padrão podem ser mais apropriados. Antes de procurar por esses pacotes, entretanto, dê uma olhada rápida para ver se as funcionalidades que você precisa estão presentes dentro do conjunto de ferramentas do TFTP. Você pode ficar agradavelmente surpreso com o que você encontrar. Afinal de contas, muitas das ferramentas que usamos hoje anunciam desde a época de origem do TFTP.

Chris Binnie é um Consultor Técnico com 20 anos de experiência em Linux e um escritor para a Linux Magazine e Admin Magazine. O seu novo livro Linux Server Security: Hack and Defend ensina como lançar ataques sofisticados, tornar os seus servidores invisíveis e quebrar senhas complexas.

Avance a sua carreira na Administração de Sistemas Linux! Confira o curso Essentials of System Administration da The Linux Foundation.

Ler artigos anteriores:

Trivial Transfers with TFTP, Parte 1: Por que usá-lo?

Trivial Transfers with TFTP, Parte 2: Configuração

Deixe uma resposta

O seu endereço de email não será publicado.