FTP Server · 6 min read · Sep 24, 2025

Instalación de Pure-FTPd en Ubuntu 22.04

Pure-FTPd es un servidor FTP gratuito (licencia BSD), seguro, de calidad de producción y conforme a estándares. No proporciona campanas y silbatos innecesarios, sino que se centra en la eficiencia y la facilidad de uso. Esta guía proporciona un proceso paso a paso para instalar y configurar Pure-FTPd en Ubuntu.

Requisitos previos para instalar Pure-FTPd

Antes de proceder con la instalación, asegúrate de tener:

  • Un servidor Ubuntu configurado
  • Acceso a una cuenta de usuario con privilegios sudo

Instalación paso a paso de Pure-FTPd

Actualizando los paquetes del sistema

Primero, actualiza la lista de paquetes de tu sistema:

sudo apt update

Instalando Pure-FTPd

A continuación, instala Pure-FTPd utilizando el siguiente comando:

sudo apt install pure-ftpd

Configurando Pure-FTPd para una mayor seguridad

Configurando un entorno seguro

Crea un grupo dedicado para usuarios FTP:

sudo groupadd ftpgroup

Crea un usuario para Pure-FTPd:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Gestionando el acceso de usuarios

Para agregar un usuario al servidor FTP:

sudo pure-pw useradd [nombredeusuario] -u ftpuser -g ftpgroup -d /home/ftpusers/[nombredeusuario]  
sudo pure-pw mkdb

Reemplaza [nombredeusuario] con el nombre de usuario deseado.

Configurando TLS para transferencia de datos segura

Genera un certificado autofirmado:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Modifica la configuración de Pure-FTPd para activar TLS:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS  
sudo service pure-ftpd restart

Opciones de configuración avanzadas

Aquí hay una lista de configuraciones comunes que se pueden configurar para Pure-FTPd en /etc/pure-ftpd/conf/ directorio en Ubuntu. El nombre del archivo de configuración está en negrita.

  • AltLog: Especifica métodos de registro alternativos. Por ejemplo, AltLog clf:/var/log/pureftpd.log registrará transferencias en formato W3C.
  • AnonymousOnly: Cuando está habilitado (creando un archivo llamado AnonymousOnly), restringe el servidor para permitir solo inicios de sesión anónimos.
  • AntiWarez: Si este archivo existe, se prohíbe a los usuarios cargar archivos que ya existen en el servidor.
  • AutoRename: Renombra automáticamente los archivos cargados si ya existe un archivo con el mismo nombre.
  • Bind: Asocia el servidor a una dirección IP y puerto específicos. Por ejemplo, Bind 21 se asocia al puerto 21 en todas las direcciones disponibles.
  • BrokenClientsCompatibility: Habilita la compatibilidad con clientes FTP que no se adhieren estrictamente a los estándares FTP.
  • ChrootEveryone: Si está habilitado, restringe a todos los usuarios a su directorio personal.
  • CreateHomeDir: Crea automáticamente directorios personales si no existen cuando un usuario inicia sesión.
  • CustomerProof: Aumenta la resistencia contra errores comunes en configuraciones y comandos de clientes.
  • Daemonize: Cuando este archivo existe, Pure-FTPd se ejecutará como un demonio.
  • DisplayDotFiles: Controla si se muestran o no los archivos ocultos.
  • DontResolve: Previene la resolución DNS para el registro y control de ancho de banda, lo que puede mejorar el rendimiento.
  • ExtAuth: Especifica un programa externo para la autenticación de usuarios.
  • ForcePassiveIP: Obliga al servidor a informar una dirección IP específica a los clientes en modo pasivo.
  • FSCharset: Establece el conjunto de caracteres del sistema de archivos, útil para nombres de archivo no ASCII.
  • IPv4Only o IPv6Only: Restringe al servidor a escuchar solo direcciones IPv4 o IPv6.
  • KeepAllFiles: Previene la eliminación de cualquier archivo en el servidor.
  • LDAPConfigFile: Especifica la ruta al archivo de configuración LDAP para la autenticación.
  • LimitRecursion: Limita la profundidad de recursión y el número de archivos mostrados en listados de directorios.
  • MaxClientsNumber: Limita el número máximo de clientes simultáneos.
  • MaxClientsPerIP: Restringe el número de conexiones simultáneas desde una sola dirección IP.
  • MaxDiskUsage: Limita el porcentaje de uso del disco.
  • MaxIdleTime: Establece el tiempo máximo de inactividad en minutos antes de desconectar a un cliente.
  • MaxLoad: Desconecta a los clientes o rechaza nuevas conexiones por encima de una cierta carga del sistema.
  • MinUID: Establece el UID mínimo para iniciar sesión. Los usuarios con un UID más bajo no pueden iniciar sesión.
  • MySQLConfigFile: Especifica la ruta al archivo de configuración de MySQL para la autenticación basada en bases de datos.
  • NoAnonymous: Desactiva los inicios de sesión anónimos si este archivo existe.
  • NoChmod: Desactiva el comando CHMOD en el servidor.
  • NoRename: Previene que los usuarios renombren archivos.
  • PassivePortRange: Define un rango de puertos para conexiones pasivas (por ejemplo, 30000 35000).
  • PerUserLimits: Establece límites de manera individual por usuario.
  • PureDB: Especifica la ruta al archivo de base de datos de usuarios PureDB.
  • Quota: Establece límites de cuota para usuarios.
  • SyslogFacility: Define la instalación de syslog para el registro.
  • TLSCipherSuite: Especifica los cifrados TLS permitidos para conexiones encriptadas.
  • TrustedGID: Especifica una lista de IDs de grupo de confianza para iniciar sesión.
  • UMask: Establece la máscara de permisos predeterminada para la creación de archivos.
  • UnixAuthentication: Habilita la autenticación contra la base de datos de contraseñas UNIX.
  • UploadScript: Especifica un script para ejecutar después de una carga exitosa.

