Instalar FTP Server en Ubuntu 12.04

FTP (siglas en inglés de File Transfer Protocol, ‘Protocolo de Transferencia de Archivos’) en informática, es un protocolo de red para latransferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.

Vamos a usar el ftp server que recomienda ubuntu, vsftpd, es ligero, robusto, escalable y seguro.

Instalamos el server ftp:

~$ sudo apt-get install vsftpd

Ya lo tienes funcionando pero con la configuración por defecto. Esta configuración no se adapta al uso común. Tienes un server escuchando en el puerto 21 con acceso anonymous y permisos de lectura.  El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza entexto plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor y/o apropiarse de los archivos transferidos. /home/ftp que por defecto esta vacio. Aqui podría haber un agujero de seguridad si no administramos bien los permisos, por ello lo mejor es retirar el acceso anonimo.
Abrimos el archivo de configuración: sudo gedit /etc/vsftpd.conf
Realizmos los siguientes cambios:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
ftpd_banner=Bienvenid@s al Servidor FTP X
chroot_local_user=YES
  • Reiniciamos el server FTP : sudo /etc/init.d/vsftpd restart
  • Ya esta nuestro login será nuestro usuario y contraseña de linux, hay que olvidarse de crear cuentas FTP ni historias así. Para añadir permisos a otros usuarios tendras que crear cuentas con adduser

Ya que termine de descargar y instalar los paquetes tenemos que hacer varios pasos para que funcione nuestro servidor ftp.

Creación del grupo.

Ahora tenemos que crear un grupo el cual controle al servicio de vsftpd de la siguiente manera:

root@server1:~#groupadd ftp

Creación del home.

Tenemos que crear el deposito o el home donde el usuario va alojar su información, cuando el servidor vsftpd termina de instalarse crea una carpeta en home quedando de la siguiente manera

/home/ftp, pero tu puedes tener tus usuarios en otras rutas como /var/ftp.
root@server1:~#mkdir /home/ftp/rodmen

Creación de shell FTP

Lo que haremos es crear un shell virtual o fantasma, para que los usuarios no puedan conectarse a una sesión del sistema operativo.

root@server1:~#mkdir /bin/ftp

Ya que lo creamos,ahora tenemos que editar el siguiente archivo.

root@server1:~#vim /etc/shells
Agregar al final del archivo /etc/ftp.
/bin/bash
/bin/rbash
/bin/ftp

Creando usuarios FTP
Para poder crear usuarios para nuestro servicio ftp se ocupa el siguiente comando.

root@server1:~#useradd -g ftp -d /home/ftp/rodmen -s /bin/ftp rodmen

Tenemos que agregarle una contraseña a nuestro usuario creado.

root@server1:~#passwd rodmen
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@server1:~#

Ahora hay que darle permiso al usuario pueda ser el dueño de su deposito.
root@server1:~#cd /home/ftp
root@server1:~#chown rodmen.ftp rodmen/ R

Ficheros de configuración

El servidor vsfptd tiene dos archivos muy importantes de configuración: /etc/vsftpd.conf Este es el archivo de configuración de nuestro servidor ftp: /etct/vsftpd.chroot_list Lista de los usuarios que van estar enjaulados.

Configuración de vsftpd

En este momento comenzaremos a configurar nuestro servidor vsftpd. Antes de se recomiendo ampliamente crear una copia de respaldo de archivo de configuración:

root@server1:~#cd /etc
root@server1:/etc#cp vsftpd.conf vsftpd.confori

Comenzaremos a editar el archivo de configuración del servicio vsftpd.conf.

root@server1:/etc#vim vsftpd.conf

En el archivo tendremos que cambiar varios parámetros:

Parámetro anonymous_enable

Desactivar acceso a usuarios anónimos, para mayor seguridad.
anonymous_enable=NO

Parámetro local_enable

Permitir a los usuarios autenticados tener sus propias carpetas locales, le quitamos la # para que se active.
#local_enable=YES
local_enable=YES

Parámetro write_enable
Permitir el modo de escritura en su carpeta, le quitamos el #.

#write_enable=YES
write_enable=YES

Parámetro local_umask

Permitimos la a través de este parámetro enmascararlo con algún permisos en especial al momento de subir la información

#local_umask=000
local_umask=037

En este caso estamos indicándole al parámetro, va tener permisos de rwx para el usuario, r– para el grupo y — otro ningún permiso.

Enjaulando a los usuarios FTP

Habilitamos el enjaulamiento de los usuarios dentro de su directorio personal y también para acceder a sus carpetas por FTP.

#chroot_local_user=YES
#chroot_list_enable=YES
chroot_local_user=YES
chroot_list_enable=YES

Habilitamos la siguiente linea que manda a llamar aun archivo, este archivo lo tiene que crear y dentro de este agregar los cuentas de
los usuario enjaulados.

#chroot_list_file=/etc/vsftpd.chroot_list
chroot_list_file=/etc/vsftpd.chroot_list

