Transferencias triviales con TFTP, Parte 3: Uso

Abr 27, 2021
admin

En artículos anteriores, introdujimos TFTP y discutimos por qué podrías querer usarlo, y vimos varias opciones de configuración. Ahora vamos a intentar mover algunos archivos. Puedes hacerlo con cierta comodidad ahora que sabes cómo asegurar tu servidor un poco mejor.

Pruebas 1, 2, 3

Para probar tu servidor, obviamente necesitas un cliente con el que conectarte. Afortunadamente, podemos instalar uno muy fácilmente:

# apt-get install tftp

Los derivados de Red Hat deberían gestionar la instalación de un cliente de la siguiente manera:

# yum install tftp

Si buscas la dirección IP de tu servidor utilizando un comando como el que se muestra a continuación, entonces es posible conectarse a tu servidor TFTP desde cualquier lugar (suponiendo que tu configuración de TCP Wrappers o las reglas de IPtables te lo permitan, por supuesto).

# ip a

Una vez que conozcas la dirección IP, es muy sencillo ponerse en marcha. Puedes conectarte así al servidor desde el cliente:

# tftp 10.10.10.10

Ahora deberías estar conectado. (Si no funciona, comprueba tu cortafuegos o puedes hacer «telnet» al puerto 69 de la dirección IP de tu servidor TFTP). A continuación, puedes ejecutar un comando de «estado» de la siguiente manera:

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

En este punto, prefiero utilizar la salida verbosa simplemente escribiendo este comando:

tftp> verbose

Puedes optar por descargar binarios o archivos de texto plano escribiendo esto para texto plano:

tftp> ascii

O bien, puede forzar la descarga de binarios correctamente con:

tftp> binary

Para darnos algo de contenido para descargar, creé un archivo de texto simple como este:

# echo hello > HERE_I_AM

Esto significa que el archivo HERE_I_AM contiene la palabra «hola». Luego moví ese archivo a nuestro directorio TFTP por defecto, que vimos en uso anteriormente en el archivo de configuración principal, /etc/inetd.conf. Ese directorio – desde el cual nuestro fiel demonio está sirviendo – se llama /srv/tftp, como podemos ver en el Listado 3.

Debido a que esto es sólo un archivo de texto plano, no hay mucha necesidad de habilitar el modo binario, y ya hemos escrito verbose, así que ahora es sólo un caso de transferir nuestro archivo.

Si estás en absoluto familiarizado con el FTP en la línea de comandos, entonces no tendrás ninguna dificultad para captar el lenguaje. Es simplemente «get» para recibir y «put» para colocar. Mi archivo de ejemplo HERE_I_AM se puede recuperar de la siguiente manera.

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

El ejemplo anterior ofrece la salida verbosa cuando ese modo está activado. Puedes obtener información útil, como que no estamos usando el modo binario sino el modo «netascii». Además, puedes ver cuántos bytes fueron transferidos y con qué rapidez. En este caso, los datos tenían un tamaño de siete bytes y tardaron una décima de segundo, a medio kilobyte (más o menos) por segundo, en completarse.

Compare y contraste esto con la salida del modo no-verboso, y estoy seguro de que estará de acuerdo en que vale la pena usarlo:

tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds

Si siente la necesidad de ofuscar el número de puerto de su servidor TFTP entonces, después de editar el archivo /etc/services, necesita conectarse con su software cliente, así:

# tftp 10.10.10.10 11111

Además, no se asuste de solicitar múltiples archivos en una línea. Para ello, utilice esta sintaxis:

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

Si tiene problemas, hay un par de opciones para solucionarlos. Por ejemplo, podría tener un enlace de red saturado debido a una tormenta de difusión o un dispositivo que se comporta mal causando extrañas rarezas en la red. Sin embargo, te alegrará saber que puedes ajustar los tiempos de espera. En primer lugar, desde el prompt del cliente TFTP, podemos establecer los tiempos de espera por paquete de la siguiente manera:

tftp> rexmt 10

Esto nos muestra estableciendo los tiempos de espera de retransmisión por paquete a 10 segundos.

