El tftp por defecto se puede bloquear, acepta un nombre de directorio que está bastante limitado (muy similar al chroot), y se pueden utilizar TCP_WRAPPERS para limitar el acceso a ciertos hosts, pero si se quiere controlar el acceso a ficheros, habrá que utilizar utftp. Por defecto tftp (al menos en Red Hat) dólo permite acceso al directorio /tftpboot (el cual por lo general no suele existir, de modo que créalo si lo necesitas). Es una muy buena idea mantener el directorio tftp lo más separado del sistema que sea posible. Esto se consigue especificando el directorio o directorios a los cuales se quiere que tftp tenga acceso, después del comando tftp en el inetd.conf. El ejemplo que viene a continuación arranca normalmente el tftp y garantiza el acceso al directorio /tftpboot y al directorio /kickstart.
tftp dgram udp wait root /usr/sbin/tcpd in.ftpd /tftpboot
/kickstart
Recuerda también que el tftp utiliza el UDP, de modo que un ps xau no mostrará necesariamente quién está conectado o qué está haciendo (al contrario de lo que muestra el ftp) a menos que se estén bajando un fichero (puesto que la mayoría de las aplicaciones tftp utilizan ficheros pequeños, es poco probable coger a alguien haciéndolo). El mejor desde el que monitorizar el tftp es desde el syslog, pero incluso así el tftp no guarda un log de las direcciones IP o algo realmente útil. Lo siguiente es una salida de ps , y syslog durante una sesión activa de tftp.
nobody 744 0.0 0.6 780 412 ? R 14:31 0:00 in.tftpd/tftpboot
Apr 21 14:31:15 hostname tftpd[744]: tftpd: trying to get file: testfile
Apr 21 14:31:15 hostname tftpd[744]: tftpd: serving file from /tftpboot
El TFTP se puede restringir con facilidad utilizando TCP_WRAPPERS y filtrándolo con el cortafuegos, tftp se ejecuta en el puerto 69, UDP, de modo que sólo hay que restringir el acceso al necesario por las diferentes estaciones de trabajo sin disco, los routers y similares. También es una buena idea bloquear todo el tráfico tftp en los perímetros de tu red, puesto que una máquina no necesita reiniciar remotamente utilizando tftp a través de Internet/etc. De igual forma, el tftp se ejecuta bajo el usuario nobody. Puesto que no se hace autentificación, y todos los dispositivos que acceden al servidor tftp lo están haciendo bajo "nobody", la seguridad a nivel de ficheros es bastante inútil. Resumiendo, un servidor muy inseguro de TFTP se ejecuta en el puerto 69, udp.
ipfwadm –I –a accept –P udp –S 10.0.0.0/8 –D 0.0.0.0/0 69
ipfwadm –I –a accept –P udp –S un.host.fiable –D 0.0.0.0/0 69
ipfwadm –I –a deny –P udp –S 0.0.0.0/0 –D 0.0.0.0/0 69
o
ipchains –A input –p udp –j ACCEPT –s 10.0.0.0/8 –d 0.0.0.0/0 69
ipchains –A input –p udp –j ACCEPT –s un.host.fiable –d 0.0.0.0/0 69
ipchains –A input –p udp –j DENY –s 0.0.0.0/0 –d 0.0.0.0/0 69
utftpd
El utftpd es un recambio seguro del tftpd por defecto, permite un control más afinado y soporta otras características interesantes (como control de revisión). También se puede basar el acceso según la IP de los clientes, lo cual significa que la configuración del router y de las estaciones de trabajo sin disco se pueden mantener aparte unas de otras. utfpd tiene licencia GPL y se encuentra disponible en: http://www.nrw.net/uwe/utftpd.html
Copyright © 1999, Kurt Seifried, José Antonio Revilla
Todos los derechos reservados.