VSFTPD en Ubuntu 12.04

En esta entrada voy a describir los pasos básicos para poder instalar en nuestra máquina Linux con Ubuntu 12.04 un servidor FTP. Para ello voy ha utilizar VSFTPD, estas siglas vienen de «Very Secure FTP Daemon», que viene a ser demonio FTP muy seguro. Se encuentra bajo licencia GNU y soporta IPv6 y SSL.

Instalación

La instalación la hacemos desde un terminal, aunque se puede utilizar Synaptic o cualquier otro gestor de paquetes, pero a mi me resulta más fácil desde comandos.

$ sudo apt-get install vsftpd

Configuración

La configuración del servicio se encuentra en un mismo fichero en /etc/vsftpd.conf, editamos este fichero y modificamos algunas de las opciones.

$ sudo gedit /etc/vsftpd.conf

A continuación detallo las que suelo modificar, evidentemente no están todas las opciones de configuración que ofrece VSFTPD. Como ocurre en otros servicios, la almohadilla (#) marca un comentario.

#Permitir o no el acceso a los usuarios anónimos
anonymous_enable=NO

#Permitir el acceso de usuarios locales a sus respectivas cuentas
local_enable=YES

#Activar el modo escritura
write_enable=YES

#Mensaje de bienvenida
ftpd_banner=Bienvenidos...

#Encerrar a los usuarios dentro de su propio directorio persona, aumenta la seguridad
chroot_local_user=YES

#Para que los usuarios puedan ver sus carpetas FTP y no el resto del sistema
chroot_list_enable=YES

#Lista de usuarios con acceso permitido al FTP
chroot_list_file=/etc/vsftpd.chroot_list

#Opciones de transferencia
#Establece el ancho de banda por cada usuario anónimo
anon_max_rate=5100

#Establece el ancho de banda por cada usuario local
local_max_rate=5100

#Número máximo de clientes simultáneos
max_clients=5

#Máximo número de conexiones por IP
max_per_ip=2

Usuarios para utilizar el servicio FTP

Generalmente, cuando instalas el servicio se crea automáticamente el grupo ftp y el directorio /home/ftp, pero si no ocurre esto lo tendremos que crear a mano.

  1. Creamos el directorio para el usuario dentro de /home/ftp, el directorios será el punto en el que se encuentren todos los directorios para cada usuario del FTP. En este caso, nuestro usuario se llamará copias.
    $ sudo mkdir /home/ftp/copias
  2. Creamos el grupo ftp, puede que ya exista.
    $ sudo groupadd ftp
  3. Ahora creamos el usuario para el FTP, añadiéndolo al grupo ftp y asignándole su directorio.
    $ sudo useradd -g ftp -d /home/ftp/copias -c "Copias" copias
  4. Y ahora se crea la contraseña para el usuario creado.
    $ sudo passwd copias

Ahora viene la parte interesante para los usuarios, vamos a crear un shell fantasma, de esta forma el usuario no podrá iniciar sesión en el sistema y esta cuenta únicamente servirá para el FTP.

  1. Creamos el directorio para el shell.
    $ sudo mkdir /bin/ftp
  2. Añadimos la línea /bin/ftp al fichero /etc/shells.
    $ sudo gedit /etc/shells

  3. Editamos el fichero /etc/passwd
    $ sudo gedit /etc/passwd

    Buscamos una línea parecida a la siguiente:

    copias:1001:1001:Copias:/home/ftp/copias:/bin/sh

    Y la modificamos de la siguiente forma:

    copias:1001:1001:Copias:/home/ftp/copias:/bin/ftp

Ahora le damos permiso al usuario para que pueda acceder mediante FTP, para ello añadimos el usuario al fichero vsftpd.chroot_list.

$ sudo gedit /etc/vsftpd.chroot_list

Su contenido tiene que ser algo parecido a esto:

#Usuarios permitidos
copias

Reiniciar el servicio

Ya sólo nos queda reiniciar el servicio y probarlo.

$ sudo /etc/init.d/vsftpd restart

o con esta otra

$ sudo service vsftpd restart

Espero que os haya servido.