Instalación de un servidor FTP (vsftpd) en Ubuntu 18.04 / 18.10 / 19.04 / 19.10

publicado en: Articles | 0

antes de comenzar

es sorprendente cuántos desarrolladores web aún desconocen SFTP y las ventajas sobre FTP/FTPS. SFTP viene con el servidor Linux preinstalado y funciona como FTP normal, pero es más seguro y menos complicado de configurar. Si tu cliente FTP es compatible con SFTP, ¡deberías usarlo!

  • Cómo configurar SFTP para un servidor Web raíz de documentos

instalar vsftpd

comencemos actualizando las listas de paquetes e instalando vsftpd en Ubuntu 18.04 / 18.10 / 19.04 / 19.10.,

a Continuación tenemos dos comandos separados por &&. El primer comando actualizará las listas de paquetes para asegurarse de obtener la última versión y dependencias para vsftpd. El segundo comando descargará e instalará vsftpd. Pulse y y ENTER cuando se le preguntó a continuar.

sudo apt update && sudo apt install vsftpd

Una vez instalado, verifique el estado de vsftpd

sudo service vsftpd status

arriba podemos ver que nuestro servidor FTP ahora está funcionando.,

configurar Firewall

Si aún no lo ha hecho, se recomienda habilitar el ufw firewall para Ubuntu 18.04 / 18.10 / 19.04 / 19.10. Antes de habilitarufw firewall, asegúrese de agregar una regla para SSH, de lo contrario puede quedar bloqueado de su servidor si está conectado de forma remota. Si no desea configurar un firewall, vaya al paso 3.

sudo ufw allow OpenSSH

abramos los puertos 20 y 21 para FTP, y los puertos 40000-50000 para FTP pasivo. También abriremos el puerto 990 para TLS, que configuraremos más adelante.,

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow 990/tcp

Ahora, activar el firewall si no lo está ya. Presione yy ENTER si se le advierte sobre la interrupción de la conexión SSH.

sudo ufw enable

comprobar el estado del firewall, ejecute:

sudo ufw status

Si el firewall está ejecutando, usted debe ver Status: active y las reglas de firewall acabamos de agregar.

Crear usuario FTP

ahora crearemos un nuevo usuario que usaremos para iniciar sesión en FTP., En este ejemplo, crearemos un nuevo usuario llamado ftpuser.

sudo adduser ftpuser

genere una contraseña segura y manténgala segura.

también se le puede pedir que introduzca alguna información de contacto. Puede presionar ENTER para cada uno de estos.

si solo desea que ftpuser inicie sesión a través de FTP, debe deshabilitar su acceso SSH mediante la lista negra de su nombre de usuario en el archivo de configuración SSH. De lo contrario, vaya al paso 4.

abra la configuración de SSH en nano.,

sudo nano /etc/ssh/sshd_config

agregue lo siguiente al final del archivo reemplazando ftpuser con el usuario al que desea denegar el acceso SSH y SFTP. Aquí puede agregar varios usuarios separados por un solo espacio. (Para pegar en nano, pulse el botón derecho del ratón).

/etc/ssh/sshd_config
DenyUsers ftpuser

Para guardar el archivo y salir, pulse CTRL + X, pulse Y y, a continuación, presione ENTER.

reinicie el servicio SSH.,

sudo service sshd restart

Permisos de directorio

ahora debe decidir dónde se le permite a este nuevo usuario FTP ver y cargar archivos.

vsftpd usa chroot jails para restringir a los usuarios a sus directorios home y requiere que el directorio home no sea escribible. Por esa razón, tenemos que configurar algunos directorios y permisos.

si planea usar esta cuenta de usuario FTP para cargar archivos en un servidor web, continúe con el paso 4.1. Si solo desea cargar en una carpeta de inicio, vaya al paso 4.2.

4.1., Cargar a un servidor web

en muchos casos, desea poder cargar archivos a la raíz del documento en el servidor web.

