Instalar Pure-FTPd en Ubuntu 22.04

Pure-FTPd es un servidor FTP gratuito (con licencia BSD), seguro, de calidad de producción y conforme a los 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 a la instalación, asegúrate de que tienes

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

Instalación paso a paso de Pure-FTPd

Actualizar los paquetes del sistema

En primer lugar, actualiza la lista de paquetes de tu sistema:

sudo apt update

Instalación de Pure-FTPd

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

sudo apt install pure-ftpd

Configurar Pure-FTPd para mejorar la seguridad

Configurar un entorno seguro

Crea un grupo dedicado a los usuarios de FTP:

sudo groupadd ftpgroup

Crea un usuario para Pure-FTPd:

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

Gestionar el acceso de usuarios

Para añadir un usuario al servidor FTP:

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

Sustituye [username] por el nombre de usuario deseado.

Configurar TLS para una transferencia de datos segura

Generar 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 avanzadas de configuración

Aquí tienes una lista de opciones comunes que se pueden configurar para Pure-FTPd en /etc/pure-ftpd/conf/ 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á las transferencias en formato W3C.
  • Sólo Anónimo: Cuando se activa (creando un archivo llamado AnonymousOnly), restringe el servidor para que sólo permita inicios de sesión anónimos.
  • AntiWarez: Si existe este archivo, se prohíbe a los usuarios subir archivos que ya existen en el servidor.
  • AutoRenombrar: Cambia automáticamente el nombre de los archivos subidos si existe un archivo con el mismo nombre.
  • Vincular: Vincula el servidor a una dirección IP y un puerto concretos. Por ejemplo, Bind 21 se vincula al puerto 21 en todas las direcciones disponibles.
  • CompatibilidadClientesRotos: Permite la compatibilidad con clientes FTP que no se adhieren estrictamente a los estándares FTP.
  • ChrootEveryone: Si está activado, restringe a todos los usuarios a su directorio personal.
  • CreateHomeDir: Crea automáticamente directorios personales si no existen cuando un usuario se conecta.
  • CustomerProof: Aumenta la resistencia frente a errores comunes cometidos en las configuraciones y comandos del cliente.
  • Daemonizar: Cuando exista este archivo, Pure-FTPd se ejecutará como demonio.
  • MostrarArchivosPunto: Controla si los archivos punto (archivos ocultos) se muestran o no.
  • NoResolver: Evita la resolución DNS para el registro y el control del 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 de 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 que no sean ASCII.
  • Sólo IPv4 o Sólo IPv6: Restringe el servidor para que sólo escuche direcciones IPv4 o IPv6.
  • MantenerTodosLosArchivos: Evita que se borre cualquier archivo del servidor.
  • LDAPConfigFile: Especifica la ruta al archivo de configuración LDAP para la autenticación.
  • LimitarRecursión: Limita la profundidad de recursión y el número de archivos mostrados en los listados de directorios.
  • NúmeroMáximoDeClientes: Limita el número máximo de clientes simultáneos.
  • MaxClientsPerIP: Limita el número de conexiones simultáneas desde una única 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.
  • CargaMáx: Desconecta a los clientes o rechaza nuevas conexiones por encima de una determinada carga del sistema.
  • MinUID: Establece el UID mínimo para iniciar sesión. Los usuarios con un UID inferior 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.
  • NoAnónimo: Desactiva los inicios de sesión anónimos si existe este archivo.
  • NoChmod: Desactiva el comando CHMOD en el servidor.
  • NoRename: Impide que los usuarios cambien el nombre de los archivos.
  • RangoPuertosPasivos: Define un rango de puertos para las conexiones pasivas (por ejemplo, 30000 35000).
  • LímitesPorUsuario: Establece límites por usuario.
  • PureDB: Especifica la ruta al archivo de la base de datos de usuarios PureDB.
  • Cuota: Establece los límites de cuota de usuario.
  • SyslogFacility: Define la instalación syslog para el registro.
  • TLSCipherSuite: Especifica los cifrados TLS permitidos para las conexiones cifradas.
  • TrustedGID: Especifica una lista de IDs de grupo de confianza para el inicio de sesión.
  • UMask: Establece la umask por defecto para la creación de archivos.
  • AutenticaciónUnix: Activa la autenticación contra la base de datos de contraseñas UNIX.
  • UploadScript: Especifica un script que se ejecutará después de una subida correcta.

