La instalación de VSFTPD es relativamente sencilla , solo debemos teclear en un terminal el siguiente comando.
sudo apt-get install vsftpd

Configuración del fichero vsftpd.conf
La configuración de vsftpd.conf es el primer paso que debemos realizar cuando instalamos este servicio de vsftpd, antes que nada debemos realizar una copia de respaldo de este archivo para ello utilizaremos el siguiente comando.

una vez realizada nuestra copia de respaldo procederemos a editar el archivo vsftpd.conf el que se encuentra en la siguiente ruta /etc/vsftpd.conf Para llevar a cabo la configuración de este archivo recomiendo usar el editor de textos NANO. en consola anotamos lo siguiente.

en la imagen anterior se presentaran las diferentes opciones que pueden ser habilitadas o negadas en el fichero de configuración vsftpd.conf .
la siguiente configuración corresponde a usuarios enjaulados.
# Para que se ejecute vsftpd en modo independiente. No se puede utilizar en conjunto con listen_ipv6
listen=YES
listen=YES
# No permitimos que se conecten usuarios anónimos.
anonymous_enable=NO
# Permitimos que los usuario locales se puedan conectar.
local_enable=YES
# Permitimos poder hacer modificaciones.
write_enable=YES
# Muestra un mensaje cada vez que un usuario entra en un directorio.
dirmessage_enable=YES
dirmessage_enable=YES
# Vsftpd registra las conexiones y la información de transferencia, por defecto en /var/log/vsftpd.log
xferlog_enable=YES
# Se puede reemplazar el archivo de registro donde va, si quieres. El valor por defecto se muestra A continuación.
# Se puede reemplazar el archivo de registro donde va, si quieres. El valor por defecto se muestra A continuación.
xferlog_file=/var/log/vsftpd.log
# Se permite que el servidor vsftpd abra el puerto 20, para ponerse a la escucha de peticiones.
connect_from_port_20=YES
# Mensaje de bienvenida al conectarse mediante un cliente ftp
ftpd_banner=Bienvenidos al Servidor FTP UBUNTU.
# Permitimos a los usuarios locales que puedan estar en su propio directorio.
chroot_local_user=YES
# Con esta opción los usuarios locales que se encuentren en el fichero indicado por chroot_list_file estarán enjaulados en su directorio.
chroot_list_enable=YES
# Especifica el fichero que contiene los usuarios a que pueden moverse en el servidor FTP incluso estando enjaulados.
chroot_list_file=/etc/vsftpd.chroot_list
# Esta opcion especifica el nombre de un directorio vacio. También el directorio no tiene que tener privilegios para el usuario de ftp. Este es un directorio usado como una jaula segura chroot y aveces no requiere de aceso al sistema de ficheros los usuarios en esta lista pueden
secure_chroot_dir=/var/run/vsftpd
# Especifica el nombre de PAM (Pluggable Authentication Modules) para vsftpd
pam_service_name=vsftpd
# Esta opción especifica la localización del certificado RSA para usar conexiones SSL. Esta opción viene por defecto.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# Esta opción especifica la localización de la clave privada para las conexiones SSL.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# Umask por defecto para los usuarios locales es 077. Es posible que desee cambiar esto a 022,
si los usuarios esperan que (022 es utilizado por la mayoría de otros ftpd)
local_umask=022
# Si se activa, vsftpd mostrará los listados de directorios con el tiempo
# En su zona horaria local. El valor predeterminado es mostrar GMT. la
# Veces devueltos por el comando FTP MDTM también se ven afectados por esta
# Opción.
use_localtime=YES
##########################################################
Para iniciar el servidor FTP por primera vez solo deberemos teclear en terminal cualquiera de los siguientes 2 comandos.local_umask=022
# Si se activa, vsftpd mostrará los listados de directorios con el tiempo
# En su zona horaria local. El valor predeterminado es mostrar GMT. la
# Veces devueltos por el comando FTP MDTM también se ven afectados por esta
# Opción.
use_localtime=YES
##########################################################
Iniciar , detener o reiniciar el servidor FTP
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
los usuarios que deseemos utilizar para nuestro Servidor FTP deben estar anexados en el mismo grupo para una mejor seguridad.
con el siguiente comando creamos el grupo ftp.
Creamos una shell fantasma para que no puedan entrar a la consola del servidor.
Abrimos la lista de shells del sistema.
Agregamos nuestra shell fantasma al final del fichero.
Creación de usuarios FTP
Lo primero es crearle una carpeta de usuario. Puedes hacerlo donde tú quieras, pero yo suelo meterlos a todos en una sub-carpeta dentro de la siguiente ruta /srv/ftp. para ello debemos crear la carpeta que identifique al usuario ftp.
en mi caso creare la carpeta del usuario john
anexamente le asignare la seguridad 555 a la carpeta john y creare 3 sub-carpetas para que el usuario pueda guardar sus archivos.
a continuación creamos el usuario:
Explicación:
-g ftp => el usuario pertenece al grupo ftp
-d /srv/ftp/john => el directorio principal del usuario es /srv/ftp/john
-c “john red” => el nombre completo del usuario
john => la última palabra será el nombre de usuario
Ahora le asignamos una contraseña:
le asignamos la shell fantasma:
Y finalmente le asignamos los permisos de usuario y grupo a las sub-carpetas creadas anteriormente.
ahora realizaremos pruebas desde un pc conectado a la red de nuestro servidor ftp, desde un pc con windows7 abrimos una consola y nos conectamos colocando los siguientes datos.
ftp (la ip de nuestro servidor)
nombre de usuario en nuestro caso john, contraseña de usuario
y si tenemos éxito dirá login successful.

como dato anexo vsftpd por políticas de seguridad no deja escribir en la raíz de la carpeta ftp, es por esta razón que debemos crear sub-carpetas como las que realizamos anteriormente, si ud no asigna seguridad 555 a la carpeta de usuario (en mi caso john o raíz) al momento de conectarnos al servidor FTP nos arrojara el siguiente mensaje.
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()". y si logran ingresar , al crear una carpeta arrojara el error 550 operation failed". esto debido a que vsftpd no deja escribir en la raiz.
si ingresamos a cualquiera de nuestras sub-carpetas podremos realizar lo que deseamos en este caso ingrese a la sub-carpeta mp3 y cree la carpeta musica500 OOPS: vsftpd: refusing to run with writable root inside chroot ()". y si logran ingresar , al crear una carpeta arrojara el error 550 operation failed". esto debido a que vsftpd no deja escribir en la raiz.

como mencione denante esta configuración es de enjaulamiento en la siguiente imagen queda demostrado tratare de salir de la carpeta john pero automáticamente me vuelve a mi perfil.
















