si siguió una guía anterior aquí para configurar varios dominios, la raíz de su documento puede estar ubicada en algún lugar como /var/www/test1.com/public_html – en ese caso, deberá establecer la carpeta de inicio para ftpuser en la carpeta encima de la raíz del documento: /var/www/test1.com (sustituyendo test1.com para su propio dominio).,

si no está utilizando varios dominios, asumiremos que está utilizando la raíz del documento predeterminada /var/www/html tanto para Apache como para Nginx en Ubuntu 18.04 / 18.10 / 19.04 / 19.10. En este escenario, tenemos que hacer /var/www/ el directorio home de nuestro usuario ftpuser.

vamos a establecer la carpeta encima de la raíz del documento como el directorio principal para ftpuser.

sudo usermod -d /var/www ftpuser

esto permitirá a nuestro usuario FTP escribir y modificar archivos en el directorio raíz del documento.,

sudo chown ftpuser:ftpuser /var/www/html

Ahora, vaya al Paso 5 para configurar vsftpd.

4.2 Upload to a Home Folder

Si en su lugar desea que este usuario cargue archivos al directorio home, cree un nuevo directorio llamado ftpen el directorio home del usuario y otro dentro de él llamado files. En este ejemplo a continuación, nuestro usuario se llama ftpuser.

sudo mkdir /home/ftpuser/ftp

Establecer la propiedad de la etiqueta ftp directorio no nobody:nogroup.,

sudo chown nobody:nogroup /home/ftpuser/ftp

establezca permisos para el directorioftpusandochmod para que nadie pueda escribirlo, de lo contrario vsftpd no le permitirá iniciar sesión. a-wsignifica a = all/everyone - = remove w = write permission, por lo tanto, elimine los permisos de escritura para todos.

sudo chmod a-w /home/ftpuser/ftp

a continuación crearemos un nuevo directorio dentro de /ftp donde el usuario puede ver y subir archivos.,

sudo mkdir /home/ftpuser/ftp/files

asigne la propiedad de este directorio a nuestro nuevo usuario FTP de lo contrario no podrán escribir en él.

sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files

Configure vsftpd

hay algunos cambios que tenemos que hacer en el archivo de configuración de vsftpd antes de que pueda comenzar a usar FTP en Ubuntu 18.04 / 18.10 / 19.04 / 19.10.

antes de editar el archivo de configuración, cree una copia de seguridad.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Ahora, abra el archivo de configuración en el nano editor.,

sudo nano /etc/vsftpd.conf

Este es un archivo bastante grande, pero en su mayoría está lleno de comentarios para ayudarlo.

debe bajar el archivo y asegurarse de que la configuración coincida con las de abajo. Nota: puede buscar en el nano con CTRL + W

Buscar #write_enable=YES y elimine mediante la eliminación del signo#. Esto permitirá a los usuarios FTP escribir archivos en el servidor.

etc / vsftpd.,conf
write_enable=YES

Buscar #chroot_local_user=YES y elimine mediante la eliminación del signo#. Esto evitará que los usuarios de FTP naveguen fuera de su propio directorio.

etc / vsftpd.conf
chroot_local_user=YES

Buscar #local_umask=022 y elimine mediante la eliminación del signo#. Esto dará a los archivos y carpetas cargados los permisos correctos.

etc / vsftpd.conf
local_umask=022

ahora necesitamos agregar algunas directivas que no existen en el archivo.,

dado que Linux no muestra archivos que comiencen con un punto, archivos como .htaccess no serán visibles en FTP. Esto puede ser un problema si tiene la intención de Usar Apache y desea trabajar con .htaccess.

para forzar a vsftpd a mostrar nombres de archivo que comiencen con un punto, pegue lo siguiente en la parte inferior del archivo. (Para pegar en nano, pulse el botón derecho del ratón)

etc / vsftpd.conf
force_dot_files=YES

Por último, agreguemos algunos rangos de puertos para FTP pasivo para asegurarnos de que haya suficientes conexiones disponibles. Pegue lo siguiente en la parte inferior del archivo., (Para pegar en nano, pulse el botón derecho del ratón)

