Montar Servidor FTP en Linux

SERVIDOR FTP

El Protocolo de Transferencia de Archivos (FTP) es un protocolo TCP, que nos permite subir y descargar archivos, funciona según el modelo cliente/servidor. Esta continuamente escuchando por el puerto 21 tcp para las peticiones de conexión de clientes remotos, cuando recibe una petición la gestiona, establece la conexión y ejecuta las ordenes enviadas por el cliente.

El acceso a un servidor FTP puede hacerse de dos maneras:

● anónimo.
● Autenticado.

Instalación de vsftpd.

Existen una gran variedad de servidores FTP para GNU/Linux, pero se le elige vsftpd ya que muy facil de configurar y es uno de servidores FTP mas seguros. Para poder hacer la instalación del servidor vsftpd tendremos que hacer lo siguiente.

root@server1:~#aptget update
root@server1:~#aptget install vsftpd

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 [opciones] [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

Fuente: http://www.taringa.net/posts/linux/8950780/Montar-Servidor-FTP-en-Linux-_Ubuntu_.html