Início
» LINUX
»
Como configurar um servidor TFTP no Ubuntu Server com tftpd-hpa
Como configurar um servidor TFTP no Ubuntu Server com tftpd-hpa
Instale o servidor tftpd-hpa e o cliente tftp-hpa do Ubuntu . Essa configuração serve arquivos /srv/tftpe mantém os uploads em um diretório separado. Consulte a lista de pacotes do servidor e do cliente do Ubuntu .
Segurança: O TFTP não possui login nem criptografia. Restrinja o acesso a uma LAN confiável; os clientes acessíveis podem ler os arquivos disponíveis e podem fazer upload onde as permissões permitirem. Não transfira segredos. A especificação do TFTP descreve seus limites de segurança.
Configure o servidor TFTP.
1. Instale o servidor e o cliente.
Atualize os metadados do APT e, em seguida, instale os dois pacotes:
--secureConfina o daemon à sua raiz configurada, --createpermite uploads e --umask 027limita os novos arquivos de upload ao modo especificado 0640. O manual do tftpd do Ubuntu documenta essas opções. Salve com Ctrl+O, pressione Enter e depois Ctrl+X.
Como o diretório raiz é visível --securepara /srv/tftpo cliente, os nomes dos arquivos são relativos a ele: use `/var/www/tftp` hello.txt, não `/ /srv/tftp/hello.txtvar/www/tfp`. Os clientes TFTP não navegam por diretórios, portanto, mantenha uma lista dos nomes de arquivos publicados e seus respectivos caminhos.
Limite os arquivos e defina a máscara de upload.
3. Crie o diretório raiz e o diretório de upload.
Mantenha o diretório raiz principal como propriedade do usuário root e conceda permissão de escrita apenas à pasta de upload:
O daemon pode ler a raiz, mas somente a tftpconta pode escrever nela /srv/tftp/upload. Evite tornar toda a árvore gravável por todos com permissões como 777.
Os arquivos na raiz pública devem ser considerados legíveis por todos os clientes autorizados. Limite essa árvore a imagens de inicialização, firmware ou outros materiais destinados a essa rede. Para transferências privadas, escolha um protocolo com autenticação e criptografia.
Somente o subdiretório de upload é gravável.
4. Adicione um arquivo para servir
Crie um arquivo conhecido na raiz. As verificações de leitura padrão do TFTP exigem que os arquivos servidos sejam publicamente legíveis, portanto, defina o modo 0644:
echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
Crie um arquivo conhecido para o teste de download.
5. Ative e reinicie o serviço.
Habilite a unidade na inicialização, reinicie-a para aplicar as configurações e verifique seu status:
Se a inicialização falhar, verifique o log do serviço com sudo journalctl -u tftpd-hpa -b --no-pager.
Reinicie o serviço após alterar suas configurações.
6. Limitar o acesso ao firewall
Se o UFW estiver ativado, permita a solicitação inicial somente da sua sub-rede de clientes. Substitua a rede de exemplo pelo seu intervalo de LAN confiável:
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status
Consulte o guia do UFW do Ubuntu para obter informações sobre as regras de rede de origem. O TFTP inicia na porta UDP 69 e, em seguida, usa uma porta UDP selecionada pelo servidor para os dados do arquivo, conforme descrito na especificação do protocolo . Um firewall, roteador ou dispositivo NAT com restrições rigorosas pode permitir a solicitação, mas bloquear a transferência. Se os clientes atingirem o tempo limite, use o rastreamento de conexão compatível com TFTP ou uma política de firewall apropriada; não abra todas as portas UDP nem exponha o TFTP à internet. Este comando adiciona uma regra; ele não habilita o UFW. Se você administra o servidor via SSH e pretende ativar um firewall inativo, permita o SSH primeiro para preservar o acesso remoto.
Permitir solicitações iniciais de uma sub-rede confiável.
Teste de downloads e uploads
7. Faça o download a partir de um cliente Ubuntu
No servidor, execute o comando ip -brief addresse anote o endereço LAN acessível. Em um cliente Ubuntu, instale o cliente, se necessário. Substitua o 192.0.2.10endereço abaixo pelo endereço real do servidor:
O arquivo é salvo no diretório atual do cliente. O manual do cliente TFTP do Ubuntu documenta binaryisso get. O modo binário é recomendado para firmware, imagens de inicialização e arquivos cujos bytes devem permanecer inalterados. Os nomes de arquivos no Linux diferenciam maiúsculas de minúsculas, portanto, digite cada nome remoto exatamente como está.
Solicite o arquivo conhecido em modo binário.
8. Faça o upload para a pasta restrita.
No cliente, crie um arquivo de teste e envie-o para um caminho dentro do diretório de upload do servidor:
Use o endereço real do servidor. O caminho remoto é relativo a /srv/tftp; verifique o upload no servidor com sudo ls -l /srv/tftp/upload/. Os clientes TFTP usam nomes de arquivos conhecidos em vez de navegar por uma lista de diretórios.
Os arquivos enviados permanecem dentro do subdiretório gravável.
Solucionar problemas de erros comuns
Arquivo não encontrado: Verifique o nome do arquivo em relação ao diretório /srv/tftpe confirme se ele existe.
Violação de acesso: torne os arquivos servidos publicamente legíveis; para uploads, verifique a tftppropriedade do destino e confirme --createse está configurada corretamente.
Tempo limite: Confirme se o cliente está usando um endereço acessível do servidor, se o serviço está ativo e se o firewall permite o fluxo de dados UDP negociado.
Para isolar um problema de rede, teste primeiro a partir de um cliente na mesma LAN. Se isso funcionar, mas um cliente roteado apresentar um tempo limite, verifique se o roteador ou firewall está configurado para lidar com TFTP na porta de dados negociada.
Para um serviço somente leitura, remova --create-o TFTP_OPTIONSe reinicie-o tftpd-hpa.