Instalación y configuración de un servidor ftp con vsftpd en Linux
Instalación y configuración de un servidor ftp con vsftpd en Ubuntu Server 14.04
-
Instalación
En Linux, antes de hacer cualquier instalación, hay que actualizar la liste de los paquetes con
apt-get update y se instala el servicio ftp con
apt-get instal vsftpd
Una vez instalado. Comprobar con los siguientes comandos
Comprobar con navegador poniendo ftp://[ip de servidor ftp] Te preguntara los datos de usuario que sería un usuario de la máquina, a este nivel, solo para comprobar que funciona el servicio instalado.
-
Configuración
2.1. Abrir archivo /etc/vsftpd.conf y hacer cambios de la siguiente manera. Use
nano -c para que se muestra la numeración de línea mientras modificando el ficheros.
Des-comentar la linea 14 listen = YES Para que el servidor ftp se inicie con el sistema. (nota: en las nuevas versiones del vsftpd, viene habilitado por defecto)
Des-comentar las líneas de abajo (línea no:26, 29 y 33).
- 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.
- local_enable = YES : Para poder conectarse con los usuarios locales del servidor donde está instalado.
2.2. Descomentar la línea de abajo (línea no: 120) para impedir el acceso a las otras carpetas fuera del directorio de inicio de cada usuario.(también llamado enjaular usuarios ftp)
- 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.
Los usuarios que no les quieren anjaular, meten sus nombre en esta list de vsftpd.chroot_list
2.3. y añadir la siguiente línea al final para permitir la escritura
2.4. Añada las siguientes líneas para activar el modo pasivo para máximo de 100 conexiones
2.5. service vsftpd restart para reinicia el servicio
2.6. Ahora el servidor ftp escuchará en el puerto 21.
Crear grupo de usuario para FTP
Los usuarios que se conectarán no tendrán acceso al servidor vía SSH o Shell Local por lo tanto debemos darles permisos especiales.
Cuando se instala vsftpd, se crea un grupo y usuario llamado ftp por defecto
podes confirmarlo/verificarlo con el comando egrep -i «^ftp» /etc/group
2.7. Habilitar una shell fantasma para que los usuarios ftp no puedan entrar a la consola del servidor.
Prefiero /usr/sbin/nologin por que es recién que /bin/false o /bin/true ya que el primero tiene un fichero /usr/sbin/nologin donde se puede personalizar un mensaje para cuando estos usuarios intenta a inicia sesión en la consola del servidor
«/ usr / sbin / nologin está ddiseñado específicamente para reemplazar una cáscara y produce salida de queja no se puede acceder al sistema. Antes de que existiera, era común el uso de / bin / false para los usuarios ficticios, pero podría ser confuso ya que el usuario no sabe por qué están rechazado el inicio de sesion.»
Permitir el acceso de inicio de sesión para el usuario nologin. Abrir /etc/shells y añadir la siguiente línea al final.
Crear usuarios para FTP
Para los usuarios que pertenecerá al grupo ftp, creamos la carpeta del usuarios ftp en el servidor, será donde los usuarios ftp tendrán sus carpetas personal, todos en un directorio raíz para facilitar la administración.
Crear usuario con el siguiente comando. Usa Shell /usr/sbin/nologin para evitar el acceso a la Shell para los usuarios ftp.
useradd -g ftp -d /home/usuariosftp/nombre -m -s /usr/sbin/nologin -c «Nombre completo» nombre
Los parámetros que usamos en la línea anterior:
- -g ftp = el usuario pertenece al grupo ftp.
- -d /home/usuariosftp = El directorio principal del usuario es /home/usuariosftp/pepe
- -m = Para que se crear automáticamente el home del usuario pepe dentro de la raiz /home/usuariosftp
- -s /usr/sbin/nologin = El usuario no tendrá acceso al shell de sistem, asi no puedo inicia sesión en el servidor (solo ftp)
- -c “Manolito Pepe” = el nombre completo del usuario.
- pepe = la última palabra será el nombre de usuario
Creamos la contraseña para el usuario:
Comprobación de los usuarios ftp
Ahora trata de conectar a este servidor ftp con el nombre de usuario en el puerto 21 usando cliente ftp como FileZilla o WinSCP y asegurarse de que el usuario no puede acceder a las otras carpetas fuera de su directorio principal.
Este usuario no puede inicia sesion al consola del servidor como dijo antes con la directivas nologin.
Otro usuario de servidor, pero este es nuestro administrador que ne esta enjaulado, ya vera como el usuario administrador tiene acceso a otras carpetas, por que su nombre esta listado en el fichero /etc/vsftpd.chroot_list
- Clientes FTP.
También podemos habilitar la conexión a usuarios anónimo si nuestra ftp será usado por usuarios q no tengan cuenta ftp o local en nuestro servidor ftp
Esto se configura modificando las directivas en el fichero de configuración vsftpd.conf que está en /etc cambiado la línea 23 anonymous_enable=NO por anonymous_enable=YES
Reinicia el servicio con service vsftpd restart y haz comprobación.
Conecta como usuario anónimo te lleva a /srv/ftp que es la carpeta pública por defecto
Ahora ya tenemos un servidor FTP funcionando y con los privilegios adecuados para que nuestros usuario puedan almacenar archivos debidamente separados
Tenga en cuenta el uso de ftp en el puerto 21 es un gran riesgo para la seguridad. Es muy recomendable usar ftpes. Continuamos con la configuración para asegurar FTP integrando la seguridad ssl
Nelson
2 septiembre, 2015 at 00:17
Muy bueno tu aporte. Lo he seguido al pié de la letra, pero al llegar al punto 2.6 el servidor no tiene el puerto 21 abierto. Estoy usando un ubuntu server ¿Me podrías ayudar con esto?
Me gustaMe gusta
Rolando Nguba
2 septiembre, 2015 at 00:46
Estaba abierto el puerto 21 cuando instalaste el daemon «vsftpd»? que version del ubuntu estas usando? deberia actualizar el repositorio de los paquetes antes de instala para que tenga a version mas reciente.
Me gustaMe gusta
Nelson
2 septiembre, 2015 at 00:49
Muchas gracias por tu pronta respuesta. He comenzado a configurar de 0 el archivo de vsftps.conf. He seguido tus pasos hasta el punto 2.1 y me está funcionado perfecto. Voy a serguir probanado de a uno los puntos y te aviso en cual tengo el problema.
Saludos
Me gustaMe gusta
Rolando Nguba
2 septiembre, 2015 at 00:55
Venga!,
Por las primeras, veces se puede comete error en edita el fichero de configuración, por eso que siempre hay q guarda una copia del fichero en cada punto que esta progresando.
Me gustaMe gusta
Luisa Fernanda Arango
20 septiembre, 2015 at 19:02
Disculpe, tengo una pregunta inicialmente desde ubuntu se conecto al servido con la dirección 192.169.1.9 pero después cuando estaba como cliente en filezilla se conecta con la dirección 192.168.56.9. hice todos los pasos, pero no me puedo conectar al servido desde filezilla
Me gustaMe gusta
Rolando Nguba
23 septiembre, 2015 at 15:52
Estaba de vacaciones
Me puedes decir exactamente el error que salta en file zilla? si no ha asegurado (anade ssl en la conexiones) se puede conectar basicamente pero si has asegurado, tiener que eligir/personliza conectar ssl explicit en file zila. esta noche (condicional), si puedo, le voy hacer unas capturas.
Me gustaMe gusta
Christian
8 noviembre, 2016 at 18:43
Excelente tu aporte Rolando.
Me gustaMe gusta
Emi “Dark4staR” Harastasan
11 enero, 2017 at 01:35
Muy buena guia me ha ayudado mucho!
Me gustaMe gusta
Alejandro Caceres
12 enero, 2017 at 18:15
Muy buenas yo tengo un problemas con eso de los privilegios de navegación de los usuarios, por ejemplo tengo 2 usuarios que son los que suben los archivos al ftp, pero necesito agregar 1 usuario adicional digamos «invitado» el cual pueda ver y descargar lo que los 2 usuarios suban. EL problema es que no logro hacer que el Usuario Invitado tenga acceso a las otras 2 carpetas. Alguna recomendacion de como solucionar eso?
Me gustaMe gusta