Tutorial de Instalación y Configuración de
ProFTPd en Ubuntu
Introducción
ProFTPD es un servidor FTP potente y altamente configurable para sistemas Linux/Unix. Este
tutorial te guiará paso a paso en el proceso de instalación y configuración de ProFTPD en un
servidor Ubuntu, cubriendo desde la instalación básica hasta configuraciones de seguridad
avanzadas.
Índice
1. Requisitos previos
2. Instalación de ProFTPD
3. Configuración básica
4. Configuración de usuarios
5. Configuración de seguridad
6. Configuración de SSL/TLS
7. Configuración de firewall
8. Ejemplos de configuración avanzada
9. Solución de problemas
10.Optimización y mantenimiento
Requisitos previos
Antes de comenzar, necesitarás:
• Un servidor con Ubuntu (18.04, 20.04, 22.04 o superior)
• Acceso root o usuario con privilegios sudo
• Conexión a Internet para descargar paquetes
• Conocimientos básicos de administración de servidores Linux
Instalación de ProFTPD
Actualización del sistema
Primero, actualiza los repositorios e instala las actualizaciones disponibles:
bash
sudo apt update
sudo apt upgrade -y
Instalación del paquete ProFTPD
Instala ProFTPD desde los repositorios oficiales de Ubuntu:
bash
sudo apt install proftpd -y
Durante la instalación, es posible que se te pregunte si deseas ejecutar ProFTPD como un servidor
independiente o desde inetd. Selecciona la opción "standalone" (independiente), ya que proporciona
mejor rendimiento y es la configuración más común.
Verificar el estado del servicio
Una vez instalado, verifica que el servicio esté en ejecución:
bash
sudo systemctl status proftpd
Si el servicio no está activo, puedes iniciarlo con:
bash
sudo systemctl start proftpd
Para asegurarte de que ProFTPD se inicie automáticamente durante el arranque del sistema:
bash
sudo systemctl enable proftpd
Configuración básica
El archivo de configuración principal de ProFTPD se encuentra en
/etc/proftpd/proftpd.conf. Antes de modificarlo, es recomendable hacer una copia de
seguridad:
bash
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.original
Ahora, edita el archivo de configuración:
bash
sudo nano /etc/proftpd/proftpd.conf
Configuración básica recomendada
Aquí hay algunas configuraciones básicas recomendadas. Puedes modificar o añadir estas líneas en
tu archivo de configuración:
# Identidad del servidor
ServerName "Mi Servidor FTP"
ServerType standalone
ServerIdent on "FTP Server Ready."
# Configuración global
DefaultServer on
Port 21
Umask 022
MaxInstances 30
User proftpd
Group nogroup
# Opciones de timeout y conexión
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
# Directorios y archivos del sistema
DefaultRoot ~
RequireValidShell off
Después de realizar cambios en la configuración, reinicia ProFTPD para aplicarlos:
bash
sudo systemctl restart proftpd
Configuración de usuarios
Creación de usuarios FTP
Puedes utilizar los usuarios del sistema para acceder al servidor FTP. Para crear un nuevo usuario:
bash
sudo adduser ftpuser
Sigue las instrucciones para establecer una contraseña y otra información opcional.
Crear un directorio para FTP y asignar permisos
bash
sudo mkdir -p /srv/ftp/ftpuser
sudo chown ftpuser:ftpuser /srv/ftp/ftpuser
Restringir usuarios a un directorio específico (chroot)
Por defecto, la configuración DefaultRoot ~ en ProFTPD ya restringe a los usuarios a su
directorio personal. Sin embargo, si deseas configurar directorios específicos para usuarios FTP:
1. Modifica el archivo de configuración:
bash
sudo nano /etc/proftpd/proftpd.conf
2. Añade o modifica la siguiente sección:
<Directory /srv/ftp/ftpuser>
AllowOverwrite on
<Limit ALL>
AllowUser ftpuser
DenyAll
</Limit>
</Directory>
Usuarios virtuales
Para crear usuarios FTP que no sean usuarios del sistema (usuarios virtuales), puedes utilizar
módulos como mod_auth_file o mod_sql. Para una configuración básica con
mod_auth_file:
1. Crea un archivo de contraseñas:
bash
sudo apt install apache2-utils
sudo htpasswd -c /etc/proftpd/ftpd.passwd usuario_virtual
2. Añade la siguiente configuración a proftpd.conf:
# Módulo para autenticación por archivo
LoadModule mod_auth_file.c
# Configuración de autenticación para usuarios virtuales
AuthUserFile /etc/proftpd/ftpd.passwd
AuthOrder mod_auth_file.c
Configuración de seguridad
Limitar acceso por IP
Para permitir o denegar el acceso desde direcciones IP específicas:
<Limit LOGIN>
Order Allow,Deny
Allow from 192.168.1.0/24
Deny from all
</Limit>
Limitar comandos FTP
Para restringir ciertos comandos FTP:
<Limit SITE_CHMOD>
DenyAll
</Limit>
Configurar mensajes personalizados
Puedes configurar mensajes para diferentes eventos:
DisplayLogin /etc/proftpd/welcome.msg
DisplayChdir .message
Crea el archivo de bienvenida:
bash
sudo nano /etc/proftpd/welcome.msg
Añade el mensaje de bienvenida:
*********************************************************
* Bienvenido al servidor FTP *
* Todo el acceso no autorizado está prohibido *
* Las actividades están siendo monitoreadas y grabadas *
*********************************************************
Configuración de SSL/TLS
Para implementar una conexión FTP segura (FTPS), necesitas configurar SSL/TLS:
Instalar módulo TLS
bash
sudo apt install proftpd-mod-crypto
Generar certificados SSL
bash
sudo mkdir -p /etc/proftpd/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout
/etc/proftpd/ssl/proftpd.key.pem
Configurar permisos para los certificados
bash
sudo chmod 600 /etc/proftpd/ssl/proftpd.*
Configurar TLS
Edita el archivo de configuración de TLS:
bash
sudo nano /etc/proftpd/tls.conf
Asegúrate de que contenga o añade lo siguiente:
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
# Certificados
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
# Autenticación
TLSVerifyClient off
# Requerir TLS para diversos comandos
TLSRequired on
# Opciones de sesión
TLSOptions NoSessionReuseRequired
TLSSessionCache shm:/tmp/TLSSessionCache
</IfModule>
Asegúrate de que esta configuración esté incluida en el archivo principal:
bash
sudo nano /etc/proftpd/proftpd.conf
Añade o verifica que exista la siguiente línea:
Include /etc/proftpd/tls.conf
Reinicia ProFTPD:
bash
sudo systemctl restart proftpd
Configuración de firewall
Si tu servidor tiene un firewall activo (como UFW en Ubuntu), necesitarás configurarlo para
permitir tráfico FTP:
Configuración de UFW
bash
# Puerto FTP estándar
sudo ufw allow 21/tcp
# Puertos para FTP pasivo (ajusta el rango según tu configuración)
sudo ufw allow 49000:50000/tcp
Configuración de FTP pasivo
Para que el FTP pasivo funcione correctamente a través de firewalls, añade lo siguiente a
proftpd.conf:
# Configuración de FTP pasivo
PassivePorts 49000 50000
MasqueradeAddress tu-ip-publica-o-dominio.com
Reemplaza tu-ip-publica-o-dominio.com con tu dirección IP pública o nombre de
dominio.
Ejemplos de configuración avanzada
Limitar la velocidad de transferencia
Para limitar el ancho de banda utilizado por los usuarios:
# Limitar velocidad global
TransferRate STOR 2048
TransferRate RETR 8192
# Límites específicos para un grupo
<Directory /srv/ftp/grupo_limitado>
TransferRate STOR 1024
TransferRate RETR 4096
</Directory>
Añadir un banner personalizado
ServerIdent on "Servidor FTP Corporativo"
AccessGrantMsg "Bienvenido %u, acceso concedido."
Configurar cuotas de disco
Para habilitar cuotas de disco, necesitas instalar el módulo correspondiente:
bash
sudo apt install proftpd-mod-quotatab
Luego, añade la configuración siguiente a proftpd.conf:
# Cargar módulo de cuotas
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
# Configuración de cuotas
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
# Archivos de cuotas
QuotaLimitTable file:/etc/proftpd/quota.tab
QuotaTallyTable file:/etc/proftpd/quota.tally
Crea el archivo de cuotas:
bash
sudo nano /etc/proftpd/quota.tab
Añade líneas como esta para definir cuotas:
# username/groupname/class limit_type bytes/files limit_value
ftpuser user hard bytes 104857600
ftpuser user hard files 100
Solución de problemas
Verificar registros (logs)
Los registros de ProFTPD son esenciales para solucionar problemas:
bash
sudo tail -f /var/log/proftpd/proftpd.log
Para registros específicos de TLS:
bash
sudo tail -f /var/log/proftpd/tls.log
Problemas comunes y soluciones
Problema de conexión rechazada
Si los clientes no pueden conectarse, verifica:
1. Estado del servicio:
bash
sudo systemctl status proftpd
2. Configuración del firewall:
bash
sudo ufw status
3. Problemas de autenticación en los registros:
bash
sudo grep "failed" /var/log/proftpd/proftpd.log
Problemas con FTP pasivo
Si el modo pasivo no funciona:
1. Verifica que PassivePorts y MasqueradeAddress estén configurados
correctamente.
2. Asegúrate de que los puertos pasivos estén abiertos en el firewall.
3. Comprueba si hay NAT/enrutamiento que pueda estar bloqueando las conexiones.
Problemas con SSL/TLS
Si hay problemas con las conexiones seguras:
1. Verifica que los certificados existan y tengan los permisos correctos.
2. Comprueba los registros TLS.
3. Asegúrate de que el cliente esté configurado para usar el modo FTPS explícito.
Optimización y mantenimiento
Monitoreo del servicio
Para monitorear el uso de recursos y conexiones activas:
bash
sudo ftptop
Si no está instalado:
bash
sudo apt install proftpd-ftptop
Copia de seguridad de la configuración
Es recomendable hacer copias de seguridad regulares de tu configuración:
bash
sudo cp -r /etc/proftpd /etc/proftpd_backup_$(date +%Y%m%d)
Actualización segura
Para actualizar ProFTPD de manera segura:
bash
sudo apt update
sudo apt install --only-upgrade proftpd*
Conclusión
Ahora tienes un servidor ProFTPD completamente funcional y seguro en tu sistema Ubuntu.
Recuerda que la configuración óptima dependerá de tus necesidades específicas y del entorno en el
que se ejecute el servidor.
Es importante mantener el servidor actualizado y revisar periódicamente los registros de seguridad
para detectar posibles problemas o intentos de acceso no autorizado.
Referencias adicionales
• Documentación oficial de ProFTPD
• Directivas de configuración de ProFTPD
• Wiki de ProFTPD