Instalar Servidor FTP en Ubuntu o Raspberry Pi OS

 



Vamos a instalar un servidor FTP con conexión segura TLS para compartir nuestros archivos.

Así podemos compartir las descargas de Transmission, aMule con nuestros amigos, familia etc

En este tutorial, permitiremos que el usuario del sistema y los que se añadan posteriormente se conecten al servidor utilizando su cuenta shell local. 

Los pasos a seguir son los siguientes:

    1. Instalación del servidor

    2. Creación de directorios

    3. Configuración del servidor

    4. Añadir usuarios.

    5. Acceso al servidor

    6. Crear una carpeta compartida.

1. La instalación

La instalación es muy sencilla, basta con teclear el siguiente comando en una terminal:

 sudo apt-get install vsftpd

Una vez terminada la instalación es recomendable hacer una copia del archivo de configuración vsftpd.conf y así poder restaurarlo en caso de problemas.

Lo hacemos con el siguiente comando:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

2. Creación de directorios.

Por motivos de seguridad, tenemos que restringir el servidor FTP  a un directorio específico. Vsftpd usa jaulas chroot para lograr esto. Con chroot habilitado, un usuario local está restringido a su directorio de inicio (por defecto).

Estando posicionados en nuestra carpeta HOME, creamos nuestro directorio con:

sudo mkdir FTP

Damos propiedad a nadie y a ningún grupo del directorio FTP así:

sudo chown nobody:nogroup FTP

Y eliminamos los permisos de escritura:

sudo chmod a-w FTP

Comprobamos cómo han quedado los permisos:

sudo ls -la FTP
      total 8
     dr-xr-xr-x 2 nobody nogroup 4096 May 21 11:32 .
     drwxr-x--- 3 raspberry   raspberry    4096 May 22 11:32 ..


Dentro del directorio restringido (FTP) crearemos un directorio que será el contenedor de los archivos:

sudo mkdir FTP/Descargas

Le asignaremos la propiedad (cambia el nombre de usuario por el tuyo)

sudo chown raspberry:raspberry FTP/Descargas


Así el directorio "Descargas" será propiedad del usuario raspberry y del grupo del mismo nombre.

Podemos crear un archivo de ejemplo.


echo "archivo de ejemplo vsftpd" | sudo tee FTP/Descargas/ejemplo.txt

3. Configuración del servidor.

Para acceder a la configuración del servidor, utilizaremos un editor de textos como nano. 

sudo gedit /etc/vsftpd.conf

Tenemos que comprobar, cambiar o añadir si fuese necesario las siguientes lineas

     14    listen=YES
     22    listen_ipv6=NO
     28    local_enable=YES
     31    write_enable=YES
     57    xferlog_enable=YES
    122   chroot_local_user=NO
    123   chroot_list_enable=YES
    125   chroot_list_file=/etc/vsftpd.chroot_list
    151   ssl_enable=YES
    155   utf8_filesystem=YES
    157   user_sub_token=$USER
    158   local_root=/home/$USER/FTP
    160   listen_port=60001
    161   pasv_min_port=60000
    162   pasv_max_port=60002


