Instalar y configurar un servidor ftp en tu Raspberry pi

En este tutorial explicaremos cómo instalar y configurar un servidor ftp mediante vsftpd en Linux.

Para quien esté algo perdido FTP, es un protocolo de red dedicado a la transferencia de archivos. Por lo que nos permite compartir archivos ya sea en una red local o por Internet, logueandonos con un usuario y una contraseña

En este tutorial enseñaremos a instalar y configurar un servidor ftp en tu Raspberry PI, para ello usaremos el

servidor ftpVSFTPD”, actualmente el más extendido entre las distribuciones de Linux.

 

Cómo instalar el servidor FTP

Lo primero es hacer “apt-get update” par actualizar los repositorios, y lo siguiente “apt-get install vsftpd” para instalar el servidor ftp. Recordad siempre añadir delante sudo para ser root y no tener problemas de permisos en el proceso.

Cómo configurar el servidor FTP

Una vez termine el proceso de instalación, es recomendable hacer una copia del fichero de configuración “/etc/vstfpd.conf” haciendo “cp /etc/vsftpd.conf /etc/vsftpd.conf.bak”, ya que vamos a tocarlo mucho y no queremos fastidiarlo.

Ahora vamos a configurar nuestro servidor ftp, así que hacemos “nano /etc/vsftpd.conf”, comando con el cual podremos editar la configuración del servidor ftp.

Pasemos a detallar los aspectos de este fichero de configuración, traduciendo cada opción del archivo original del servidor ftp:

vsftpd se ejecuta independientemente, es decir automáticamente al inicio

  • listen=YES

Lo mismo que el anterior pero para la IP versión 6

  • listen_ipv6=YES

Podemos habilitar o deshabilitar el inicio de sesión de usuarios anónimos, “anonymous” y “ftp”. (Desactivado por defecto)

  • anonymous_enable=NO

Para poder loguear usuarios locales del sistema(nosotros).

  • local_enable=YES

Permite el uso de comandos para cambiar el sistema de ficheros, como MKD o DELETE.

  • write_enable=YES

Es la máscara de permisos que se usará para los usuarios del sistema. Básicamente funciona restando a 777 los permisos que queramos tener, por ejemplo, si queremos que los permisos sean 755, entonces, 777-755=022 (Para los propietarios de los archivos, todos los permisos y para el resto, lectura y ejecución).

La opción más usada en los servidores ftp es 022.

  • local_umask=022

Esta opción permite a los usuarios anónimos subir archivos al servidor ftp. Hay que tener en cuenta que únicamente funcionará si la opción de escritura global está activada y obviamente el usuario anónimo tiene permisos de escritura en el directorio.

  • anon_upload_enable=YES

Esta opción permite a los usuarios anónimos crear directorio en el servidor ftp

  • anon_mkdir_write_enable=YES

Muestra el mensaje de cambio de directorio

  • dirmessage_enable=YES

Si está activado, mostrará la hora local de los directorios

  • use_localtime=YES

Es el registro de login para subir y bajar archivos

  • xferlog_enable=YES

Si usara el puerto 20 de transferencia de archivos

  • connect_from_port_20=YES

Esta opción permite cambiar el propietario de los archivos que suban los usuarios anónimos, para de esta forma conseguir una mayor organización.

  • chown_uploads=YES

  • chown_username=whoever

Directorio del archivo de registro

  • xferlog_file=/var/log/vsftpd.log

Puedes cambiar el standar por el que rige el formato del archivo de registro ftpd xferlog.

  • xferlog_std_format=YES

Esta opción especifica el tiempo de inactividad del usuario antes de que el servidor ftp cierre su sesión.

  • idle_session_timeout=600

Esta opción es la misma que la anterior pero para la conexión de datos.

  • data_connection_timeout=120

Se recomienda que definas en tu sistema un usuario único que el servidor ftp pueda utilizar como un usuario totalmente aislado y sin privilegios.

  • nopriv_user=ftpsecure

Si se activa permite al servidor reconocer las peticiones asíncronas “ABOR”. No se recomienda por motivos de seguridad.

  • async_abor_enable=YES

Por defecto, el servidor permite el modo ASCII pero ignorar las peticiones. Activa las opciones de “ascii_upload_enable” y “ascii_download_enable” para que el servidor realmente acepte las peticiones.

  • ascii_upload_enable=YES

  • ascii_download_enable=YES

Permite personalizar la frase de presentación en el inicio de sesión

  • ftpd_banner=Welcome to blah FTP service.

Permite especificar si se denegara los correos anónimos y un archivo especificando qué direcciones. En ocasiones muy útil para combatir ciertos ataques DoS.

  • deny_email_enable=YES

  • banned_email_file=/etc/vsftpd.banned_emails

Con esta opción podemos restringir el acceso, es decir, si lo activamos los usuarios del sistema solo tendrán acceso a su /home/ (Directorio personal en Ubuntu). Selecciona YES para restringir, y NO para tener acceso a todos los archivos y carpetas.

  • chroot_local_user=YES

Se puede especificar qué usuarios se verán afectados por la opción antes comentada “chroot_local_user”, activando la opción “chroot_list_enable” y especificando una ruta para la lista de usuarios en la opción “chroot_list_file”.

  • chroot_local_user=YES

  • chroot_list_enable=YES

  • chroot_list_file=/etc/vsftpd.chroot_list

