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 y
y 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).
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 ftp
en 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 directorioftp
usandochmod
para que nadie pueda escribirlo, de lo contrario vsftpd no le permitirá iniciar sesión. a-w
significa 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.
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.
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.
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)
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)
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!
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
)
ssl_enable=NO
cámbielo a:
ssl_enable=YES
pegue lo siguiente debajo.
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!,
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