Inicio
» LINUX
»
Cómo configurar un servidor TFTP en Ubuntu Server con tftpd-hpa
Cómo configurar un servidor TFTP en Ubuntu Server con tftpd-hpa
Instala el servidor tftpd-hpa y el cliente tftp-hpa de Ubuntu . Esta configuración sirve los archivos desde /srv/tftpun directorio y guarda los archivos subidos en otro. Consulta la lista de paquetes del servidor y del cliente de Ubuntu .
Seguridad: TFTP no requiere inicio de sesión ni cifrado. Restrinja el acceso a una red LAN de confianza; los clientes accesibles pueden leer los archivos disponibles y subir archivos si los permisos lo permiten. No transfiera información confidencial. La especificación TFTP describe sus límites de seguridad.
Configurar el servidor TFTP
1. Instale el servidor y el cliente.
Actualiza los metadatos de APT y, a continuación, instala ambos paquetes:
--secureRestringe el demonio a su raíz configurada, --createpermite cargas y --umask 027limita los nuevos archivos cargados al modo 0640. El manual de tftpd de Ubuntu documenta estas opciones. Guarda con Ctrl+O, pulsa Intro y luego Ctrl+X.
Dado que --securehace que /srv/tftpel directorio raíz sea visible para el cliente, los nombres de archivo son relativos a él: use hello.txt, no /srv/tftp/hello.txt. Los clientes TFTP no exploran directorios, por lo que deben mantener una lista de los nombres de archivo publicados y sus rutas.
Limita los archivos y configura la máscara de carga.
3. Crea el directorio raíz y el directorio de carga.
Mantenga la raíz principal como propiedad del usuario root y otorgue acceso de escritura únicamente a la carpeta de carga:
El demonio puede leer la raíz, pero solo la tftpcuenta puede escribir en ella /srv/tftp/upload. Evite hacer que todo el árbol sea editable por todos con permisos como 777.
Los archivos en el directorio raíz público deben ser legibles por todos los clientes autorizados. Limite dicho directorio a imágenes de arranque, firmware u otro material destinado a esa red. Para transferencias privadas, utilice un protocolo con autenticación y cifrado.
Solo el subdirectorio de carga es editable.
4. Agregue un archivo para servir
Cree un archivo conocido en la raíz. Las comprobaciones de lectura predeterminadas de TFTP requieren que los archivos servidos sean legibles públicamente, así que configure el modo 0644:
echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
Crea un archivo conocido para la prueba de descarga.
5. Habilite y reinicie el servicio.
Habilite la unidad al arrancar, reiníciela para aplicar la configuración e inspeccione su estado:
Si el inicio falla, compruebe el registro del servicio con sudo journalctl -u tftpd-hpa -b --no-pager.
Reinicie el servicio después de cambiar su configuración.
6. Limitar el acceso al cortafuegos
Si UFW está habilitado, permita la solicitud inicial solo desde su subred de cliente. Reemplace la red de ejemplo con su rango de LAN de confianza:
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status
Consulte la guía UFW de Ubuntu para obtener información sobre las reglas de la red de origen. TFTP se inicia en el puerto UDP 69 y, a continuación, utiliza un puerto UDP seleccionado por el servidor para los datos de los archivos, tal como se describe en la especificación del protocolo . Un cortafuegos, enrutador o dispositivo NAT estricto puede permitir la solicitud, pero bloquear la transferencia. Si los clientes agotan el tiempo de espera, utilice el seguimiento de conexiones compatible con TFTP o una política de cortafuegos adecuada; no abra todos los puertos UDP ni exponga TFTP a internet. Este comando añade una regla; no habilita UFW. Si administra el servidor mediante SSH y tiene previsto activar un cortafuegos inactivo, primero permita SSH para preservar el acceso remoto.
Permitir las solicitudes iniciales desde una subred de confianza.
Pruebas de descarga y carga
7. Descargar desde un cliente Ubuntu
En el servidor, ejecute el comando ip -brief addressy anote su dirección LAN accesible. En un cliente Ubuntu, instale el cliente si es necesario. Reemplace 192.0.2.10lo siguiente con la dirección real del servidor:
El archivo se guarda en el directorio actual del cliente. El manual del cliente TFTP de Ubuntu documenta binaryy get. Se recomienda el modo binario para firmware, imágenes de arranque y archivos cuyos bytes deben permanecer sin cambios. Los nombres de archivo de Linux distinguen entre mayúsculas y minúsculas, así que introduzca cada nombre remoto exactamente como se indica.
Solicitar el archivo conocido en modo binario.
8. Subir a la carpeta restringida
En el cliente, cree un archivo de prueba y envíelo a una ruta dentro del directorio de carga del servidor:
Utilice la dirección real del servidor. La ruta remota es relativa a /srv/tftp; verifique la carga en el servidor con sudo ls -l /srv/tftp/upload/. Los clientes TFTP utilizan nombres de archivo conocidos en lugar de explorar un listado de directorios.
Los archivos subidos permanecen dentro del subdirectorio con permisos de escritura.
Solucionar errores comunes
Archivo no encontrado: compruebe el nombre del archivo en relación con /srv/tftpy confirme que existe.
Violación de acceso: Haga que los archivos servidos sean de lectura pública; para las cargas, verifique la tftppropiedad del destino y confirme --createque esté configurada.
Tiempo de espera agotado: Confirme que el cliente utiliza la dirección accesible del servidor, que el servicio está activo y que el cortafuegos permite el flujo de datos UDP negociado.
Para aislar un problema de red, primero realice una prueba desde un cliente en la misma LAN. Si funciona, pero un cliente enrutado agota el tiempo de espera, verifique si el enrutador o el firewall gestionan el puerto de datos negociado de forma compatible con TFTP.
Para un servicio de solo lectura, elimine --createy TFTP_OPTIONSreinicie tftpd-hpa.