En este tutorial vamos a hablar de cómo instalar y configurar un servidor FTP con restricción de usuarios en Debian / Ubuntu, proftp es un servidor de ftp robusto y fácil de configurar vamos a ver como lo instalamos:
Este tutorial está basado en la sigueinte guÃa http://ubuntuforums.org/showthread.php?t=79588
Primero para instalarlo ejecutamos el siguiente comando:
Ubuntu
sudo apt-get install proftpd
Debian (como root)
apt-get install proftpd
Aparece una pantalla para que elijas entre dos opciones inetd o standalone, ahorita no voy a explicar cuales son las ventajas y desventajas de cada una te acosejo que elijas standalone a menos que ya hayas utilizado inetd.
Luego por razones de seguridad vamos a crear un shell falso para el acceso de ftp para esto vamos a agregar una linea en el archivo /etc/shell:
Ubuntu
sudo gedit /etc/shells
Debian
nano /etc/shells
Nota: Si estamos en la consola también podemos editar los archivos con vim
Y agregamos la siguiente lÃnea al final del archivo:
/bin/false
Esto va a evitar que cualquier usuario que utilice el ftp puede accesar a nuestra consola de comandos
Ahora creamos un directorio donde se guardarán los archivos que compartiremos en el ftp:
cd /home sudo mkdir FTP-public
Ahora vamos a crear un usuario para accesar al ftp con los siguientes comandos:
sudo useradd userftp -p tu_password -d /home/FTP-public -s /bin/false
Claro puedes cambiar userftp por el nombre que quieras y coloca el password en donde dice tu_password.
Analicemos un momento este comando, useradd permite añadir un usuario le estamos dando las siguientes opciones: -p para definir el password, -d para definir cual va a ser el directorio principal o home del usuario y -s para indicarle cual es el shell por defecto del usuario, para más información de este comando puedes colocar man useradd en la consola.
Ahora vamos a crear dos directorios más para separar los archivos de subida y bajada:
sudo mkdir /home/FTP-public/download
sudo mkdir /home/FTP-public/upload
Ahora tenemos que especificar los permisos de lectura y escritura para estos directorios:
sudo chmod 755 /home/FTP-public sudo chmod 755 /home/FTP-public/download sudo chmod 777 /home/FTP-public/upload
Es importante recalcar que si tienes instalado un servidor Web como el que se explica aquà puedes crear las carpetas dentro de /var/www/tu_sitio para que tengas un FTP dentro del sitio web que estes usando y crear varios usuarios de FTP con distintos privilegios.
Ahora veamos el archivo de configuración del proftp que se encuentra en /etc/proftpd/proftpd.conf para esto ejecutamos:
sudo gedit /etc/proftpd/proftpd.conf
o si lo queremos editar en la consola con vim
sudo vim /etc/proftpd/proftpd.conf
A continuación presento el archivo de configuración proftpd.conf los comentarios de que hace cada directiva están dentro del archivo:
# Para aplicar los cambios tienes que reiniciar el servidor FTP AllowOverwrite on AuthAliasOnly on # Escoge aqui un alias para tu usuario de FTP UserAlias vensign userftp ServerName "Vensign FTP" ServerType standalone DeferWelcome on MultilineRFC2228 on DefaultServer on ShowSymlinks off TimeoutNoTransfer 600 TimeoutStalled 100 TimeoutIdle 2200 DisplayChdir .message ListOptions "-l" RequireValidShell off TimeoutLogin 20 RootLogin off # Aqui creamos los archivos de logs que son de mucha utilidad en caso de fallos ExtendedLog /var/log/ftp.log TransferLog /var/log/xferlog SystemLog /var/log/syslog.log #DenyFilter *.*/ # No vamos a utilizar el archivo /etc/ftpusers file # (sirve para colocar adentro los usuarios que no queremos que se conecten) UseFtpUsers off # Permitir reiniciar una descarga (muy util en caso de que se caiga la conexion) AllowStoreRestart on #El puerto 21 es el estandar para FTP, #es bueno cambiarlo por razones de seguridad #aqui escogi el 1980 puedes escoger el que quieras Port 1980 # Para evitar ataques de DoS (negacion de servicio), se recomienda # colocar un maximo de 30 procesos hijos. Si necesitas mas conexiones # que esta simplemente aumenta este valor. Esto solo funciona con el # servidor en modo standalone MaxInstances 8 # Coloca el usuario y el grupo al que el servidor normalmente funciona User nobody Group nogroup # Umask 022 es un buen valor por defecto para evitar que nuevos archivos y directorios # sean escribibles por todo el mundo o por el grupo. Umask 022 022 PersistentPasswd off MaxClients 8 MaxClientsPerHost 8 MaxClientsPerUser 8 MaxHostsPerUser 8 # Despliega un mensaje despues de que ingresa un usuario AccessGrantMsg "Bienvenidos a Vensign !!!" # Este mensaje es mostrado por cada intento de ingreso sea bueno o no ServerIdent on "estas en Vensign" # Coloca a /home/FTP-public como el directorio principal (home) DefaultRoot /home/FTP-public # Bloquea a todos los usuarios al directorio home que definimos DefaultRoot ~ MaxLoginAttempts 5 #Ingresos validos solo permitimos a userftp <Limit LOGIN> AllowUser userftp DenyALL </Limit> #Definimos los permisos de los directorios que creamos para el FTP <Directory /home/FTP-public> Umask 022 022 AllowOverwrite off <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD> DenyAll </Limit> </Directory> <Directory /home/FTP-public/download/*> Umask 022 022 AllowOverwrite off <Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD> DenyAll </Limit> </Directory> <Directory> /home/FTP-public/upload/> Umask 022 022 AllowOverwrite on <Limit READ RMD DELE> DenyAll </Limit> <Limit STOR CWD MKD> AllowAll </Limit> </Directory>
Con este archivo de configuración tendrás un servidor FTP funcionando con el usuario vensign (como alias de userftp) y con el password que colocaste más arriba, cuando creaste el usuario, además definimos como puerto de conexión 1980, para que haga efecto la configuración debemos reiniciar el servidor FTP ejecutando:
sudo /etc/init.d/proftpd restart
Para conectarte desde un cliente FTP debes recordar colocar como puerto de conexión 1980 como lo definimos en el archivo de configuración.
Bueno eso es todo por ahora, después colocaré un par de tutoriales más acerca de proftp para podernos conectar vÃa SSL y algunas otras cosas de seguridad.
Espero sus comentarios
Saludos
Olivers
hola Olivers leyendo la configuracion de proftpd
tengo duda en esta parte
# Coloca el usuario y el grupo al que el servidor normalmente funciona
User nobody
Group nogroup
estoy en CentOS y no se con que usuario y grupo trabaje proftp en esta distribucion
gracias buen aporte, estoy iniciando en el mundo de ubuntu y linux
Hola…
Me pareció muy clara tu explicación de cómo instalar y poner en marcha el servidor proftpd e intenté ponerlo en una máquina que tengo dedicada sólo para ese fin.
Te comento que soy totalmente nuevo, lo que hace mucho más difÃcil todo para mÃ, pero creo que poniendo un poco de voluntad seguramente podré lograrlo.
Cuando le di la orden de instalar el servidor, hizo un montón de cosas en el terminal para finalmente devolverme lo que yo llamarÃa el prompt tal y como estaba antes de poner sudo…….
Es decir; lejos de darme una pantalla con las dos opciones de las que hablás (inetd y standalone), se quedó ahi quietecito y esperando órdenes.
Intenté tenerar el shell falso con gedit sudo /etc/shells y me abrió el editor, pero me lo abrió en sudo. Clickeé en la solapa shells y pude ver varios renglones con sentencias que no conozco; pero al intentar agregar la lÃnea /bin/false me encontré con que no me deja. Es decir, no me permite agregar una lÃnea más.
Avancé y pude generar el directorio FTP-public pero supongo que no está bien que siga adelante intentando nada más, sabiendo que hay cosas pendientes, y por eso me decidà a escribirte.
Espero me respondas porque dejaré todo stand-by hasta que me digas cómo resolver los temas que quedaron en el camino.
Desde ya te doy las muchas gracias.
Hola Roberto gracias por tu comentario.
Vamos a ver por partes:
1. La lÃnea de gedit sudo /etc/shells estaba mal en el tutorial ya fue corregida disculpa por eso es sudo gedit /etc/shells con este comando ya no deberÃas tener problemas.
2. En cuanto a lo de inetd y standalone si ves en el archivo de configuración de proftpd.conf (que se encuentra en /etc/proftpd/proftpd.conf) el que tienes que modificar para agregar los directorios y puedes ver como modifcarlo en el tutorial hay una lÃnea que dice:
ServerType standalone
Si está asà está en modo standalone y no te tienes que preocupar por nada.
Espero que te sirva y que sigas aprendiendo más.
Si quieres puedes anotarte en nuestro boletÃn de noticias que es el cuadro amarillo a la derecha.
Saludos
Hola. Para empezar muchas gracias por la aportación. Llevo varios dÃas buscando por la red y es lo más claro q he llegado a encontrar. Te agradecerÃa que me ayudaras con el problema que me da al reiniciar el servidor:
sudo /etc/init.d/proftpd restart
* Stopping ftp server proftpd [ OK ]
* Starting ftp server proftpd – Fatal: unknown configuration directive ‘DisplayFirstChdir’ on line 27 of ‘/etc/proftpd/proftpd.conf’
[fail]
Llevo varios años con Ubuntu, pero en el tema de crear un ftp soy nuevo y me está resultando mucho más difÃcil de lo q pensaba. Qué puedo hacer con esto? Muchas gracias.
Hola Diego gracias por tu comentario, lo que pasa es que en la nueva versión de Proftpd la opción DisplayFirstChdir ahora es obsoleta y la reemplazó DisplayChdir simplemente ve a la lÃnea 27 del archivo de configuración /etc/proftpd/proftpd.conf y cambia la lÃnea de DisplayFirstChdir a DisplayChdir e intenta reiniciar el servidor nuevamente con:
sudo /etc/init.d/proftpd restart
Con esto se deberÃa solucionar el problema, ya hice el cambio en el archivo del tutorial.
Cualquier otra duda vuelve a escribir
Saludos
hago todo tal cual, pero cuando va a analizar mi contraseña para entrar me la rechaza
Respuesta: 331 Password required for Casy
Comando: PASS ****
Respuesta: 530 Login incorrect.
Error: Error crÃtico
Error: No se pudo conectar al servidor
que puede estar pasando?
Hola Matias pueden ser varias cosas:
1. Debes estar seguro que asà escribiste el nombre de usuario, es sensitivo a mayúsculas por lo que Casy no es lo mismo que casy
2. Tienes que revisar en el archivo de configuración donde está esta lÃnea:
AllowUser userftp
Que hayas cambiado userftp por Casy si lo cambias recuerda reiniciar el servidor ejecutando:
sudo /etc/init.d/proftpd restart
Si sigues teniendo problemas vuelve a escribir y si solucionas también para saber que era y como lo hiciste
Saludos
Hola,
Inento conectarme al ftp y me dice 530 login incorrect;
Aver que me entere bien, en AllowUser que ay que poner; AllowUser el usrario a indentificarme i al lado el userftp, que es el nombre que puse anteriormente cuando cree.
osea que para iniciarme en el ftp tengo que poner el nombre que viene despues de AliasUser y la contraseña es la que puse anteriormente, si es asin no me funciona.
Saludos y aver si lo soluciono.
Gracias
Hola que tal, soy nuevo en esto del ubuntu, me toco instalar el proftpd pero tengo un problema que no me deja guardar archivos en la carpeta que le asigne y puse lo siguiente en la linea,
— CREACION DE DIRECTORIO —
sudo mkdir /home/santiago
— CREACION DE USUARIO
useradd -d /home/santiago -s /bin/false santiago
— SE LIGA EL USUARIO CON LA CARPETA —
sudo chown -R santiago /home/santiago
— ASIGNACION DE PASSWORD
sudo passwd santiagofc
ME POYAN POR FAVOR, GRACIAS..
SALUDOS
Hola gente para poder solucionar el inconveniente de 530 Login incorrect.
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
lo que hice fue lo siguiente:
comente la linea que dice UserAlias y puse AuthAliasOnly en off es decir.
QuedarÃa algo asÃ:
# Para aplicar los cambios tienes que reiniciar el servidor FTP
AllowOverwrite on
AuthAliasOnly off
# Escoge aqui un alias para tu usuario de FTP
# UserAlias vensign userftp
Espero que les sirva, gracias.
Hola Fideo, ese consejo no es correcto, si lees bien el manual debes crear el usuario que vas a utilizar para el FTP y cambiar la linea de UserAlias por el del usuario FTP que creaste
Saludos
Olivers
Hola,
He configurado el servidor siguiendo todos los pasos del manual y recibo el mensaje:
Respuesta: 331 Password required for Casy
Comando: PASS ****
Respuesta: 530 Login incorrect.
Error: Error crÃtico
Error: No se pudo conectar al servidor
También he seguido las sugerencias posteriores y no lo consigo. Cual puede ser el problema?
Amigo Olivers, grandioso articulo, de verdad llevo tiempo intentando hacer un servidor ftp en linux, y el tuyo esta muy explicito y facil de entender y de aplicar.
Amigo user81, tuve el mismo problema intentando entrar desde Filezilla, y el problema no es en el servidor sino en el cliente, ya que el servidor esta configurado para usar conexiones activas, y por ejemplo el filezilla tiene por defecto buscar el tipo de conexion automatico y ahi radica el problema.
Lo probe desde Debian con GFTP y ningun problema.
Desde windows con Filezilla, Vamos a Archivo -> Gestion de Sitios, creamos el usuario, ponemos el puerto, y cambiamos la autentificacion de “anonimo” a “normal”, despues ponemos el usuario y la contraseña.
Una vez terminado, vamos a la tercer pestaña que dice “Transfer Settings” y ahi cambiamos “Por Defecto” a “Activo” y damos conectar y listo.
La otra forma de probar que funciona es desde modo ms-dos o consola, en inicio-> ejecutar ->cmd y ahi ponemos: ftp direccion-ip, en donde direccion-ip es la direccion de tu servidor ftp, te pregunta el login y la contraseña y debes de poder entrar.
Para salir solo tipeas: bye.
Espero te sirva!!
Hola, queria saber que fichero se edita para que cuando se haga ftp+ ip no pida el usuario y password y entre de un solo?
de antemano gracias.
Pingback: Servidor FTP con proftp en Ubuntu / Debian
Pingback: configurar UserPassword de ProFTPD (Xampp en Linux) » ZeroKelvins
Gracias por la informacion me fue de mucha ayuda para poder montar el servidor
Hola gracias por la info pero es que tengo un par de problemas. 1) si coloco el directorio del usuario para ftp en mi sitio web /var/www/sitioweb/Ftp-Public no de me deja subir nada, pero si hago /home/Ftp-Public si me deja y el 2) es que no puedo descargar lo que subo que sera?? tiene los permisos 777… Gracias
Hola.
Seguà todos los pasos.
El problema es que no me puedo conectar con el nombre de usuario y contraseña que establecÃ.
Leà los mensajes anteriores y ya revisé que estén correctamete el nombre de usuario y contraseña.
No me puedo conectar ni utilizando el filezilla ni por el navegador desde el servidor.
Muchas Gracias y muy clara la información.
Hola Nicolas nos puedes decir cual es el error que te arroja cuando te intentas conectar?
Hola, el error que sale es 530 error de login
Gracias por responder.
Hola, les comento que pude solucionar lo del error 530 de login.
Lo que hice fué en vez de colocar el nombre de usuario en filezilla fué colocar el alias que habÃa definido en el archivo de configuración.
UserAlias vensign userftp
Entonces puse “vensing” en lugar de userftp.
Saludos y gracias por la atención.
Lo que necesito ahora realizar es que varios usuarios puedan acceder a diferentes carpetas (sitios web) y que tengan diferentes permisos.
Solicito ayuda nuevamente. Gracias.