Esta lista cubre las opciones de configuración más utilizadas, pero no es exhaustiva. Consulta siempre la documentación oficial de Pure-FTPd o utiliza el comando

pure-ftpd-wrapper --help

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

Ejemplos

Aquí tienes una lista de opciones de configuración 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: Activar creando un archivo llamado AnonymousOnly.
    • No se necesita ningún valor.
  • AntiWarez: Activar creando un archivo llamado AntiWarez.
    • No se necesita ningún valor.
  • AutoRename: Activar creando un archivo llamado AutoRename.
    • No se necesita ningún valor.
  • Vincular: Bind 21
    • Ejemplo: 192.168.0.1,21
  • BrokenClientsCompatibilidad: Actívala creando un archivo llamado BrokenClientsCompatibility.
    • No se necesita ningún valor.
  • ChrootTodos: Activar creando un archivo llamado ChrootEveryone.
    • No se necesita ningún valor.
  • CreateHomeDir: Activar creando un archivo llamado CreateHomeDir.
    • No se necesita ningún valor.
  • PruebaCliente: Activar creando un archivo llamado CustomerProof.
    • No se necesita ningún valor.
  • Daemonizar: Activar creando un archivo llamado Daemonize.
    • No se necesita ningún valor.
  • MostrarArchivosPuntos: Activar creando un archivo llamado DisplayDotFiles.
    • No se necesita ningún valor.
  • No resolver: Activar creando un archivo llamado DontResolve.
    • No se necesita ningún 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
  • Sólo IPv4 o Sólo IPv6: Activar creando un archivo llamado IPv4Only o IPv6Only.
    • No se necesita ningún valor.
  • MantenerTodosLosArchivos: Activar creando un archivo llamado KeepAllFiles.
    • No se necesita ningún valor.
  • Archivo LDAPConfig: 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)
  • NúmeroMáximoDeClientes: MaxClientsNumber 50
    • Ejemplo: 50
  • MaxClientesPorIP: MaxClientsPerIP 8
    • Ejemplo: 8
  • MaxDiskUsage: MaxDiskUsage 95
    • Ejemplo: 95 (95 por ciento)
  • Tiempo máximo de inactividad: MaxIdleTime 15
    • Ejemplo: 15 (15 minutos)
  • Carga máxima: 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: Activar creando un archivo llamado NoAnonymous.
    • No se necesita ningún valor.
  • NoChmod: Actívalo creando un archivo llamado NoChmod.
    • No se necesita ningún valor.
  • NoRename: Activar creando un archivo llamado NoRename.
    • No se necesita ningún valor.
  • RangoPuertoPasivo: 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
  • Cuota: Quota 1000M
    • Ejemplo: 1000M (1000 Megabytes)
  • Instalación Syslog: SyslogFacility ftp
    • Ejemplo: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
    • Ejemplo: TLSCipherSuite: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000
    • Ejemplo: 1000
  • UMask: UMask 133:022
    • Ejemplo: 133:022 (Ficheros: 133, Directorios: 022)
  • Autenticación Unix: Actívala creando un archivo llamado UnixAuthentication.
    • No se necesita ningún valor.
  • UploadScript: UploadScript /path/to/script
    • Ejemplo: /usr/local/bin/uploadscript

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

Supervisión y mantenimiento

Comprueba regularmente los registros en /var/log/pure-ftpd/ para detectar cualquier actividad inusual o error.

También te podría gustar...