Esta lista cubre las opciones de configuración más comúnmente utilizadas, pero no es exhaustiva. Siempre consulta la documentación oficial de Pure-FTPd o utiliza el

pure-ftpd-wrapper --help

comando para obtener la información más precisa y completa.

Ejemplos

Aquí hay una lista de configuraciones de Pure-FTPd en /etc/pure-ftpd/conf/ con ejemplos para ilustrar los tipos de valores que aceptan:

  • AltLog: AltLog clf:/var/log/pureftpd.log - Ejemplo: clf:/var/log/pureftpd.log
  • AnonymousOnly: Habilitar creando un archivo llamado AnonymousOnly. - No se necesita valor.
  • AntiWarez: Habilitar creando un archivo llamado AntiWarez. - No se necesita valor.
  • AutoRename: Habilitar creando un archivo llamado AutoRename. - No se necesita valor.
  • Bind: Bind 21 - Ejemplo: 192.168.0.1,21
  • BrokenClientsCompatibility: Habilitar creando un archivo llamado BrokenClientsCompatibility. - No se necesita valor.
  • ChrootEveryone: Habilitar creando un archivo llamado ChrootEveryone. - No se necesita valor.
  • CreateHomeDir: Habilitar creando un archivo llamado CreateHomeDir. - No se necesita valor.
  • CustomerProof: Habilitar creando un archivo llamado CustomerProof. - No se necesita valor.
  • Daemonize: Habilitar creando un archivo llamado Daemonize. - No se necesita valor.
  • DisplayDotFiles: Habilitar creando un archivo llamado DisplayDotFiles. - No se necesita valor.
  • DontResolve: Habilitar creando un archivo llamado DontResolve. - No se necesita valor.
  • ExtAuth: ExtAuth /path/to/authenticator - Ejemplo: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1 - Ejemplo: 192.168.0.1
  • FSCharset: FSCharset utf-8 - Ejemplo: utf-8
  • IPv4Only o IPv6Only: Habilitar creando un archivo llamado IPv4Only o IPv6Only. - No se necesita valor.
  • KeepAllFiles: Habilitar creando un archivo llamado KeepAllFiles. - No se necesita valor.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf - Ejemplo: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8 - Ejemplo: 10000 8 (10000 archivos, 8 niveles de profundidad)
  • MaxClientsNumber: MaxClientsNumber 50 - Ejemplo: 50
  • MaxClientsPerIP: MaxClientsPerIP 8 - Ejemplo: 8
  • MaxDiskUsage: MaxDiskUsage 95 - Ejemplo: 95 (95 por ciento)
  • MaxIdleTime: MaxIdleTime 15 - Ejemplo: 15 (15 minutos)
  • MaxLoad: MaxLoad 4.0 - Ejemplo: 4.0
  • MinUID: MinUID 1000 - Ejemplo: 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf - Ejemplo: /etc/pure-ftpd/mysql.conf
  • NoAnonymous: Habilitar creando un archivo llamado NoAnonymous. - No se necesita valor.
  • NoChmod: Habilitar creando un archivo llamado NoChmod. - No se necesita valor.
  • NoRename: Habilitar creando un archivo llamado NoRename. - No se necesita valor.
  • PassivePortRange: PassivePortRange 30000 35000 - Ejemplo: 30000 35000
  • PerUserLimits: PerUserLimits 8 - Ejemplo: 8 (8 conexiones simultáneas por usuario)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb - Ejemplo: /etc/pure-ftpd/pureftpd.pdb
  • Quota: Quota 1000M - Ejemplo: 1000M (1000 Megabytes)
  • SyslogFacility: SyslogFacility ftp - Ejemplo: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 - Ejemplo: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000 - Ejemplo: 1000
  • UMask: UMask 133:022 - Ejemplo: 133:022 (Archivos: 133, Directorios: 022)
  • UnixAuthentication: Habilitar creando un archivo llamado UnixAuthentication. - No se necesita valor.
  • UploadScript: UploadScript /path/to/script - Ejemplo: /usr/local/bin/uploadscript

Estos ejemplos deberían aclarar cómo configurar varias opciones en Pure-FTPd.

Monitoreo y mantenimiento

Revisa regularmente los registros en /var/log/pure-ftpd/ para detectar actividades inusuales o errores.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.