Permite usar la opción -R del comando ls en el servidor ftp. Por defecto se recomienda que esté desactivado para evitar que los usuarios remotos conectados al servidor generen gran cantidad de tráfico.

  • ls_recurse_enable=YES

Personalización

Algunas de las configuraciones de "vsftpd" no se ajustan por defecto al diseño del sistema de archivos (Estas opciones no son compatibles con Debian).

Esta opción debe ser un directorio el cual debe estar vacío. Además, el directorio no debe ser modificable por el usuario ftp. Este directorio se usa como una cárcel segura de "chroot()" al tiempo que "vsftpd" no requiere acceso a los archivos del sistema.

  • secure_chroot_dir=/var/run/vsftpd/empty

Esta cadena es el nombre del servicio "PAM" que "vsftpd" va a utilizar.

  • pam_service_name=vsftpd

Esta opción especifica la localización del certificado RSA que es usado por las conexiones encriptadas SSL

  • rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

Esta opción especifica la localización de la clave privada RSA que es usado por las conexiones encriptadas SSL

  • rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Cómo reiniciar el servidor FTP

Una vez configurado el archivo de configuración, debemos tener claro que para que la configuración que cambiemos en el archivo vsftpd.conf se haga efectiva debemos reiniciar el servidor ftp.

Para reiniciar el servicio ftp usaremos el siguiente comando:

  • sudo service vsftpd restart

Además, podemos parar el servicio vsftpd mediante el siguiente comando:

  • sudo service vsftpd stop

Y para iniciarlo tenemos el siguiente comando:

  • sudo service vsftpd start

  •  

    Comandos básicos del cliente FTP

    Teniendo claro cada aspecto del archivo de configuración vsftpd.conf, vamos ahora a detallar los comandos más importantes que podemos usar en un servidor ftp:

    • !: Colocado delante de un comando del sistema, habiendo iniciado sesión con el servidor ftp, este se ejecuta fuera del servidor, o sea en nuestra máquina local.

    • ascii: Especifica que el tipo de transferencia de archivos con el servidor ftp sea ASCII (Texto).

    • binary: Especifica que el tipo de transferencia de archivos con el servidor ftp sea Binaria (por defecto).

    • bell: indica al sistema que ejecute un pitido cuando se finalice la ejecución de los comandos.

    • bye, quit: termina la sesión con el servidor FTP y vuelve al terminal.

    • close: termina la sesión FTP sin salir del programa, es decir, cierra la sesión del usuario con el que te hayas logueado en el servidor ftp.

    • delete y mdelete: Borra uno o varios archivos respectivamente dentro del servidor ftp.

    • get y mget: Descargar uno o varios archivos respectivamente dentro del servidor ftp.

    • put: Sube un archivo al servidor ftp.

    • reget: continuar bajando un archivo cortado anteriormente

    • open: Conecta con un FTP remoto.

    • rename: Permite cambiar el nombre de un archivo del servidor ftp.

    Ejemplo de configuración en VSFTPD

    Teniendo claro todos los aspectos de configuración y los comandos básicos del servidor ftp claros, vamos a probar un poco el servidor ftp. Para ello vamos a usar una configuración de ejemplo en la que el usuario anonimo tendrá su propio directorio donde tendrá libertad para trabajar.

    Podemos mediante la opción “anon_root” darle al usuario anonymous (ftp) un directorio donde trabajar, por ejemplo, “/ftp/anonimo”. 

    Además tenemos que tener activas las siguientes configuración para que el usuario ftp/anonymous pueda crear carpetas, subir archivos y modificarlos.

    anonymous_enable=YES

    write_enable=YES

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    chroot_local_user=YES (Por seguridad)

    anon_other_write_enable=YES (Permite al usuario ftp/anonymous borrar)

    anon_root=/ftp/anonimo

    Debemos crear el directorio mediante el comando mkdir:

    sudo mkdir /ftp

    sudo mkdir /ftp/anonimo

    sudo mkdir /ftp/anonimo/subidas

    Y darle los permisos que estimemos oportunos mediante el comando chmod.

    sudo chmod 777 /ftp

    sudo chmod 775 /ftp/anonimo

    sudo chmod 777 /ftp/anonimo/subidas

    NOTA: Los permisos que le demos a los directorios deben coincidir con la configuración de permisos del archivo de configuración vsftpd.conf. Además, el directorio donde iniciar el usuario ftp/anonymous no puede tener todos los permisos por motivos de seguridad, sino al iniciar sesion en el servidor ftp es posible que de el siguiente error (500 OOPS: vsftpd : refusing to run with writeable root inside chroot()).

    Al probar el funcionamiento en local veremos que funciona correctamente:

      Y como en remoto también:

Tampoco tendremos ningún problema al iniciar sesión con una cuenta local en el servidor ftp:

 

Related Articles

Este espacio lo he creado pensando en los entusiastas como tú, para compartir y centralizar documentación sobre temas que me apasionan: Arduino, impresoras 3D, Raspberry Pi, y mucho más.

Además, he querido fusionarlo con mi canal de YouTube, donde exploramos retro-informática, Raspberry Pi, consolas retro, electrónica y otras maravillas del mundo tecnológico. Este es tu sitio si disfrutas aprendiendo, creando y reviviendo lo mejor de la tecnología de ayer y hoy.

¡Bienvenido!