Para establecer el tiempo de espera de transferencia total, para toda la transacción, ajuste la siguiente configuración, así:

tftp> timeout 30

Otra herramienta útil para la depuración es la funcionalidad de «rastreo». Se puede habilitar de la siguiente manera:

tftp> tracePacket tracing on.

Ahora, cada transferencia tendrá un aspecto muy ruidoso, como el que se muestra a continuación, lo que debería ayudar a la resolución 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 de la información anterior, debería ser capaz de decir en qué momento falla una transferencia y quizás discernir un patrón de comportamiento.

Por cierto, si quiere salir del prompt del cliente TFTP, debería bastar con pulsar la tecla «q».

En esta sección, hemos visto cómo configurar y recibir archivos desde un servidor TFTP. Como ya se ha mencionado, es una buena idea hacer un cortafuegos en el puerto 69 desde el mundo exterior si se experimenta con este software y especialmente si se despliega en producción.

Recomiendo que bloquees tu servidor para que sólo puedan acceder a él unas pocas máquinas utilizando IPtables o TCP Wrappers. Aunque es una tecnología más antigua, TFTP es, sin duda, todavía una herramienta útil para tener en su caja de herramientas, y no debe ser descartado por ser sólo útil para pasar la configuración a las estaciones de trabajo o servidores a medida que arrancan.

Systemd

Por cierto, para iniciar y detener el servidor TFTP (o reiniciarlo después de hacer un cambio de configuración) en los sistemas modernos systemd puede ejecutar este comando, sustituyendo «stop» con «restart» o «start» donde sea necesario.

# systemctl stop openbsd-inetd

En sistemas más antiguos, no es necesario recordarle que en la mayoría de los casos uno de estos comandos será suficiente.

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

Simplemente cambie openbsd-inetd por el nombre de los scripts inetd o xinetd apropiados para su distribución. Recuerde que puede averiguar los nombres de los servicios ejecutando un comando como este:

# ls /etc/init.d

Esto funciona incluso en las versiones modernas de systemd, pero hay que fijarse bien en el listado de archivos resultante, porque seamos sinceros, los conductos a «inetd» pueden considerarse un retroceso en algunos círculos y tienen nombres de archivo extraños.

EOF

Si decides tomar tu vida en tus manos y servir TFTP a través de Internet, déjame ofrecerte una palabra de advertencia, bueno, un acrónimo en realidad: NAT. Si la Traducción de Direcciones de Red está involucrada en las conexiones remotas, entonces puedes tener problemas con las transferencias TFTP por el hecho de que usan UDP. Necesitas que el router NAT actúe como un proxy algo más avanzado para que esto funcione. Usted podría mirar el renombrado software de seguridad, pfSense, que aparentemente puede ayudar.

Hemos visto un número de las características de TFTP. Está claro que hay circunstancias específicas en las que el excelente TFTP es una herramienta útil que se puede utilizar de forma rápida y eficaz con poca configuración.

En otras ocasiones, hay que admitir que TFTP no es suficiente. En estos casos, sFTP y FTP estándar pueden ser más apropiados. Sin embargo, antes de buscar esos paquetes, echa un vistazo rápido para ver si las características que necesitas están presentes en el conjunto de herramientas de TFTP. Puede que te sorprenda gratamente lo que encuentres. Después de todo, muchas de las herramientas que utilizamos hoy en día provienen de la época en la que surgió TFTP.

Chris Binnie es un consultor técnico con 20 años de experiencia en Linux y escritor de Linux Magazine y Admin Magazine. Su nuevo libro Linux Server Security: Hack and Defend le enseña cómo lanzar ataques sofisticados, hacer que sus servidores sean invisibles y descifrar contraseñas complejas.

¡Avanza tu carrera en la Administración de Sistemas Linux! Consulte el curso Essentials of System Administration de The Linux Foundation.

Lea los artículos anteriores:

Transferencias triviales con TFTP, parte 1. ¿Por qué utilizarlo? ¿Por qué usarlo?

Transferencias triviales con TFTP, Parte 2: Configuración

Deja una respuesta

Tu dirección de correo electrónico no será publicada.