GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar FTP con TLS en Ubuntu

FTP (Protocolo de transferencia de archivos) se utiliza principalmente para transferir archivos entre computadoras. FTP funciona en una arquitectura cliente-servidor, donde el cliente solicita un archivo del servidor y el servidor devuelve el archivo requerido al cliente. En la máquina cliente, la aplicación de cliente FTP se utiliza para comunicarse con el servidor. También es posible acceder al servidor FTP a través del navegador. De forma predeterminada, FTP se comunica a través de un canal no seguro, pero es posible configurar FTP para transferir datos a través de un canal seguro. En este tutorial, aprenderá cómo configurar un servidor FTP con TLS y luego usar FileZilla como una aplicación cliente para conectarse al servidor FTP.

Instalar VSFTPD

VSFTPD (Very Secure FTP Daemon) es un programa de software para configurar FTP en un servidor. Este tutorial usa VSFTPD para configurar el servidor FTP en la computadora. Antes de instalar VSFTPD, actualice los repositorios en su servidor ejecutando el siguiente comando.

[correo electrónico protegido]:~$ sudo apt-get-update -y

A continuación, instale VSFTPD con el siguiente comando.

[correo electrónico protegido]:~$ sudo apt-get install vsftpd -y

Finalmente, verifique la instalación verificando la versión de vsftpd con el siguiente comando.

[correo electrónico protegido]:~$ vsftpd -v

El comando anterior imprime la versión de vsftpd si la instalación fue exitosa.

FTP en modo activo

En modo activo, el cliente FTP inicia la sesión haciendo la conexión de control TCP desde cualquier puerto en la máquina cliente al puerto 21 en el servidor. Luego, el cliente comienza a escuchar una conexión de datos en un puerto X aleatorio e informa al servidor a través de la conexión de control TCP que el cliente está escuchando la conexión de datos en el puerto X. Luego, el servidor establece una conexión de datos desde su puerto 20 al puerto X en la computadora cliente.

Puede ocurrir un problema cuando el cliente está detrás de un firewall y el puerto X está bloqueado. En este caso, el servidor no puede establecer una conexión de datos con el cliente. La mayoría de las veces, para evitar este problema, el servidor FTP se utiliza en modo pasivo, del que hablaremos más adelante en este artículo. De forma predeterminada, VSFTPD usa el modo pasivo, por lo que debemos cambiarlo al modo activo.

Primero, abra el archivo de configuración de VSFTPD.

[correo electrónico protegido]:~$ sudo Nano /etc/vsftpd.conf

Agregue la siguiente línea al final del archivo.

pasv_enable=NO

También asegúrese de que la opción 'conectar_desde_puerto_20' esté configurada en 'SÍ'. Esta opción garantiza que la conexión de datos se establezca en el puerto 20 del servidor.

A continuación, cree un directorio que el servidor FTP utilizará para almacenar archivos. Para este tutorial, configuraremos '/home/ubuntu/ftp/' como la ruta raíz para el servidor FTP.

[correo electrónico protegido]:~$ sudo mkdir /home/ubuntu/ftp

Ahora especifique este directorio en el archivo de configuración cambiando la opción 'local_root'. El siguiente parámetro configura la ruta raíz del servidor.

raíz_local=/inicio/ubuntu/ftp

La opción 'write_enable' debe estar habilitada para que los usuarios puedan escribir en el servidor FTP.

Siempre reinicie el servidor cuando cambie el archivo de configuración.

