Unas notas sobre la creación de un servidor ftp con
PureFTPd:
Instalación
Tan fácil como:
apt-get install pure-ftpd pure-ftpd-common
luego habrá que crear un usuario sin shell ni directorio raiz y un grupo, para ftp. Se creará el directorio donde estará alojado el ftp, y se le dará propiedad del usuario/grupo creados (vg. ftpuser:ftpgroup).
Configuración
En principio, la cosa podría ser tan fácil como lanzar el demonio con un puñado de opciones de configuración. De hecho, es como se hace, por ejemplo, en la plataforma OpenBSD.
Sin embargo, para Debian (y por ende, para Ubuntu), la cosa varía un poco. Básicamente, hay un script intocable en /etc/init.d, que lanza un programa llamado pure-ftpd-wrapper. Este script toma los valores de configuración de los distintos archivos en /etc/pureftpd/conf. Sobre estos valores, hay más información en la página man de pure-ftpd-wrapper, a continuación comento los que he asignado:
Valores de configuración del demonio
| AltLog |
clf:/var/log/pure-ftpd/transfer.log |
Asignación de un archivo de log del demonio |
| ChrootEveryone |
yes |
Enjaulado de todos los usuarios |
| LimitRecursion |
2000 8 |
Límite de archivos y directorios a mostrar en un listado recursivo (para evitar ataques DoS |
| MaxClientsNumber |
15 |
Límite del número de usuarios conectados a la vez |
| MaxClientsPerIP |
5 |
Límite del número de usuarios conectados desde la misma dirección |
| MaxIdleTime |
20 |
Minutos en los que se desconecta por inactividad |
| MinUID |
1000 |
Mínimo identificador de usuario aceptado para conexión |
| NoAnonymous |
yes |
Prohibe el acceso anónimo al sistema |
| PAMAuthentication |
no |
No hay autenticación por PAM |
| PureDB |
/etc/pure-ftpd/pureftpd.pdb |
Indica que se autenticará con una base de datos propia del programa |
| UnixAuthentication |
no |
No hay autenticación standard (sólo usuarios virtuales) |
| PassivePortRange |
42000 43000 |
Rango de puertos para el modo pasivo |
Administración de usuarios
Los usuarios se administran con un comando básico, pure-pw, al que se le añaden parámetros para que añada, modifique, o borre usuarios. Por ejemplo, para crear el usuario litoral, cuya raíz del sistema está en /home/ftp/litoral, ejecutamos:
~# pure-pw useradd litoral -u ftpuser -d /home/ftp/litoral
~# pure-pw mkdb
Cada vez que hacemos una modificación en la base de datos, tenemos que ejecutar el segundo comando, para que tengan efecto los cambios. Se pueden ajustar otros parámetros como el ancho de banda máximo, número de ficheros por conexión, etc.
Se adjunta el script para iptables del servidor, con los ajustes para ftp (y para algunas otras cosas)