SErvidor ftp loclahost VSFTPD
tomado de: https://ubunlog.com/vsftpd-instalar-un-servidor-ftp-ubuntu/?msclkid=14610ebdca2b11ecb4eb432b1dbc16c5
Instalar vsftpd
Para este ejemplo, voy a instalar un servidor FPT en mi red local sobre un Ubuntu 20.04. Si no lo tienes instalado en tu equipo, se puede instalar con el comando (Ctrl+Alt+T):
1 | sudo apt install vsftpd |
Una vez instalado, vamos a empezar por hacer una copia del archivo de configuración original. Si algo sale mal, se puede restaurar la configuración predeterminada.
1 | sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default |
Ahora vamos a iniciar el servicio con el comando:
1 | sudo systemctl start vsftpd |
Confirmamos que se está ejecutando con:
1 | sudo systemctl enable vsftpd |
Cuenta de usuario FTP
Con esto podremos usar cualquier cliente FTP para acceder a los archivos alojados en el servidor a través de vsftpd. En la terminal (Ctrl+Alt+T) solo tendremos que utilizar el comando:
1 | sudo useradd –m nombre-usuario |
Sustituye ‘nombre-usuario‘ por tu nombre de usuario previsto. A continuación vamos a establecer una contraseña:
1 | sudo passwd nombre-usuario |
Después nos vamos a mover a la carpeta de usuario recién creada:
1 | cd /home/nombre-usuario |
Lo ideal es que el FTP se restrinja a un directorio específico por motivos de seguridad. Vsftpd usa jaulas chroot para lograr esto. Con chroot habilitado, un usuario local está restringido a su directorio de inicio (por defecto). Para este ejemplo, vamos a crear un directorio ftp que actuará como chroot, junto con un directorio de archivos modificables.
Para empezar creamos la carpeta FTP:
1 | sudo mkdir ftp |
Estableceremos la propiedad de la carpeta con este otro comando:
1 | sudo chown nobody:nogroup /home/nombre-usuario/ftp |
Ahora eliminamos los permisos de escritura de esta carpeta:
1 | sudo chmod a-w /home/nombre-usuario/ftp |
Continuamos creando directorio contenedor de archivos y le asignaremos la propiedad:
1 2 3 | sudo mkdir /home/nombre-usuario/ftp/files sudo chown nombre-usuario:nombre-usuario /home/nombre-usuario/ftp/files |
En este punto, vamos a crear un archivo de prueba en la carpeta files:
1 | echo "vsftpd archivo de ejemplo" | sudo tee /home/nombre-usuario/ftp/files/ejemplo.txt |
Asegurar el servidor FTP
En esta paso vamos a abrir los puertos 20 y 21 para el tráfico FTP. Los puertos 40000-50000 serán los reservados para el rango de puertos pasivos que eventualmente se establecerán en el archivo de configuración y el puerto 990 se usará cuando se habilite el TLS. Ejecuta lo siguiente para hacerlo:
1 | sudo ufw allow 20/tcp; sudo ufw allow 21/tcp; sudo ufw allow 990/tcp; sudo ufw allow 40000:50000/tcp |
Si utilizas un firewall diferente, consulta su documentación para abrir los puertos.
Configurar vsftpd
Como nos interesa que los usuarios puedan cargar archivos, vamos a editar el archivo de configuración de vsftpd:
1 | sudo vim /etc/vsftpd.conf |
Dentro del archivo vamos a buscar las siguientes entradas y descomentarlas:
1 2 3 4 5 | anonymous_enable=NO write_enable=YES local_enable=YES |
Chroot_local_user tampoco se comentará, con ello nos garantizamos que el usuario conectado solo acceda a los archivos dentro del directorio permitido:
1 | chroot_local_user=YES |
También vamos a añadir manualmente algunos valores nuevos al final del archivo. Esto permitirá que la configuración funcione con el usuario actual y con cualquier otro usuario que se agregue posteriormente:
1 2 | user_sub_token=$USER local_root=/home/$USER/ftp |
Reinicia el daemon para cargar los cambios:
1 | sudo systemctl restart vsftpd |
Conexiones cifradas
Vamos a utilizar TTL/SSL para garantizar la seguridad. Debemos crear el certificado SSL y usarlo para proteger el servidor FTP. Esto lo haremos con el comando:
1 | sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem |
El flag -days hace que el certificado sea válido por un año y hemos incluido una clave privada RSA de 2048 bits en el mismo comando. Cuando termines de crear el certificado, abre otra vez el archivo de configuración:
1 | sudo vim /etc/vsftpd.conf |
El final del archivo debemos encontrar dos líneas que comiencen con «rsa«. Comenta ambas líneas y escribe las siguientes:
1 2 | rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem |
Ahora habilitaremos SSL para que solo los clientes que tengan SSL habilitados puedan conectarse. Cambia el valor de ssl_enable a YES:
1 | ssl_enable=YES |
Para no permitir conexiones anónimas a través de SSL, añade las líneas:
1 2 3 | allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES |
Configura el servidor para usar TLS, añadiendo:
1 2 3 | ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO |
También conseguiremos que no será necesario reutilizar SSL, porque puede ocasionar que muchos clientes de FTP no funcionen. Además utilizaremos suites de encriptación de alto cifrado, añadiendo las líneas:
1 2 | require_ssl_reuse=NO ssl_ciphers=HIGH |
Guardamos el archivo y reiniciamos el servicio:
1 | sudo systemctl restart vsftpd |
Acceder desde un cliente FTP
Ahora ya podremos conectarnos a nuestro servidor FTP. Para esto podremos utilizar una aplicación desde el entorno gráfico o el comando de terminal ftp. Si optas por el entorno gráfico, necesitarás un cliente FTP como FileZilla. Para instalarlo puedes recurrir al artículo que un compañero escribió en este blog hace un tiempo.
Una vez instalado e iniciado Filezilla, haz clic en Archivo / Gestor de sitios. Lo siguiente será hacer clic en “Nuevo sitio”.
En el panel de la derecha, selecciona como protocolo FTP. Si está utilizando FTPS, selecciona TLS para cifrado. A continuación, escribe el nombre de host o la dirección IP en Servidor y añade el puerto (21). Para el modo de acceso selecciona Normal, y escribe las credenciales de tu cuenta en Usuario y Contraseña. Haz clic en Conectar.
Tendremos que aceptemos el certificado que creamos anteriormente.
Llegados a este punto veremos el archivo de ejemplo que creamos dentro de la carpeta files. Ya podemos comenzar a usar nuestro servidor FTP. Simplemente arrastra y suelta los archivos que quieras mover.
Usando un FTP, podremos capturar los datos siempre que los necesitemos. Se puede saber más sobre vsftpd y su configuración desde la página de documentación de Ubuntu.
No hay comentarios.:
Publicar un comentario