Nota:
  • Línea 14 en "Yes" si unas una conexión ipv4
  • Línea 22 "NO"  si no usas una conexión ipv6
  • Línea 28 permitir a los usuarios locales
  • Línea 31 permitir escribir en el directorio.
  • Línea 57 Activa el registro de sucesos del servidor.
  • Línea 122 si la dejamos en YES entraremos a todas las carpetas de la cuenta HOME y nos pasamos por el arco del triunfo las líneas 157 y 158. (la dejamos con # para ignorar)
  • Línea 123 activa la lista chroot que permite usuarios conectarse
  • Línea 125 ruta al archivo de usuarios permitidos
  • Línea 151 Habilita el protocolo de acceso seguro al servidor
  • Línea 155 permite leer caracteres especiales como la ñ y la tilde.
  • Línea 157 Permite que los usuarios vayan a una ruta de inicio personalizada.
  • Línea 158 Ruta a la carpeta de inicio de sesión personalizada.
  • Línea 160 puerto externo de conexión
  • Línea 161 Puerto mínimo aleatorio de conexión
  • Línea 162 Puerto máximo aleatorio de conexión

Si decidimos cambiar el puerto por defecto (21) y conectar por el 60001, tendremos problemas para entrar desde fuera de nuestra red local. Para tener solucionar esto, usaremos las líneas 160, 161 y 162. Tened en cuenta que en el router tenemos que abrir el rango de puertos comprendidos entre el 60000:60002. Con ese rango de puertos solo se pueden conectar 3 usuarios a la vez. (si necesitas que accedan mas usuarios, aumenta el rango de puertos)




4. Creación del usuario

    Para que un usuario tenga acceso al servidor se tienen que cumplir 2 requisitos:

    4.1. Que sea un usuario local del sistema

    4.2. Que esté habilitado en la lista de acceso al servidor.


4.1. Agregar usuarios del sistema

 Partimos de la base de que ya tenemos un usuario creado, en mi caso el usuario de mi     sistema es "raspberry" con lo que solo tendré que ir al punto 4.2 y añadirlo a la lista de     admitidos.

 Si quieres dar acceso a otros usuarios, primero tendrás que crearlos en el sistema y luego     pasar al punto 4.2.

 Creamos un nuevo usuario con el siguiente comando:

sudo adduser usuario

Y una vez creado, pasamos a 4.2

4.2. Habilitar usuarios en la lista de acceso.


Llegados a este punto, todavía no podemos acceder  al servidor ya que no hemos agregado ningún usuario a la lista chroot_list de la línea 125, esto se puede hacer de varias maneras, editando con gedit o a través de consola. Yo lo voy a hacer con este comando por consola.

echo "raspberry" | sudo tee -a /etc/vsftpd.chroot_list

El comando tee nos envia el texto de echo al archivo vsftpd.chroot_list e irá añadiendo usuarios gracias a la opción -a que inserta los últimos datos al final del archivo.

Verificamos que el usuario está realmente activo ejecutando el siguiente comando:

cat /etc/vsftpd.chroot_list

El resultado deber ser "raspberry"

Hasta aquí ya deberíamos tener acceso sin problema a nuestro servidor.

5. Acceso al Servidor


Para acceder al servidor basta con instalar FileZilla desde la tienda de aplicaciones o con el siguiente comando:

sudo apt install filezilla

Añadimos los datos de acceso al servidor, tales como dirección IP, nombre de usuario, contraseña y puerto y pulsamos en conexión rápida.



Al acceder nos pedirá aceptemos el certificado de seguridad. Marcaremos la casilla "Confiar siempre en este certificado en futuras sesiones"




¡¡Y ya estaríamos dentro del servidor!!


6. Crear una carpeta compartida

Se puede crear un carpeta compartida para que los usuarios puedan subir sus archivos y los puedan compartir con el resto de usuarios. Cada usuario es propiedad de sus archivos y solo él puede modificarlos o borrarlos.


Creamos la carpeta compartida:

sudo mkdir /FTP/Shared

La carpeta Común se ha creado con root, por lo que es propiedad del mismo. Cambiamos al propietario de nuestro sistema, en mi caso raspberry

sudo chown raspberry:raspberry /FTP/Shared

Ahora le añadimos los permisos para compartir

chmod 1777 /mnt/usb/FTP/Común

Ahora todos los usuarios del grupo pueden añadir y borrar de la carpeta y se puede leer, pero no escribir en cada uno de los otros archivos, pero sólo el propietario del archivo puede eliminar.


Comandos útiles


Editar archivo de configuración

sudo nano /etc/vsftpd.conf

Estado del servidor

sudo systemctl status vsftpd

Reiniciar servidor

sudo systemctl restart vsftpd

Parar el servidor

sudo systemctl stop vsftpd

Iniciar el servidor

sudo systemctl start vsftpd


Habilitar en el inicio del sistema

sudo systemctl eneable vsftpd

Deshabilitar del inicio del sistema.

sudo systemctl disable vsftpd


Comentarios

Entradas populares de este blog

TP-Link WR841ND repetidor WIFI

Instalar y Configurar aMule en Ubuntu

II. Vodafone Technicolor Tc7230 modo bridge.