[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpd

Establecer una contraseña para un usuario

El cliente FTP se conecta al servidor con un nombre de usuario y contraseña. Establezca la contraseña para su usuario en el dispositivo usando el siguiente comando.

[correo electrónico protegido]:~$ sudo passwd ubuntu

El comando anterior solicita la contraseña para el usuario 'ubuntu'.

Configurar el cortafuegos para el modo activo

Cuando se usa FTP en modo activo, el servidor FTP usa dos puertos para comunicarse con el cliente, el puerto 21 y el 22. El puerto 21 se usa para pasar comandos al cliente y el puerto 20 se usa para enviar datos a cualquier puerto de . transferir al cliente. Usaremos ufw para configurar el firewall en el servidor. Instale ufw con el siguiente comando.

[correo electrónico protegido]:~$ sudo apt-get install ufw

Ahora abrimos los puertos 20, 21 y 22 (para la conexión SSH) del lado del servidor.

[email protected]:~$ sudo ufw allow proto tcp de cualquiera a cualquier puerto

Habilite y verifique el estado de ufw con los siguientes comandos.

[correo electrónico protegido]:~$ habilitar sudo ufw

[correo electrónico protegido]:~$ sudo ufw estado

NOTA: Si configura su servidor FTP en la nube, también debe permitir los puertos 20, 21 y 22 en el grupo de seguridad.

ADVERTENCIA: Habilite siempre el puerto 22 junto con los puertos requeridos antes de habilitar ufw en el sistema remoto. De manera predeterminada, si habilita ufw sin permitir el tráfico del puerto 22, UFW bloqueará el tráfico del puerto 22, por lo que no podrá acceder a su servidor remoto a través de SSH.

Instalar cliente FTP

Ahora nuestro servidor está configurado en modo activo y podemos acceder a él desde el lado del cliente. Para la aplicación cliente usamos FileZilla, una aplicación cliente FTP. Instale FileZilla con el siguiente comando.

[correo electrónico protegido]:~$ sudo apt-get install filezilla -y

Abra la aplicación de cliente FTP e ingrese la dirección IP pública del servidor FTP y otras credenciales.

Cuando hace clic en "Conexión rápida", se conecta al servidor FTP y se le dirige automáticamente al directorio especificado en la opción "local_root" en el archivo de configuración "/home/ubuntu/ftp".

Problemas del modo activo

Usar FTP en modo activo causa problemas cuando el cliente está detrás del firewall. Si, después de ingresar los comandos de control iniciales, el servidor establece una conexión de datos con el cliente en un puerto aleatorio, el servidor de seguridad del cliente puede bloquear el puerto, lo que provoca que la transferencia de datos falle. El FTP se puede utilizar en modo pasivo para solucionar estos problemas de cortafuegos.

FTP en modo pasivo

En modo pasivo, el cliente establece una conexión de control con el servidor en el puerto 21 del servidor. Luego, el cliente envía el comando especial 'PASV' para informar al servidor que la conexión de datos la está realizando el cliente en lugar del servidor. En respuesta, el cliente obtiene la IP del servidor y un número de puerto aleatorio (este número de puerto está configurado en el servidor). El cliente utiliza esta IP y número de puerto para establecer una conexión de datos con el servidor. En el modo pasivo, tanto las conexiones de datos como las de control las establece el cliente para que el cortafuegos no interfiera con la comunicación entre el cliente y el servidor.

Abra el archivo de configuración de FTP en su editor favorito.

[correo electrónico protegido]:~$ sudo Nano /etc/vsftpd.conf

Establezca la opción 'pasv_enable' en el archivo en 'SÍ' para permitir que el servidor se comunique con el cliente en modo pasivo. También configure la opción 'local_root' para especificar el directorio raíz del servidor y configure la opción 'write_enable' en 'YES' para permitir que los usuarios carguen archivos en el servidor.

Como se mencionó anteriormente, la conexión de datos la realiza el cliente y el servidor envía su IP pública y un puerto aleatorio al cliente para establecer una conexión de datos. Este puerto aleatorio en el servidor se puede especificar a partir de un rango de puertos en el archivo de configuración.

La conexión de datos entre el servidor y el cliente se establece en un puerto entre 1024 y 1048. Reinicie el servidor FTP después de cambiar el archivo de configuración.

[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpd

Configurar el cortafuegos en modo pasivo

Si usamos FTP en modo pasivo, la conexión de datos se realizará a través de cualquier puerto del 1024 al 1048, por lo que es necesario habilitar todos estos puertos en el servidor FTP.

[email protected]:~$ sudo ufw allow proto tcp de cualquiera a cualquier puerto

Después de permitir todos los puertos en el firewall, habilite el ufw ejecutando el siguiente comando.

[correo electrónico protegido]:~$ habilitar sudo ufw

Permita siempre los puertos en el servidor antes de habilitar el firewall; De lo contrario, no podrá acceder a su servidor a través de SSH como ufw, que bloquea el puerto 22 de forma predeterminada.

Probando la conexión

Ahora que hemos configurado el servidor FTP en modo pasivo, podemos verificar la conexión FTP con la aplicación cliente. Para ello, abra FileZilla en su sistema.

Después de ingresar el host, el nombre de usuario, la contraseña y el puerto, ahora puede conectarse a su servidor. Ahora que está conectado al servidor FTP ejecutándose en modo pasivo, puede cargar archivos al servidor.

Configurar certificados SSL con el servidor FTP

De forma predeterminada, el servidor FTP establece la conexión entre el cliente y el servidor a través de un canal no seguro. Este tipo de comunicación no debe usarse si desea intercambiar datos confidenciales entre el cliente y el servidor. Para comunicarse a través de un canal seguro, se deben utilizar certificados SSL.

Generación de certificados SSL

Usamos certificados SSL para establecer una comunicación segura entre el cliente y el servidor. Generaremos estos certificados usando openssl. El siguiente comando genera certificados SSL para su servidor.

[email protected]:~$ sudo openssl request -x509 -node -tag 365 -nueva clave rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -aus /etc/ssl/private/vsftpd.pem

Cuando ejecute el comando anterior, se le harán algunas preguntas. Después de responder estas preguntas, se generarán los certificados. Puede buscar los certificados en la terminal.

[correo electrónico protegido]:~$ sudo ls /etc/SSL/private/

Uso de certificados en el archivo de configuración

Ahora nuestros certificados están listos para usar. Configuraremos el archivo 'vsftpd.conf' para usar los certificados SSL para la comunicación. Abra el archivo de configuración con el siguiente comando.

[correo electrónico protegido]:~$ sudo Nano /etc/vsftpd.conf

Agregue las siguientes líneas al final de los archivos. Estos cambios garantizan que el servidor FTP utilice los certificados SSL recién generados para comunicarse de forma segura con el cliente.

ssl_enable=SÍ
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=SÍ
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/SSL/private propiedad /vsftpd.pem
rsa_private_key_file=/etc/SSL/Private/vsftpd.pem

Reinicie el servidor FTP para que estos cambios surtan efecto.

[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpd

Después de que el servidor se reinicie, intente conectarse a su servidor usando la aplicación de cliente FileZilla. Esta vez, la aplicación cliente le preguntará si debe confiar en estos certificados.

Si tiene certificados de una CA de confianza, esta advertencia no debería aparecer. Generamos nuestros certificados utilizando openssl, que no es una CA de confianza, por lo que solicitó autenticación de certificado en nuestro caso. Ahora podemos comunicarnos entre el cliente y el servidor a través de un canal seguro.

Configuración anónima

También puede habilitar el inicio de sesión anónimo en su servidor FTP. Cuando esta configuración está habilitada, cualquier usuario puede iniciar sesión en el servidor FTP con cualquier nombre de usuario y contraseña. Los siguientes parámetros en el archivo de configuración hacen que el servidor FTP sea accesible de forma anónima.

La configuración anterior establece la ruta raíz para usuarios anónimos en '/home/ubuntu/ftp/anon' y no solicita la contraseña cuando un usuario anónimo inicia sesión.

NOTA: Asegúrese de que la ruta '/home/ubuntu/ftp/anon' exista en el servidor FTP.

Ahora reinicie el servidor FTP.

[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpd

Después de reiniciar el servidor, intentamos conectarnos al servidor a través del navegador Google Chrome. Vaya a la siguiente URL.

ftp://3.8.12.52

La URL anterior lo lleva a la raíz del servidor FTP como se especifica en el archivo de configuración. Si el inicio de sesión anónimo está deshabilitado, al intentar conectarse al servidor FTP desde un navegador primero se le solicitará la autenticación y luego se le redirigirá a la raíz del servidor.

Configurar acceso local

También podemos permitir o bloquear el acceso local al servidor FTP modificando el archivo de configuración. Actualmente podemos acceder a nuestro servidor FTP localmente sin usar la aplicación cliente FTP, pero podemos bloquear este acceso. Para hacer esto, necesitamos cambiar el parámetro 'local_enable'.

Primero, reinicie el servidor FTP.

[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpd

Después de que el servidor se reinicie, intente acceder al servidor FTP localmente mediante la interfaz de línea de comandos. Inicie sesión en su servidor remoto mediante SSH.

[correo electrónico protegido]:~$ ssh [email protected] -i

Ahora escriba el siguiente comando para iniciar sesión en el servidor FTP localmente mediante la interfaz de línea de comandos.

[correo electrónico protegido]:~$ ftp localhost

Ejecutar el comando anterior generará un error 500.

Finalización

El Protocolo de transferencia de archivos se ha utilizado durante muchos años para transferir archivos y documentos a través de Internet. VSFTPD es uno de los paquetes utilizados como servidor FTP en su computadora. VSFTPD viene con varias configuraciones que puede usar para personalizar su servidor FTP. Este tutorial mostró cómo configurar un servidor FTP con TLS para mayor seguridad. Para obtener más información sobre las configuraciones de FTP, visite el siguiente enlace.

https://vsftpd.beasts.org/vsftpd_conf.html


Ubuntu
  1. Cómo instalar el servidor VNC en Ubuntu 18.04 LTS

  2. ¿Intenté desinstalar un programa usando Apt-get pero aún puedo usarlo?

  3. Cómo instalar y configurar el servidor SVN en Ubuntu y LinuxMint

  4. Las mejores aplicaciones de mensajería y comunicación para Ubuntu

  5. Cómo arreglar do-release-upgrade:comando no encontrado Error en Ubuntu

Redirecciones en cPanel

Cómo configurar las adiciones y la red de invitados de VirtualBox

Cómo instalar Wine en LMDE 5

Cómo instalar PuTTY en Linux

Programación de trabajos de Cron con Crontab

Configurar el solucionador de DNS local en Ubuntu 20.04 con BIND9