Actualmente existen una gran cantidad de programas que actúan como servidores FTP. El protocolo FTP (File Transfer Protocol) nos permite transferir archivos de manera local y remota de forma fácil, y, sobre todo, muy rápida. El protocolo FTP por sí mismo no encripta ni los datos transmitidos ni tampoco la autenticación mediante usuario y contraseña, pero si hacemos uso de FTPES todo el tráfico va cifrado desde el cliente FTP hasta el servidor FTP.
En RedesZone os vamos a enseñar cómo instalar y configurar de manera avanzada el servidor FTP proFTPd, uno de los software más completos y potentes que hay para sistemas operativos Linux. Este servidor FTP es el favorito de muchos administradores de sistemas por la configurabilidad que es capaz de proporcionarnos. En este artículo os vamos a enseñar cómo podemos instalarlo y configurarlo de forma completa en un sistema que esté ejecutando Ubuntu para que varios usuarios puedan acceder a él de forma remota.
Principales características de proFTPd
El servidor proFTPd es compatible con todos los sistemas operativos basados en Linux y Unix, por tanto, también es compatible con los populares sistemas operativos basados en FreeBSD que son ampliamente utilizados a gran escala para servidores. Este servidor FTP dispone de una grandísima cantidad de opciones de configuración, como, por ejemplo, crear usuarios virtuales que solamente se utilizan en el servidor FTP y que no forman parte del sistema operativo. También podremos definir rutas virtuales para cada uno de estos usuarios que hemos creado anteriormente, limitar el ancho de banda de los diferentes usuarios a nivel de aplicación, e incluso podremos también definir una MasqueradeAddress para que no tengamos ningún problema si utilizamos FTP PASV, el cual es lo más recomendable para no tener problemas en entornos de NAT. Otras opciones son la posibilidad de crear reglas avanzadas para que desde una determinada red tengamos una serie de «permisos», y desde otra red tengamos otros, ya que podremos subdividir el servidor FTP por clases.
El protocolo FTP utiliza una arquitectura cliente-servidor, hace uso del puerto 21 TCP (que se puede cambiar) para el canal de control, donde se establecerá la conexión de datos, la autenticación del cliente FTP que se conecta al servidor, y también la finalización de la conexión de datos. El canal de control depende de cómo tengamos configurado el servidor FTP, antiguamente estaba el modo activo que usaba el puerto 20 TCP para transferir los datos, pero esto ocasiona problemas con el NAT de las redes. Actualmente se hace uso del modo pasivo de FTP, donde tenemos un rango de puertos pasivos, en el servidor FTP tendremos que abrir los puertos pasivos en el router para no tener problemas de conectividad.
Una opción muy importante hoy en día está en el cifrado, tanto a la hora de autenticar a los clientes que se conecten al servidor FTP, como a la hora de transmitir toda la información de manera local y remota. Este software proFTPd incorpora la posibilidad de levantar un servidor FTPES, por tanto, utilizará el protocolo TLS 1.2 o TLS 1.3 para que toda la información desde el origen (cliente FTP) hasta el destino (el propio servidor FTP) esté cifrada y autenticada. Para poder configurar el proFTPd con FTPES, será necesario crear unos certificados digitales, en este tutorial también os enseñaremos a crearlos y utilizarlos, para que todas vuestras comunicaciones con el servidor FTPES sean seguras. Gracias a este protocolo, tanto la autenticación como la transferencia de los datos estará protegido, tanto con TLS 1.2 y TLS 1.3 en el canal de control, como con AES-256-GCM en el canal de datos, ideal para tener aceleración de cifrado por hardware y conseguir altas velocidades de transferencia. Si comparamos el rendimiento que obtenemos con un procesador que incorpora AES-NI frente a uno que no lo tiene, estamos hablando de un rendimiento entorno a 10 veces superior, por este motivo es muy importante que nuestro procesador incorpore esta tecnología.
Principales ventajas de ProFTPd
Entre las principales ventajas de ProFTPd podemos destacar que tiene un archivo de configuración principal único que posee directivas y grupos de directivas que a su vez son bastante intuitivos y que serán muy fáciles de usar sobre todo para usuarios que ya han usado alguna vez el servidor web de Apache, ya que puede realizarse también la configuración por directorio “.ftoaccess” que es bastante similar al “.htaccess” que utiliza Apache.
Además, como ya hemos demostrado antes, se torna bastante fácil la configuración incluso de múltiples servidores FTP virtuales y también servicios FTP anónimos y está diseñado también para ejecutarse como un servidor independiente o desde inetd/xinetd según la carga que tenga el sistema. Cabe destacar, que los directorios raíz FTP anónimos no requieren una estructura de directorio específica, archivos binarios del sistema u otros archivos del sistema y además de esto no contiene comandos SITE EXEC ya que, en los entornos modernos de internet, este tipo de comandos son una verdadera pesadilla para la seguridad.
El software también es de código abierto, y además siempre debe estar disponible para que administradores y desarrolladores tengan la capacidad de auditar. Tiene la capacidad de manejar directorios y archivos ocultos y que están basados en permisos o propiedad de usuarios o grupos o estilo Unix y también puede ejecutarse como un usuario sin privilegios y es configurable de modo independiente, ya que esto disminuye las posibilidades de ataques o exploits en nuestra raíz.
Y por último, podemos destacar su diseño modular, que nos permite ampliar el servidor de manera bastante fácil con distintos módulos, han sido escritos, por ejemplo, módulos para bases de datos SQL, para servidores LDAP, también para cifrado SSL/TLS, compatibilidad por ejemplo con RADIUS entre muchas otras posibilidades y además también es completamente compatible con IPv6 por lo que no tendremos prácticamente ningún problema.
Rendimiento de ProFTPd
Estos servidores que se encuentran diseñados para poder ofrecer plataformas de transferencias de archivos, necesitan disponer de un buen rendimiento. Esto incluye la rapidez, la seguridad y la confiabilidad del sistema que estamos utilizando. Si bien se trata de una de las soluciones más populares hoy en día, vamos a ver cuáles son sus virtudes en cuanto al rendimiento general del sistema. El cual de por sí, ya ofrece flexibilidad, estabilidad y seguridad, como has podido ver previamente.
- Velocidad: Se trata de un protocolo ampliamente conocido por su velocidad de transferencia. Esto hace que sea una opción muy buena para entornos donde disponer de la mejor velocidad es muy importante. Este se encuentra optimizado para poder transferir grandes archivos, con la posibilidad de manejar múltiples conexiones de forma simultánea.
- Estabilidad: Es un punto esencial para cualquier servidor FTP. Cuando estos se interrumpen, pueden causar grandes daños en forma de pérdidas de tiempo y dinero. Por lo cual, con ProFTPD estamos ante un sistema muy estable, y también muy tolerante a fallos que puedan ocasionarse. Otra de sus grandes virtudes, es la capacidad de recuperación después de algún problema.
- Seguridad: Dentro de cualquier servidor, la seguridad es un punto esencial y de vital importancia. ProFTPD cuenta con diferentes medidas de seguridad para proteger la integridad de los archivos, evitando también las conexiones no autorizadas. Entre otras, incluye autenticación por contraseña, registros de actividad y controles basados en grupos.
- Escalabilidad: El sistema es capaz de manejar una gran cantidad de usuarios y conexiones de forma simultánea, haciendo que sea muy bueno para entornos de mucha demanda o empresariales. Su arquitectura modular también permite a los usuarios personalizar y adaptar el servidor para satisfacer sus necesidades específicas. Esto es algo que puede suponer un ahorro de dinero y tiempo importante, sobre todo si tenemos previsión de que la organización o el sistema en sí, puede crecer en gran medida en un futuro. Para el cual ya estaremos preparados.
Una vez que ya conocemos las principales características de proFTPd, vamos a ver cómo instalar este servidor en cualquier distribución de Linux o Unix.
Desventajas ProFTPd para Linux
Pese a que este tipo de servidor tiene muchas ventajas que ya hemos visto, también hay que hacer mención a sus desventajas, puesto que para algunas personas pueden ser importantes a la hora de iniciarse, o no, en este tipo de FPT.
- Complejidad de configuración: Si no eres un usuario experimentado, este tipo de servidores pueden resultarte tediosos de configurar. Realmente no son difíciles, pero tendrás que seguir un tutorial para ello, y posiblemente cometas algún error básico.
- Seguridad: Pese a que también hablamos de este punto en los pros, estos servidores FTP mal configurados pueden ser objetivo de ataques, por lo que tendremos que tener en cuenta el punto anterior, y si no sabemos realmente como hacerlo, mejor no hacerlo mal, ya que podríamos correr riegos en el futuro.
- Rendimiento y recursos: ProFTPd consume más recursos que la media de los servidores del mismo estilo, por lo que necesitarás un hardware y conexión potente, lo que también lleva a problemas de rendimiento con altas cargas de trabajo si no está optimizado correctamente.
- Compatibilidad: Las versiones más recientes del programa no son compatibles con versiones de sistemas operativos antiguas, por lo que no podremos configurarlas en ellos.
- Soporte: Aunque tiene mucha comunidad detrás, esta no cuenta con un soporte real, como otras opciones comerciales que podremos encontrar en el mercado.
- Falta de características: Pese a tener versiones modernas, muchas de las características que otros servidores FPT tienen actualmente, este no cuenta con ellas, por lo que, salvo que posea las necesarias, será mejor irse a por otro más completo, pensando en el futuro.
- Interfaz gráfica: La falta de una interfaz, y el tener que usar línea de comandos para prácticamente todo es un punto negativo y al que estamos poco acostumbrados a día de hoy, aunque en Linux es más normal.
Instalación de proFTPd
proFTPd es muy fácil de instalar porque se encuentra en los repositorios de software de todas las distribuciones Linux y Unix, no obstante, también podrías descargarlo desde la web oficial para posteriormente instalarlo de manera manual. Para instalarlo en cualquier distribución de Linux como Debian o Ubuntu, bastará con instalar el paquete «proftpd» desde un terminal con el siguiente comando:
sudo apt install proftpd
Durante la instalación nos preguntará sobre el tipo de instalación que queremos. En caso de hacer poco uso del servidor FTP podemos seleccionar la opción «inetd» para ahorrar recursos del sistema. Si vamos a hacer un uso considerable del servidor FTP con varios usuarios y bastante tiempo deberíamos instalarlo como «standalone» o «independientemente». Esta configuración se podría modificar posteriormente, pero os recomendamos seleccionar «standalone» porque se ejecutará como un servidor independiente, y en caso de tener un alto tráfico, te funcionará mejor.
Seleccionamos la opción que más se ajuste a nuestras necesidades y finalizamos la instalación del servidor. Tal y como ocurre con otros programas en Linux, no será necesario reiniciar el ordenador ni el servidor, podemos empezar a trabajar con él instantáneamente.
Iniciar, parar, reiniciar y recargar el proceso de proFTPd
Si necesitas iniciar, parar o reiniciar el proceso de proFTPd, y utilizas el sistema SysVinit típico, podrás ejecutar los siguientes comandos para realizar todas las acciones.
Para iniciar el servidor proFTPD:
/etc/init.d/proftpd start
o también puedes usar:
service proftpd start
Para parar el servidor proFTPD:
/etc/init.d/proftpd stop
o también puedes usar:
service proftpd stop
Si quieres reiniciar el servidor proFTPd puedes usar:
/etc/init.d/proftpd restart
o también puedes usar:
service proftpd restart
Si necesitas iniciar, parar o reiniciar el proceso de proFTPd, y utilizas el sistema systemd, podrás ejecutar los siguientes comandos para realizar todas las acciones.
Para iniciar el servidor proFTPD:
systemctl start proftpd
o también puedes usar:
systemctl start proftpd.service
Para parar el servidor proFTPD:
systemctl stop proftpd
o también puedes usar:
systemctl stop proftpd.service
Si quieres reiniciar el servidor proFTPd puedes usar:
systemctl restartproftpd
o también puedes usar:
systemctl restart proftpd.service
¿Cuándo necesitaríamos hacer un «reload» para recargar el servicio proFTPd? Cuando hagamos un cambio en la configuración, para que automáticamente la aplique. En el caso de utilizar SysVinit para hacer el «reload», deberás poner lo siguiente:
/etc/init.d/proftpd reload
o también puedes usar:
service proftpd reload
En el caso de utilizar Systemd, deberás poner lo siguiente:
systemctl reload proftpd
o también puedes usar:
systemctl reload proftpd.service
Finalmente, si quieres ver el estado actual del servidor proFTPd, puedes ejecutar los siguientes comandos, dependiendo de si utilizas SysVinit o Systemd, deberás utilizar los siguientes comandos. Si usas SysVinit tendrás que usar:
service proftpd status
ó
/etc/init.d/proftpd status
y si utilizas Systemd:
systemctl status proftpd
ó
systemctl status proftpd.service
Una vez que ya sabéis iniciar, parar, restaurar, recargar la configuración y ver el estado del software proFTPd, vamos a ver cómo podemos configurarlo con el arranque del sistema.
Configurar proFTPd al arranque del sistema
Cuando instalamos proFTPd, automáticamente lo tendremos puesto al inicio, es decir, cuando arranque el sistema arrancará el proceso de proFTPd para que podamos conectarnos. En caso de que esto no ocurra, siempre podremos activarlo de manera manual ejecutando los siguientes comandos:
Si utilizas SysVinit:
chkconfig proftpd on
Si utilizas systemd:
systemctl enable proftpd
systemctl enable proftpd.service
En estos instantes, cada vez que reiniciemos el servidor Linux donde tengamos instalado este servidor FTP de alto rendimiento y muy avanzado en cuanto a opciones de configuración, se iniciará automáticamente y estará disponible para aceptar las conexiones entrantes vía FTP.
Una vez que sabemos cómo arrancarlo con el sistema, vamos a ver todas y cada una de las configuraciones de proFTPd para que podáis configurarlo todo en detalle.
Configuración de proFTPd
El archivo de configuración principal de proFTPd se encuentra en /etc/proftpd/proftpd.conf. Desde aquí deberemos configurar la mayoría de los aspectos de nuestro servidor FTP. Lo primero que debemos hacer es establecer una carpeta como directorio principal para todos los usuarios del FTP. Para ello, abriremos con nuestro editor de texto preferido el archivo de configuración anterior:
sudo gedit /etc/proftpd/proftpd.conf
Este archivo de configuración en formato texto también podremos abrirlo directamente en consola haciendo uso de herramientas como nano, vim o vi. Gracias a estos programas podrás editar ficheros de texto directamente desde la consola, sin necesidad de tener un entorno gráfico de usuario. Debemos recordar que los servidores normalmente no tienen interfaz gráfica de usuario, solamente los podremos administrar a través de comandos por consola SSH.
Una vez allí, buscaremos la línea comentada «DefaultRoot» y la descomentamos borrando la almohadilla #. Esto nos va a permitir que cuando cada usuario acceda a su cuenta del FTP, estos accederán directamente a su carpeta «home».
Si queremos que todos los usuarios que inicien sesión accedan por defecto a una misma carpeta, debemos cambiar el parámetro DefaultRoot y añadir la ruta a la que queramos que accedan. Por ejemplo, en nuestro caso hemos creado una carpeta llamada «proftpd» dentro de /home/ y queremos que todos los usuarios por defecto accedan a ella. El archivo de configuración quedará de la siguiente manera:
También podemos hacer que todos los usuarios accedan por defecto a una carpeta (como en el paso anterior) salvo un usuario que queremos que acceda a otra o, simplemente, tenga permiso de administrador y pueda acceder a todo el disco.
Para ello debemos modificar los siguientes aspectos:
El parámetro DefaultRoot tiene la siguiente estructura:
DefaultRoot [directorio] [grupo de usuarios que tendrán ese directorio por defecto] [Grupo de usuarios a los que no se les aplicará ese directorio]
Es decir, vamos a poner el ejemplo de tener 2 usuarios, A y B. A únicamente podrá acceder a su directorio mientras que B podrá acceder a todo el disco duro. Debemos añadir las siguientes líneas:
DefaultRoot /home/ftp A
DefaultRoot / B
De esta manera, cuando el usuario B acceder al servidor tendrá control completo sobre todos los archivos del disco, mientras que si es A quien accede, únicamente podrá gestionar su carpeta.
Otros parámetros interesantes para configurar son:
- ServerName: nos permite establecer un nombre al servidor.
- AccessGrantMsg: Mensaje de bienvenida. (Hay que añadirlo manualmente al final del archivo).
- AccessDenyMsg: Mensaje de error al iniciar. (Hay que añadirlo manualmente al final del archivo).
A continuación, reiniciaremos el servidor para que se apliquen los cambios realizados tecleando:
sudo /etc/init.d/proftpd restart
Vamos a comprobar que el servidor nos funciona. Para ello utilizaremos un cliente como FileZilla y nos conectaremos a nuestra cuenta.
Crear usuarios y contraseñas para el FTP
Ahora vamos a mostrar cómo podemos crear un usuario y poder así gestionar el contenido de una manera sencilla y rápida. Esto es algo que podemos hacer en cualquier momento y crear tantos usuarios como queramos. Además, hay que asignar un nombre, contraseña, directorio y también una cuota de almacenamiento, aunque esto es voluntario y podemos dejarlo simplemente en ilimitado.
A través de Cuenta de FTP podremos administrar las cuentas que ya hemos creado o también crear una nueva, que es lo que nos interesa. Veremos automáticamente la opción de Añadir una cuenta de FTP. Tendremos que rellenar los datos como nos aparece en la imagen de abajo.
Para conectarnos al servidor FTP es fundamental contar con un usuario y contraseña, de hecho, proFTPd nos permite crear varios usuarios virtuales, esto significa que no tendremos que crearlos en el propio sistema operativo Linux para que posteriormente se conecten al servidor FTP. Esto es una de las características más interesantes de este FTP, no obstante, lo más normal sería crear diferentes usuarios y grupos con diferentes permisos como si fuera una carpeta compartida vía Samba.
El proceso para crear usuarios es el mismo que para crearlos en el sistema ya que proftpd utiliza los usuarios del sistema por defecto, de manera opcional podríamos crear los usuarios virtuales. Debemos teclear los siguientes parámetros en un terminal:
Si queremos crear un usuario, tendremos que poner la siguiente orden y seguir los pasos del asistente de configuración que tenemos en nuestra distribución con Linux.
sudo adduser usuario
Dentro del asistente, siempre nos va a indicar que pongamos la contraseña del nuevo usuario, no obstante, podríamos cambiar esta contraseña en cualquier momento poniendo al siguiente orden:
sudo passwd usuario
Esta orden lo que hace es cambiar la clave del usuario «usuario» por la que nosotros deseemos.
A partir de ahora, «usuario» podrá conectarse al FTP y accederá, por defecto, a la carpeta especificada en DefaultRoot.
- Gestionar el tamaño disponible
Podemos crear tantas cuentas como queramos, siempre y cuando no superen el almacenamiento disponible. Hemos visto que a la hora de crear una nueva cuenta FTP para el hosting podemos asignarle un tamaño máximo. Esto es útil si no queremos problemas en nuestro sitio al quedarnos sin espacio disponible. Ya sabemos que esto puede ser limitado, según el hosting que tengamos contratado podemos tener más o menos espacio disponible.
Cada imagen, cada vídeo o cualquier archivo que subamos va a consumir esa memoria disponible. Por tanto, debemos gestionar el espacio que tenemos libre. Si fuera necesario, siempre podemos ampliar el almacenamiento. Normalmente los hostings suelen ser muy escalables, por lo que fácilmente podemos pasar a un nivel superior y poder contar con más espacio en disco disponible para poder guardar nuestros archivos sin mayores problemas.
En definitiva, administrar los archivos mediante FTP es algo muy útil. Especialmente cuando tenemos que cargar grandes archivos o muchos a la vez. Una manera sencilla e intuitiva de conectarnos al servidor y poder gestionar todo rápidamente en nuestra página web. Para ello utilizaremos la plataforma propia del hosting que tenemos, pero también está la opción de hacer uso de una herramienta independiente, como pueden ser FileZilla o WinSCP.
Permitir y denegar usuarios
proFTPd nos permite controlar los usuarios que pueden y no pueden iniciar sesión en nuestro servidor de una forma muy sencilla. Para ello, abrimos el archivo de configuración y añadiremos lo siguiente al final de este:
<Limit LOGIN>
AllowUser ruvelro
DenyAll
</Limit>
Otros parámetros que podemos utilizar aquí son:
- AllowUser: Nos permite permitir un usuario específico.
- DenyUser: Bloqueamos el acceso a un usuario específico.
- DenyAll: Bloqueamos el acceso a todos los usuarios salvo a los que especifiquemos con AllowUser.
- AllowAll: Permite que los usuarios como «anonymous» se conecten al FTP.
Dependiendo de lo que nos interese, podremos permitir o denegar los diferentes grupos de usuarios y usuarios, este servidor FTP es realmente muy configurable. Además, si queremos permitir las conexiones anónimas a nuestro FTP debemos añadir dentro del grupo anterior el parámetro AllowAll, quedando de la siguiente manera:
<Limit LOGIN>
AllowUser ruvelro
AllowAll
</Limit>
También podríamos poner un «DenyAll» en la parte final, con el objetivo de bloquear cualquier intento de acceso de los usuarios que tengamos excepto a los usuarios específicamente permitidos.
Para añadir un usuario nuevo debemos crear a este una cuenta de usuario en nuestro Ubuntu y accederá al servidor FTP con las credenciales de su cuenta.
Otros comandos de utilidad para proFTPd
Podemos consultar un registro de inicio de sesión y actividad con el siguiente parámetro:
sudo cat /var/log/proftpd/proftpd.log
Este comando lo que hace es mostrarnos todo el archivo de log del servidor FTP, en caso de querer mostrar las últimas líneas, podremos hacer uso del popular comando «tail», e incluso podremos ver los logs en tiempo real haciendo uso de «tail -f /var/log/proftpd/proftpd.log» para ver todos los registros en tiempo real.
Podemos consultar los usuarios que están conectados a nuestro servidor FTP en tiempo real con los siguientes comandos:
ftpwho
ftptop
Configurar FTPES en el servidor proFTPd para tener seguridad
FTPES se conoce como FTP Explícito, este protocolo nos permite conectanors al puerto TCP 21 del servidor FTP, y antes de autenticarnos y empezar a transferir información, se le añade una capa TLS 1.2 o TLS 1.3 para proteger toda la información. Por tanto, con FTPES seguiremos haciendo uso del popular puerto 21, o el puerto que vosotros queráis utilizar. También tenemos la posibilidad de solo permitir conexiones FTPES, y dejar las conexiones FTP de lado, para que tanto la autenticación como la transferencia de ficheros sean seguros. Debido a la utilización del protocolo TLS/SSL, deberemos configurar en el servidor un certificado RSA o similar, con su clave pública y su clave privada, para poder levantar correctamente el servicio de FTP.
Lo primero que debemos hacer es activar la directiva en el fichero de configuración principal de proFTPd, descomentando la parte de «Include /etc/proftpd/tls.conf», tal y como podéis ver a continuación:
Ahora vamos a crear el certificado digital RSA, necesitaremos tanto la clave pública como la clave privada que genera, para que los clientes se puedan conectar correctamente al servidor proFTPd con FTPES. El propio proFTPd incorpora una herramienta que automatiza mucho el proceso de crear certificados, esta herramienta se llama proftpd-gencert, y es muy fácil de utilizar:
root@debian-vm:/home/bron# proftpd-gencert
Generating a RSA private key
.............................................................................................................+++++
...............+++++
writing new private key to '/etc/ssl/private/proftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:RedesZone
Locality Name (eg, city) []:RedesZone
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RZ
Organizational Unit Name (eg, section) []:RZ
Common Name (e.g. server FQDN or YOUR name) []:RedesZone.NET
Email Address []:webmaster
Use the following information in your ProFTPD configuration:
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
See /etc/proftpd/tls.conf for suggested TLS related configuration
items and include that file in your /etc/proftpd/proftpd.conf file.
root@debian-vm:/home/bron#
Pero nosotros os vamos a enseñar cómo hacerlo «manualmente» para seleccionar la longitud de clave RSA que vosotros queráis. Para hacer esto mismo, tendremos que ejecutar el siguiente comando:
openssl genrsa -out /etc/ssl/private/proftpd.key 4096
Este comando genera la clave privada con 4096 bits RSA, posteriormente tendremos que generar el certificado digital público que se compartirá con los clientes:
openssl req -new -x509 -days 1460 -key /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
Indicamos que queremos que caduque en 1460 días, y aquí tendremos que importar la clave privada y posteriormente exportar el certificado proftpd.crt a ese directorio. El proceso que hemos seguido es el siguiente, tal y como podéis ver en este registro:
root@debian-vm:/home/bron# openssl genrsa -out /etc/ssl/private/proftpd.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
...................................................................................................................................................................++++
..................................................++++
e is 65537 (0x010001)
root@debian-vm:/home/bron# openssl req -new -x509 -days 1460 -key /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:RedesZone
Locality Name (eg, city) []:RZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RZ
Organizational Unit Name (eg, section) []:RZ
Common Name (e.g. server FQDN or YOUR name) []:RZ
Email Address []:webmaster
root@debian-vm:/home/bron#
Una vez que lo hayamos hecho, podremos editar el fichero de configuración «etc/proftpd/tls.conf», el cual tiene esta configuración de manera predeterminada:
# Proftpd sample configuration for FTPS connections.
#
# Note that FTPS impose some limitations in NAT traversing.
# See http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-TLS.html
# for more information.
##TLSEngine on
#TLSLog /var/log/proftpd/tls.log
#TLSProtocol SSLv23
#
# Server SSL certificate. You can generate a self-signed certificate using
# a command like:
#
# openssl req -x509 -newkey rsa:1024
# -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
# -nodes -days 365
#
# The proftpd.key file must be readable by root only. The other file can be
# readable by anyone.
#
# chmod 0600 /etc/ssl/private/proftpd.key
# chmod 0640 /etc/ssl/private/proftpd.key
#
#TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
#TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
#
# CA the server trusts...
#TLSCACertificateFile /etc/ssl/certs/CA.pem
# ...or avoid CA cert and be verbose
#TLSOptions NoCertRequest EnableDiags
# ... or the same with relaxed session use for some clients (e.g. FireFtp)
#TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
#
#
# Per default drop connection if client tries to start a renegotiate
# This is a fix for CVE-2009-3555 but could break some clients.
#
#TLSOptions AllowClientRenegotiations
#
# Authenticate clients that want to use FTP over TLS?
#
#TLSVerifyClient off
#
# Are clients required to use FTP over TLS when talking to this server?
#
#TLSRequired on
#
# Allow SSL/TLS renegotiations when the client requests them, but
# do not force the renegotations. Some clients do not support
# SSL/TLS renegotiations; when mod_tls forces a renegotiation, these
# clients will close the data connection, or there will be a timeout
# on an idle data connection.
#
#TLSRenegotiate required off
El fichero de configuración que debemos tener nosotros en /etc/proftpd/tls.conf es el siguiente:
TLSEngine on
TLSLog /var/ftpd/tls.logTLSProtocol TLSv1.2 TLSv1.3
TLSRequired off
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.keyTLSVerifyClient off
TLSRenegotiate none
Guardamos el archivo, y procedemos a reiniciar el servicio de proFTPd con lo que hemos aprendido anteriormente. Cuando nos vayamos a conectar, veremos que efectivamente nos estamos conectando con TLS 1.3 con un intercambio de claves seguro, y con un cifrado AES-256-GCM que nos proporcionará la mejor seguridad y rendimiento.
También podréis crear certificados basados en ECC, ya que proFTPd incorpora directivas «TLSECCertificateFile» y también «TLSECCertificateKeyFile» para ello. Podéis ver todas las opciones disponibles sobre FTPES y TLS en proFTPd en la web oficial del mod_tls.
Como podemos ver, proFTPd es un servidor FTP muy potente y sencillo de configurar. Con ProFTPd no tendremos problemas, por ejemplo, a la hora de tener que usar el servidor con muchos usuarios a la vez ni al tener que compartir archivos con muchos usuarios al mismo tiempo. Gracias a sus opciones de configuración avanzadas tenemos la posibilidad de definir todos los parámetros del servidor FTP en detalle, este software es más potente y avanzado que vsftpd, otro de los softwares por excelencia para crear un servidor FTP en sistemas Linux.
Proftpd también es compatible con sistemas operativo FreeBSD y derivados, por este motivo, sistemas operativos orientados a servidores NAS como XigmaNAS o TrueNAS disponen de este software para funcionar como servidor FTP.
Alternativas a proFTPd
En todas las herramientas que utilizamos en nuestro día a día, podemos encontrar alternativas. Si bien unas son más utilizadas que otras debido a su versatilidad o capacidades, es probable que en algún momento notemos que necesitemos algo que no tiene el sistema que estamos utilizando. Esto es normal, pero en muchos casos es algo que no compensa del todo, por lo cual se busca una solución que sea válida a todos los efectos. Y que ocasiones la menor pérdida de tiempo y dinero posible, obviamente, todo dentro de unos estándares de calidad que siguen las empresas. Lo cual ayuda a no comprometer el sistema de ninguna forma.
Pero en el caso de que aún no se instalara nada, es probable que se quiera ver cuáles son las opciones que tenemos disponibles. Buscar la que mejor se adapta a nuestras necesidades, o a nuestro sistema es algo que nos va permitir ahorrar tiempo y dinero. A la vez que facilitará mucho las labores de administración que sean necesarias.
Estas son solo algunas de las opciones que tenemos disponibles. Lo cual hace que esto sea un sector el cual, se puede adaptar en gran medida a nuestras necesidades. Lo cual, en el sector empresarial, nos puede ayudar mucho en muchos aspectos diferentes en todos los sistemas. Buscar un sistema versátil y fiable, es solo el primer paso. Luego, tendremos que ver cuál es el más adecuado para nosotros. Así que estas son algunas de las alternativas que se tienen disponibles:
- FileZilla Server
Es un servidor que soporta FTP/SSL (FTPS), Lo cual nos proporciona una seguridad bajo encriptación para las conexiones de nuestro servidor. Esta alternativa está disponible para sistemas operativos como Windows, a partir de la versión Windows 7.
Para que te hagas una idea, este programa en particular es una de las alternativas más recomendadas para Windows, aunque si se usa Linux es mejor la siguiente opción o directamente utilizar ProFTPd. Además de lo anterior, hay que señalar que esta opción es completamente gratis y es de código abierto, por lo que no tendrás ningún tipo de inconveniente para instalarlo en tu dispositivo. Y se trata de una de las recomendaciones más fiables si quieres tener varias opciones presentes.
- VSFTPD
Es uno de los más seguros que nos podeos encontrar. A la vez que resulta muy rápido para sistemas Unix, incluido Linux. Entre sus principales características se encuentran la opción de establecer límites por IP, al igual que es compatible con IPv6 o hasta te ofrece la alternativa de que puedas configurar IP virtual. Y esto es solo el inicio.
Por otro lado, hay que tener en cuenta que esta opción es un servicio realmente seguro, además de fiable y rápido. Por lo que se puede comparar a la perfección con el FTP de RedHat.
- Microsoft IIS
Es una opción muy flexible, segura y sencilla de manejar. Se puede aplicar en casi cualquier tipo de hosting web, y es ideal para emisión de contenido. Resulta muy escalable, gracias a su arquitectura abierta con gran capacidad de añadir nuevas funciones.
- PureFTPd
Por otra parte, también está este programa en concreto que es gratuito. Además de tener la opción de instalarlo sin pagar, se considera como una opción segura, la cual se centra en la eficiencia. Incluso, es fácil de usar. Y hay que señalar que PureFTPd se puede ejecutar en Linux, MacOS, OpenBSD, NetBSD, DragonflyBSD, FreeBSD, Solaris y derivados, Tru64, Irix, etc. Por lo que te ofrece compatibilidad con diferentes alternativas. De ahí que sea otra de las distintas opciones que se deben tener en cuenta como alternativa a ProFTPd.