Al terminar de configurar el archivo de vsftpd.conf

root@server1:/etc# touch vsftpd.chroot_list
root@server1:/etc#echo “rodmen”>> vsftpd.chroot_list

Control del ancho de banda

Se le pueden agregar mas opciones al final del archivo.

anon_max_rate=5100 #Ancho de banda para usuario anónimo 5kb.
local_max_rate=5100 #Ancho de banda por usuario local 5kb.
max_clients=3 #Numero máximo clientes conectados.
max_per_ip=2 #Numero máximo de conexiones por ip.

Reinicio del servidor FTP

Solo tenemos que reiniciar el servicio de vsftpd para poder cargar los cambios que hemos realizado al servidor.

root@server1:/etc#/etc/init.d/vsftpd restart
• Stopping FTP server: vsftpd [OK]
• Starting FTP server: vsftpd [OK]

Comandos FTP
Para poder utilizar ahora nuestro servidor FTP seria por medio de comandos, por esto se muestra la lista de comando de ftp y su descripcion.

COMANDOS DESCRIPCION

cd [rutaRemota] Cambia de directorio dentro del servidor remoto
lcd [rutaLocal] Cambia de directorio en el equipo local
chgrp [grp] [rutaRemota] Cambia el grupo de trabajo de un fichero remoto.
El [grp] tiene que ser un Group ID
chmod  [rutaRemota] Cambia los permisos de Lectura, Escritura o de
Ejecución a un fichero remoto
chown [own] [rutaRemota] Cambia el grupo de trabajo de un fichero remoto.
El [own] tiene que ser un User ID
get [rutaRemota] [rutaLocal] Copia un recurso remoto en un equipo local
lmkdir [rutaLocal] Crea una carpeta en el equipo local
lpwd Imprime la ruta local en la cual estamos
trabajando
mkdir [rutaRemota] Crea una carpeta en el equipo remoto
put [rutaLocal] [rutaRemota] Sube un fichero o archivo desde una ruta local
hasta una ruta remota
pwd Imprime la ruta remota en la cual estamos
trabajando
exit Salimos de SFTP
rename [rutaLocal] [rutaRemota] Renombra un un fichero remoto
rmdir [rutaRemota] Borra una carpeta remota
rm [rutaRemota] Borra un fichero remoto

Bueno eso es todo, si les sirve este pequeño tuto, comenten y siquieren mas funciones de servidor para Linux, soliciten.

Saludos

19 comentarios sobre “Instalar FTP Server en Ubuntu 12.04

  1. a mi en ubuntu 12.04 cuando instalo mediante sudo apt-get install vsftpd no me crea ninguna carpeta en /home ni se donde la puede haber creado ninguna carpeta para servir ftp

    1. Hola Oscar antes de usar $sudo gedit /etc/vsftp.conf entra en modo de super usuario digitando en tu terminal $sudo su + enter y te pedira tu clave de super usuario. Luego continua con el comando.

      1. Gracias!! ahora tengo montado!! pero ahora entro desde filezilla y me sale el siguientemensaje!! 😦

        Estado: Conectando a 192.168.158.129:21…
        Estado: Conexión establecida, esperando el mensaje de bienvenida…
        Respuesta: 220 Welcome to blah FTP service.
        Comando: USER rodmen
        Respuesta: 331 Please specify the password.
        Comando: PASS ********
        Respuesta: 530 Login incorrect.
        Error: Error crítico
        Error: No se pudo conectar al servidor

  2. Oscar si seguiste el tuto, el puerto al que vas hacer llamado es el puerto 22, en los pasos que realizamos se cambio del 21 al 22 para hacerlo mas seguro, prueba cambiando de puerto

  3. no consigo aclararme con el tema de la configuracion del ftp, por ejemplo si quiero cambiar los puertos para el sftp uno y para el ftp otro, como seria??? no encuentro ningun sitio que explique eso.

  4. simplemente magnifico aunque algo repetitivo al principio pero si tienes un poco de conocimiento de archivos en linux FUNCIONA PERFECTO!! :D…

    Gracias por el aporte 😀

    1. esto porque ya hay un ffpserver con varios usuarios, y a uno de ellos le salia lo sig: 553 Could not create file. Error: Critical file transfer error
      este usuario no puede subir archivos.
      agradeceria me ayudaras, ya que yo no cree el servidor, pero puedo seguir las instrucciones porque me interesa aprender.

      1. Hola Jelibravo, el siguiente enlace te puede aclarar sobre los privilegios de usuarios

        <>

        Muy completo, cuando tenga un poco de tiempo preparare un post sobre este tema. Saludos

  5. hola, no veo ningun enlace amigo, pero si te agradeceria mucho que hicieras un post detallado, desde como crear el FTP, crear usuario por usuario, asignar privelegios a cada usuario creado ( lectura, escritura etc)etc . saludos y gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s