
La instalación y configuración de vsftpd, para algunos el servidor FTP más seguro del mundo, es muy fácil e intuitiva. El problema viene con ciertas particularidades y, sobre todo, con los errores ‘500 OOPS: vsftpd: refusing to run with writable root inside chroot()’ y ‘530 Login incorrect’ que no dejan conectarse con un usuario local del servidor. Vayamos por partes.
Instalación
Como en la mayoría de los programas básicos, se puede instalar mediante apt o yum según tu sistema. Yo lo he hecho en un Ubuntu Server 12.04 así que el comando sería el siguiente:
sudo apt-get install vsftpd
También puedes descargarlo de su web oficial.
Configuración
vsftpd
Vamos a abrir el fichero de configuración del vsftpd y analizar los puntos más importantes:
sudo nano /etc/vsftpd.conf
Hay muchos parámetros que podemos configurar, pero esto estaría lo básico:
- listen = YES
Para que se inicie con el sistema.
- anonymous_enable = NO
No permitimos que usuarios anónimos puedan conectarse a nuestro servidor. Es por seguridad, pero si tú quieres permitirlo tendrás que configurar algunos parámetros más para que no puedan trastear mucho.
- local_enable = YES
Para poder conectarse con los usuarios locales del servidor donde está instalado.
- write_enable = YES
Si quieres que los usuarios puedan escribir y no sólo descargar cosas.
- local_umask = 022
Esta máscara hace que cada vez que subas un archivo, sus permisos sean 755. Es lo más típico en servidores FTP.
- chroot_local_user = YES
chroot_list_enable = YES
Sirven para que los usuarios locales puedan navegar por todo el árbol de directorios del servidor. Evidentemente esto sólo queremos permitírselo a ciertos usuarios, para ello tenemos el siguiente parámetro.
- chroot_list_file = /etc/vsftpd.chroot_list
Indicamos el fichero donde están listados los usuarios que pueden navegar hacía arriba por los directorios del servidor, lo normal es que sea el administrador del servidor y poco más.
Hay pocos parámetros más, pero si quieres échales un vistazo porque vienen bien explicados en el propio fichero.
vsftpd.chroot_list
Este fichero no suele existir así que debemos crearlo y editarlo. Aquí irán los nombres de usuarios que queremos que puedan listar todos los directorios del servidor y no sólo el suyo asignado por FTP. Esto viene bien para usuarios administradores.
sudo nano /etc/vsftpd.chroot_list
Este comando te abrirá un documento vacío, pon en cada línea un nombre de usuario.
Grupo FTP
Todos los usuarios que queramos utilizar para FTP deben estar albergados en el mismo grupo para así darles unos permisos especiales como no poder conectarse por SSH al servidor.
Creamos el grupo:
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:
Usuario FTP
Lo primero es crearle una carpeta de usuario. Puedes hacerlo donde tú quieras, pero yo suelo meterles a todos en una subcarpeta del home general.
Creamos la carpeta para meter a los usuarios:
Creamos la carpeta del usuario particular:
sudo mkdir /home/ftp/antonio
Creamos el usuario:
sudo useradd -g ftp -d /home/ftp/antonio -c "Antonio Garcia Lopez" antonio
Explicación:
-g ftp => el usuario pertenece al grupo ftp
-d /home/ftp/antonio => el directorio principal del usuario es /home/ftp/antonio
-c «Antonio Garcia Lopez» => el nombre completo del usuario es Antonio Garcia Lopez
antonio => la última palabra será el nombre de usuario
Ahora le asignamos una contraseña:
Y finalmente le asignamos la shell fantasma:
sudo usermod -s /bin/ftp antonio
Este paso se podía haber hecho al crear el usuario, pero lo dejo separado por si queremos asignarle la shell fantasma o no.
Errores conocidos
530 Login incorrect
Este error es el más común con la última versión del vsftpd. Es un gran quebradero de cabeza con una solución muy simple:
sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Este error se da porque vsftpd no permite que los usuarios puedan escribir en su carpeta raíz. Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.
sudo chmod 555 /home/ftp/antonio
sudo mkdir /home/ftp/antonio/documentos
sudo chown antonio:ftp /home/ftp/antonio/documentos
Con todo esto ya deberías poder acceder al servidor FTP con cualquier usuario del sistema sin ningún problema.