domingo, 21 de abril de 2013

Instalar servidor FTP con vsftpd en Debian

En este tutorial vamos a ver como instalar el servicio más habitual para transferir archivos por la red. Para ello vamos a utilizar vsftpd que es uno de los más sencillos de configurar y además de los más seguros.

En el servidor podremos crear tantos usuarios ftp como queramos pero en este caso haremos solo uno y lo introduciremos en un grupo de usuarios para el uso exclusivo de ftp y que no tengan acceso a la shell del sistema, además no podrá salir de su directorio raíz.

EMPEZAMOS!!


Preparamos el sistema

Antes de instalar el servidor ftp vamos a crear los usuarios y securizarlos para que tengan los mínimos permisos y sólo puedan hacer lo que nosotros definamos.
Crearemos un grupo llamado ftp al cual asociaremos los usuarios que crearemos ahora o en el futuro para el uso exclusivo del ftp.

$ groupadd ftp

Ahora sí, creamos los usuarios con sus correspondientes características.

$ useradd -g ftp -d /var/www -c ”Webmaster” webmaster

Le asignamos un password al usuario/s con el comando passwd. Si no tiene password asignada no funcionará.

Ahora creamos una shell ficticia en el directorio correspondiente para que ningún usuario ftp tenga acceso a la shell del sistema.

$ mkdir /bin/ftp

Editamos el fichero /etc/shells y la añadimos en la última línea.

$ nano /etc/shells

Editamos el fichero /etc/passwd

$ nano /etc/passwd

Buscamos la línea donde está definido el usuario que hemos creado antes y le añadimos el shell falso debiendo quedar parecido a esto:

webmaster:x:1000:1006: webmaster :/var/www:/bin/ftp

Instalación del servidor FTP

Para ello ejecutamos.

$ apt-get install vsftpd

Configuración del servidor FTP

El fichero de configuración del servidor se encuentra en /etc/vsftpd.conf. Lo editaremos para configurarlo en función de las necesidades.

Necesidades del servidor

En este caso práctico los usuarios FTP no pueden tener acceso al shell del sistema, deben estar enjaulados en sus directorios raices y deben poder crear archivos y directorios en sus dominios. El servidor no admite acceso de forma anónima.

# Example config file /etc/vsftpd.conf

# El demonio esta escuchando
listen=YES

# Desactivamos el acceso anónimo
anonymous_enable=NO

# Los usuarios locales del sistema pueden conectarse al ftp
local_enable=YES

# Permitimos a usuarios escribir
write_enable=YES

# Aplica esta máscara para los archivos y carpetas propiedad del usuario
local_umask=003

# Activamos mensajes de bienvenida
dirmessage_enable=YES

# Activamos el los de subidas/bajadas de archivos
xferlog_enable=YES

# Las conexiones de transporte van al puerto origen 20 (ftp-data).
connect_from_port_20=YES

# El archivo donde guardará el log de transacciones del FTP
xferlog_file=/var/log/vsftpd.log

# El archivo de registro será en formato estándar xferlog ftpd
xferlog_std_format=YES

# Enjaulamos a los usuarios en su directorio raíz activando estas dos lineas, no permitiendoles salir de éste
chroot_local_user=YES
chroot_list_enable=YES

# Archivo que contendrá una lista de usuarios que no tendrán acceso FTP
chroot_list_file=/etc/vsftpd.chroot_list

# Para habilitar la lista de usuarios con acceso al servidor FTP
userlist_enable=YES

tcp_wrappers=YES

userlist_deny=NO


A continuación creamos el fichero vsftpd.chroot_list el cual tendrá la lista de usuarios que no tendrán acceso al servidor:

$ touch /etc/vsftpd.chroot_list

Volcamos los datos a este fichero desde /etc/password con el comando.

$ cat /etc/passwd | awk -F: ‘{ print $1 }’ > /etc/vsftpd.chroot_list

Esto nos genera un fichero con los login de usuarios del sistema del cual quitamos los que si queremos que tengan acceso y los ponemos en el fichero /etc/vsftpd.user_list.

Reiniciamos el servicio y listo

$ /etc/init.d/vsftpd restart

Ya tendríamos nuestro FTP configurado y listo para usarse!!


Para añadir VSFTPD al arranque del sistema en todos los niveles de corrida, utilice:

$ chkconfig vsftpd on

Si al subir archivos con el usuario te da error "553 Could not create file." seguramente es que no tiene permiso para escribir en el directorio por lo que deberás dar permisos en el directorio escribiendo:

$ chmod 777 ruta_carpeta_usuario

Ejemplos de ficheros

vsftpd.chroot_list
# Usuarios sin acceso al FTP
root
daemon
bin
sys
sync
games
man
lp
mail
news

vsftpd.user_list
# Usuarios con acceso FTP
webmaster

1 comentario:

  1. Muy buena explicación

    mi pregunta es, en contre un video en youtube, q te explica como linkear carpetas al directorio ftp, con este ejemplo, editando un archivo: /home/alejandro/Documentos /home/alejandro/ftp/Documentos none bind 0 0

    Pero lo que no se es como añadir carpetas de otro disco duro, me salta error.

    Sabes como puedo solucionarlo?

    ResponderEliminar