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 -yA continuación, instale VSFTPD con el siguiente comando.
[correo electrónico protegido]:~$ sudo apt-get install vsftpd -yFinalmente, 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.confAgregue 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/ftpAhora 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 vsftpdEstablecer 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 ubuntuEl 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 ufwAhora 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
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 -yAbra 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.confEstablezca 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 vsftpdConfigurar 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 ufwPermita 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.pemCuando 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.confAgregue 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 vsftpdDespué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.
Ahora reinicie el servidor FTP.
[correo electrónico protegido]:~$ sudo systemctl reiniciar vsftpdDespué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.52La 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 vsftpdDespué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] -iAhora 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 localhostEjecutar 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