El mecanismo de autenticación que acabamos de ver sólo funciona con las
órdenes r* de Unix BSD; la conexión vía ftp
seguirá solicitando un nombre de usuario y una clave para acceder a sistemas
remotos. No obstante, existe una forma de automatizar ftp para que no
solicite estos datos, y es mediante el uso de un archivo situado en el
directorio $HOME de cada usuario (en la máquina desde donde se invoca a
ftp, no en la servidora) y llamado .netrc. En este fichero
se pueden especificar, en texto claro, nombres de máquina, nombres de usuario
y contraseñas de sistemas remotos, de forma que al conectar a ellos la
transferencia de estos datos se realiza automáticamente, sin ninguna
interacción con el usuario. Por ejemplo, imaginemos que el usuario `root' del sistema luisa conecta habitualmente a rosita por ftp, con nombre de usuario `toni'; en su $HOME de luisa
puede crear un fichero .netrc como el siguiente:
luisa:~# cat $HOME/.netrc
machine rosita
login toni
password h/l0&54
luisa:~#
Si este archivo existe, cuando conecte al sistema remoto no se le solicitarán
ningún nombre de usuario ni contraseña:
luisa:~# ftp rosita
Connected to rosita.
220 rosita FTP server (Version wu-2.6.0(1) Thu Oct 21 12:27:00 EDT 1999) ready.
331 Password required for toni.
230 User toni logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
La existencia de ficheros .netrc en los $HOME de los usuarios
se puede convertir en un grave problema de seguridad: si un atacante
consigue leer nuestro fichero .netrc, automáticamente obtiene nuestro
nombre de usuario y nuestra clave en un sistema remoto. Por tanto, no es de
extrañar que para que el mecanismo funcione correctamente, este fichero sólo
puede ser leído por su propietario; si no es así, no se permitirá
el acceso al sistema remoto (aunque los datos de .netrc sean correctos):
luisa:~# ftp rosita
Connected to rosita.
220 rosita FTP server (Version wu-2.6.0(1) Thu Oct 21 12:27:00 EDT 1999) ready.
Error - .netrc file not correct permissions.
Remove password or correct mode (should be 600).
ftp>
Existe una diferencia abismal entre el uso de .rhosts y el de
.netrc; en el primer caso al menos conseguimos que nuestra clave no se
envíe a través de la red, pero mediante .netrc lo único que
conseguimos es no tener que teclear la clave y el login
explícitamente: se envían de forma automática. Además de esto,
si alguien consigue privilegios de administrador en la
máquina cliente, podrá leer los posibles archivos .netrc que sus
usuarios posean; por tanto, este mecanismo sólo se ha de utilizar para
conexiones a sistemas remotos como usuario anónimo (anonymous o ftp). Quizás nos convenga rastrear periódicamente los directorios de
conexión de nuestros usuarios en busca de archivos .netrc, por ejemplo
mediante un shellscript muy similar al que hemos visto para buscar
ficheros .rhosts.
© 2002 Antonio Villalón Huerta