6. Servidor ftp

Sólo recomendamos el servicio ftp para poner un servidor anónimo (con el usuario anonymous y una clave arbitraria). No para que transfiera datos de un usuario porque este servicio transmite claves planas por la red, y así mismo transmite archivos sin encripción alguna. Para transferir información de usuarios emplee un protocolo seguro como scp.

OpenBSD incluye un servidor de ftp auditado, para que los usuarios del sistema puedan emplearlo basta agregar la siguiente línea al archivo /etc/rc.conf.local:

ftpd_flags="-D -A"
	  

Que especifica operar en el fondo y sólo para recibir conexiones anónimas. Para ejecutarlo sin reiniciar use:

/usr/libexec/ftpd -D -A
	  

Para permitir conexiones anónimas debe crear una cuenta ftp. Los detalles de creación al usar adduser se presentan a continuación (emplee una clave difícil, preferiblemente generada con apg):

Enter username []: ftp
Enter full name []: FTP anonimo
Enter shell csh ksh nologin sh [ksh]: nologin
Uid [1008]: 
Login group ftp [ftp]: 
Login group is ``ftp''. Invite ftp into other groups: guest no 
[no]: 
Login class auth-defaults auth-ftp-defaults daemon default staff 
[default]: auth-ftp-defaults
Enter password []: 
Enter password again []: 
	  

Después puede ubicar lo que desee que aparezca en el servidor ftp en el directorio de tal cuenta (e.g /home/ftp) y quitar los permisos de escritura para todos los usuarios.

Cuando un usuario anonymous inicie una sesión, el servidor pondrá el directorio /home/ftp como jaula (chroot) de la conexión. Se espera que el dueño de ese directorio sea root y no permita escritura (modo 555), como subdirectorios se espera:

Si desea mantener una bitácora de las descargas que se realicen (en /var/log/ftpd), asegurese de agregar entre los flags en /etc/rc.conf.local, las opciones -S -l y ejecutar:

touch /var/log/ftpd
	  

6.1. Servicio FTP en una DMZ

Si su servicio ftp opera en un servidor de la red interna, puede emplear ftp-proxy para hacerlo visible al exterior.

Además del ftp-proxy que podría estar corriendo en el cortafuegos para servir a la red interna, debe ejecutar una segunda instancia que opere en modo reverso. Para esto agregue en /etc/rc.local:

pgrep ftp-proxy > /dev/null
if (test "$?" != 0  -a X"${ftpproxy_flags}" != X"NO" -a \
	-x /usr/sbin/ftp-proxy) then {
	echo -n ' ftp-proxy'
	/usr/sbin/ftp-proxy ${ftpproxy_flags}
	/usr/sbin/ftp-proxy -b 200.1.10.44 -p 21 -a 200.1.10.44 -R 192.168.1.30
} fi;
		  

cambiando 200.1.10.44 por su IP pública y 192.168.1.30 por la IP del servidor en el que corre ftp.

Para monitorear su operación antes de activarlo puede emplear las opciones -D 7 -dvv que lo hará correr en primer plano enviando bitácora a salida estándar con máximo nivel de verbosidad.

6.2. Referencias y lecturas recomendadas

La página del manual de ftpd.