Uno de los protocolos más utilizados en Internet es el FTP. Instalar y configurar un servidor de FTP en GNU/Linux es muy sencillo. El primer paso es encontrar el servidor que más nos interesa. Para ello se puede utilizar el comando apt-cache search ftpd o yum search ftpd. Yo me he decantado por el servidor vsftpd (The Very Secure FTP Daemon) porque es con el que más familiarizado estoy y porque es uno de los más populares en entornos GNU/Linux. Alguna de sus características principales son que es muy rápido, estable y seguro. Soporta usuarios virtuales, SSL, IPv6, control del ancho de banda…

Para instalarlo podemos utilizar cualquier gestor de paquetes. Por ejemplo, con apt sería:

sudo apt-get install vsftpd

El archivo de configuración se encuentra en /etc/vsftpd.conf. Para saber el significado de cada una de las opciones de configuración se puede consultar el man o leer la documentación online.

Os pego la configuración que tengo en mi servidor para que veáis un ejemplo que podáis utilizar directamente en un copy&paste:
# este parámetro indica que el proceso vsftpd se controla a sí mismo y que no
# formar parte de inetd
listen=YES
# Soporte de IP versión 6
listen_ipv6=YES
# Impedir el acceso anónimo al servidor (dejar las líneas comentadas)
#anonymous_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
# Habilitar el acceso para los usuarios locales del sistema
local_enable=YES
# habilitar el permiso de escritura para los usuarios logueados
write_enable=YES
# Selección del umask por defecto para los usuarios. El umask 002 concede permisos
# 755 a los ficheros subidos por los usuarios.
local_umask=022
# Permitir conexiones en el puerto 20
connect_from_port_20=YES
# Impedir el acceso ASCII a los ficheros, mejora la estabilidad del servidor
#ascii_upload_enable=YES
#ascii_download_enable=YES
# Saludo del servidor
ftpd_banner=Bienvenido a mi servidor ftp personalizado!
#Importantísimo para que los usuarios no “escapen” de sus $HOMES
chroot_local_user=YES
#Un par de opciones extra de configuración para mejorar su integración con el sistema
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
#Archivo con el certificado ssl
rsa_cert_file=/etc/ssl/certs/ssl-cert.pem
#clave ssl
rsa_private_key_file=/etc/ssl/private/ssl-cert.key

Para que los cambios se apliquen al servidor hay que reiniciar el proceso utilizando:

sudo /etc/init.d/vsftpd restart

¿Algunas recomendaciones extras?

  • No habilitar el acceso anónimo tanto de lectura como de escritura es importantísimo para mejorar la seguridad del servidor.
  • Habilitar la opción chroot para los usuarios del FTP es recomendable para que no puedan “cotillearse” entre ellos. Por supuesto, es muy recomendable que cada HOME tenga unos permisos 700 para evitar accesos de unos usuarios a directorios que no son suyos.
  • Para evitar posibles sobrecargas del sistema, es recomendable establecer los valores adecuados para las opciones max_clients y max_per_ip que controlan el número máximos de clientes permitidos en el servidor y el máximo número de clientes desde la misma IP respectivamente.

Espero que este post os haya sido de ayuda. Hasta pronto.