etc / vsftpd.conf
pasv_min_port=40000pasv_max_port=50000

Si ha seguido el paso 4.2 anteriormente y solo desea que este usuario cargue archivos en la carpeta de inicio, debemos decirle a vsftpd que la carpeta local_root es la carpeta /ftp que creamos anteriormente.

no agregue estas dos líneas si desea que el usuario cargue en la raíz del documento web!

etc / vsftpd.conf
user_sub_token=$USERlocal_root=/home/$USER/ftp

hemos terminado con vsftpd.conf por el momento, pero volverá en pasos posteriores para configurar la seguridad y SSL.,

Para guardar el archivo y salir, pulse CTRL + X, pulse Y y, a continuación, presione ENTER.

Reiniciar vsftpd.

sudo systemctl restart vsftpd

Test FTP

ahora podemos probar vsftpd para ver si podemos iniciar sesión como el usuario que creamos anteriormente. Recomendamos FileZilla, que funciona en Windows, Mac y Linux.

ingrese la IP de su servidor, su nombre de usuario FTP y contraseña que creó anteriormente, y haga clic en Quickconnect.,

arriba podemos ver que nos hemos conectado correctamente y se muestra el directorio raíz web html, aunque esto puede ser diferente en su servidor.

intente cargar, crear y editar carpetas y archivos dentro del directorio raíz web para asegurarse de que los permisos funcionen correctamente.

notará que tenemos una advertencia en FileZilla » estado: servidor inseguro, no admite FTP sobre TLS.»Es muy recomendable que ahora configure TLS para que las credenciales de inicio de sesión y el tráfico se cifren a través de la conexión FTP.,

Si tiene problemas para iniciar sesión en el servidor FTP, intente comprobar el registro de vsftpd. Para ver las últimas 200 entradas usando tail:

sudo tail /var/log/vsftpd.log -n 200

FTP seguro con TLS (opcional)

es importante tener en cuenta algunas cosas al usar FTP: no está cifrado de forma predeterminada, lo que significa que sus credenciales y archivos que envía son vulnerables a la intercepción. Para resolver esto, debe conectarse a vsftpd usando FTPS (FTP sobre SSL/TLS).

comencemos creando un nuevo certificado con la herramienta openssl.,

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

se le pedirá que introduzca algunos detalles como país, etc. No tienes que rellenar esto. Puede presionar ENTER para los valores predeterminados.

ahora que su clave privada ha sido creada, hay algunos cambios que tenemos que hacer en el archivo de configuración de vsftpd.

abra el archivo de configuración en nano editor.

sudo nano /etc/vsftpd.conf

busque la línea siguiente: (Nota: puede buscar en el nano con CTRL + W)

etc/vsftpd.,conf
ssl_enable=NO

cámbielo a:

etc/vsftpd.conf
ssl_enable=YES

pegue lo siguiente debajo.

etc / vsftpd.conf

Guarde el archivo y salga (pulse CTRL + X, pulse Y y, a continuación, presione ENTER).

Reiniciar vsftpd.

sudo systemctl restart vsftpd

probando TLS con FileZilla

ahora podemos probar TLS. Recomendamos FileZilla, que funciona en Windows, Mac y Linux.,

ingrese la IP de su servidor, su nombre de usuario FTP y contraseña que creó anteriormente, y haga clic en Quickconnect.

se le puede presentar una advertencia de Certificado Desconocido. Haga clic en Confiar siempre en este certificado en futuras sesiones y haga clic en Aceptar.

Si está conectado a través de TLS, se lo indicará en el registro de conexión. También verá un candado en la esquina inferior derecha.

ya está todo hecho!,

4.79 (42 votos)

quisiera saber si esto ayudó. Sígueme en Twitter, Facebook y YouTube, o buy cómprame un batido.

P. S. aumenté mis ingresos de AdSense en un 68% usando IA 🤖. Lea mi revisión de Ezoic para averiguar cómo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *