sábado, 22 de septiembre de 2018

Cómo instalar vsftpd en Linux Ubuntu 16.04 y configurarlo correctamente

Instalar vsftpd en Ubuntu


Para instalar vsftpd en Ubuntu 16.04 empleamos el comando:

sudo apt-get install vsftpd

Para iniciar, detener y reiniciar el demonio de vsftpd los comandos para iniciar, detener y reiniciar vsftpd son:

sudo systemctl restart vsftpd
sudo systemctl start vsftpd
sudo systemctl stop vsftpd

Configurar vsftpd en Ubuntu


Para añadir un usuario ejecutamos el comando:

sudo adduser miusuario 

Nos solicitará que introduzcamos una contraseña. Usaremos este usuario para acceder al servidor FTP.  En nuestro caso el chroot sería /home/miusuario. Además, se deben cumplir dos condiciones:

El dueño de la carpeta chroot y el usuario que se conecta por FTP no pueden ser el mismo.

La carpeta chroot no puede tener permisos de escritura.

Así que debemos cambiar el dueño de esta carpeta con el siguiente comando:

sudo chown root:root /home/miusuario

Si queremos que el usuario pueda subir archivos al servidor FTP,  necesitamos crear una carpeta:

sudo mkdir /home/miusuario/ftp_subidas

sudo chown miusuario:miusuario /home/miusuario/ftp_subidas

Es importante quitar el acceso al intérprete de comandos (shell) del usuario miusuario que agregamos, puede suponer un grave riesgo de seguridad. El problema está en que al quitar acceso a la shell, vsftpd no dejará acceder al servidor FTP porque el usuario no tiene una shell válida asignada. Para solucionar esto creamos una shell personalizada, que añadimos a la lista de shells válidas y finalmente asignamos esta shell a nuestro usuario.

sudo nano /bin/ftponly

Añadimos las siguientes líneas y guardamos el archivo:

#!/bin/sh
echo "Esta cuenta solo dispone de acceso por FTP."

Damos permisos de ejecución a la shell ftponly con el comando:

sudo chmod a+x /bin/ftponly

Editamos la lista de shells válidas con el comando:

sudo nano /etc/shells

Añadimos /bin/ftponly al final de la lista:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/ftponly

Asignamos la shell ftponly a nuestro usuario:

sudo usermod miusuario -s /bin/ftponly

No debemos usar shell nologin  o estaremos creando un problema de seguridad grave.

Ya tenemos nuestro usuario listo. Ahora editamos el archivo de configuración de vsftpd con el comando:

sudo nano /etc/vsftpd.conf 

Hay que modificar el archivo eliminando el carácter # en las partes correspondientes y haciendo las modificaciones tal y como se muestra a continuación:

# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
...
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#

Reiniciamos vsftpd con:

sudo systemctl restart vsftpd

Y probamos que todo funcione correctamente.

Cómo enviar un archivo por FTP

Hacemos un ifconfig para obtener la IP del servidor Ubuntu.

Cómo enviar un archivo por FTP


Nota VirtualBox (si estamos en una máquina virtual)
Y la IP es la 10.0.2.15 es porque nuestra máquina virtual está con adaptador NAT, hay que cambiarlo a adaptador puente, en máquina-> configuración-> red y en conectado a. Elegimos adaptador puente.

Para probar el FTP desde un equipo cliente de Windows abrimos la consola tecleando cmd en buscar programas y archivos de la barra de inicio de Windows. Hacemos ping al servidor para ver si tiene conexión.

Cómo enviar un archivo por FTP

Usaremos el comando ftp, desde un equipo cliente de Windows. El comando ftp permite a los usuarios interactuar con servidores FTP y gestionar los archivos del servidor remoto.  A continuación abrimos el servicio ftp con open y la IP. 

FTP


Introducimos el usuario que hemos creado en el servidor (usuarioftp) e introducimos su contraseña. Después ponemos dir para ver los directorios del servidor.

FTP por comandos

Con el comando FTP put enviamos un archivo desde el equipo cliente al servidor.
Ponemos en la consola ftp:

put (ruta Windows archivo origen\nombre_archivo)  (ruta Linux destino/nombre archivo)

FTP por comandos


En este ejemplo hemos indicado que se guarde dentro de la carpeta ftp_subidas,  esta carpeta tiene que existir y tener permisos de escritura para nuestro usuario. Si no especificamos un nombre de archivo remoto, se empleará el nombre del archivo local.

Para finalizar, nos desconectamos del servidor FTP con el comando:
quit

Subir archivos por FTP desde FireFTP

Para acceder al servidor ftp desde el equipo cliente, también podemos abrir la consola gráfica de FireFTP y desplegamos el combo superior izquierdo y elegimos crear una cuenta.

Subir archivos por FTP desde FireFTP

Nos abre una pantalla donde en servidor ponemos la IP del servidor y en usuario el usuario creado anteriormente en el servidor y su correspondiente contraseña y aceptamos.

Gestión de cuentas FireFTP


Ahora basta con pulsar en conectar y nos abre una interfaz gráfica donde podremos transferir fácilmente los archivos.  
  
Transferencia de archivos FireFTP

Conviene transferir los archivos a directorios específicos para la transferencia, con los permisos adecuados.

Acceder como usuario anónimo

Un usuario anónimo permite acceder al servidor FTP sin contraseña, es útil para distribuciones públicas de archivos de sólo lectura. El usuario se deberá identificar con el nombre Anonymous.

En el servidor FTP de linux debemos editar el archivo /etc/vsftpd.conf para poner:

anonymous_enable=YES

También es necesario  habilitar un directorio raíz para los usuarios que se conecten con esta cuenta. En este caso crearemos la carpeta ftp_anon en el directorio /home con el siguiente comando:

sudo mkdir /home/ftp_anon

Después al fichero de configuración /etc/shells le añadimos la nueva carpeta creada indicándole que se trata de una carpeta anónima, añadimos la línea:

anon_root=/home/ftp_anon

Por defecto el acceso anónimo se realiza en modo lectura, en caso de que queramos darle permisos de escritura, tendremos que añadir en /etc/vsftpd.conf  las propiedades:

write_enable = YES
anon_upload_enable = YES
anon_mkdir_write_enable= YES

Finalmente para permitir la escritura, creamos una carpeta colgando del directorio raíz con todos los permisos y como propietario del usuario ftp.

sudo mkdir /home/ftp_anon/testeo
sudo chown ftp:ftp /home/ftp_anon/testeo
sudo chmod 777 /home/ftp_anon/testeo

Ahora cuando un usuario anónimo suba un fichero, marcará como único propietario al usuario ftp. Esto dificulta a otros usuarios locales el acceso, para evitarlo en vsftpd.conf ponemos

anon_umask=022

Hecho esto, desde un equipo cliente creamos una cuenta FireFTP como anónimo.

Usuarios anónimos FTP


Al conectarnos le indicamos de nuevo que es anónimo.

Usuarios anónimos FTP


Usuarios locales

Los usuarios locales registrados en el sistema operativo tendrán acceso al servicio FTP si en el archivo de configuración /etc/vsftpd.conf  tenemos la siguiente línea:

local_enable=YES


Reiniciamos el servicio con sudo systemctl restart vsftpd cualquier usuario de la máquina tendrá acceso al servicio.

El usuario accederá a su carpeta personal /home/usuario Pero si queremos que la carpeta personal de cada usuario se convierta en su raíz, entonces habilitamos esta línea en el archivo de configuración.

chroot_local_user=YES

Si queremos que los usuarios anónimos tengan permisos de escritura tendremos que poner también 

write_enable = YES

Implementar y administrar cuotas de disco en Linux 


apt-get install quota quotatool
sudo nano /etc/fstab

Implementar y administrar cuotas de disco en Linux

Implementar y administrar cuotas de disco en Ubuntu

touch aquota.user aquota.group quota.user quota.group
quotacheck –fvagum
quotatool –u usuarioftp
quotatool –u usuarioftp –bq 5M –l 8Mb /


No hay comentarios:

Publicar un comentario