====== Servidor de ftp pure-ftpd ======
ftp pure-ftpd
Se trata de un servidor ftp ligero (creo), que permite usuarios virtuales, es decir, que no requiere cuentas de sistema, aunque las puede soportar y que también puede (o no) 'enjaular' al usuario en su directorio, de forma que no pueda salir de él.
===== Instalación =====
(Todo como 'root')
1. Actualizar la lista de paquetes e instalar pure-ftpd:
sudo aptitude update; sudo aptitude install pure-ftpd
2. Contestar 'S' o 'Y' a todas las preguntas
Una vez instalado, el servidor ya está corriendo, y se arrancará de forma automática si se reinicia la máquina
===== Creación de usuarios =====
1. Creamos el grupo de sistema 'ftp' (si no existe, claro):
sudo groupadd ftp
2. Creamos el usuario de sistema 'ftp' (si no existe, claro) sin acceso a consola, y lo asignamos al grupo 'ftp':
sudo useradd -g ftp -d /dev/null ftp
3. (OPCIONAL) Asignamos grupos suplementarios al usuario ftp, en mi caso mldonkey:
sudo usermod -G ftp,mldonkey ftp
4. Creamos el usuario virtual (solo de pure-ftpd), que irá vinculado al usuario de sistema 'ftp':
sudo pure-pw useradd usuario_pure -u ftp -g ftp -d /ruta/acceso/usuario/pure -f /etc/pure-ftpd/pureftpd.passwd -t 10
En el ejemplo hemos limitado su capacidad de descarga a 10 Kb/s
5. Damos permisos de lectura/escritura:/etc/pure-ftpd/pureftpd.passwd
sudo chown -R ftp:ftp /ruta/acceso/usuario/pure
6. Refrescamos la base de datos de usuarios virtuales de pure-ftpd:
sudo pure-pw mkdb
La base de datos con los usuarios virtuales está en '/etc/pure-ftpd/pureftpd.pdb'
===== Especificar el uso de usuarios virtuales =====
Por defecto al arrancar pure-ftpd, o al reiniciar el servicio ('/etc/init.d/pure-ftpd restart') la autentificación la deja en manos de cuenta de sistema. Para forzar el uso de usuarios virtuales:
(Todo como root)
1. Entrar en el directorio donde se especifica el orden de sistemas de autentificación:
cd /etc/pure-ftpd/auth
2. Crear un enlace simbólico al fichero que indica el uso de usuarios virtuales:
sudo ln -s ../conf/PureDB 60puredb
Lógicamente '60' debe ser el número inferior en ese directorio para que sea la primera opción.
3. Reiniciamos el servicio:
sudo /etc/init.d/pure-ftpd restart
===== Fijar puertos =====
* Cada usuario concurrente consume 2 puertos
* Es mejor por si las moscas abrir ambos TCP/UDP en el cortafuegos si el servidor FTP esta detras de uno o mas dispositivos a traves de NAT (router, hipervisor KVM, etc...). **IMPORTANTE** Solo funciona si el cliente DESACTIVA el uso de [[http://slacksite.com/other/ftp.html|FTP pasivo]]
sudo su
echo "30000 30001" > /etc/pure-ftpd/conf/PassivePortRange
sudo /etc/init.d/pure-ftpd restart
**OJO**: esta opción limita el número máximo de usuarios que se pueden conectar al mismo tiempo. Básicamente la fórmula es:
Número máximo de usuarios concurrentes = Total puertos abiertos (2 en el ejemplo) / 2
===== Otras configuraciones =====
En general podemos ver las opciones de configuración haciendo:
man pure-ftpd
...
Alternative style :
-0 --notruncate
-1 --logpid
-4 --ipv4only
-6 --ipv6only
-a --trustedgid
-A --chrooteveryone
-b --brokenclientscompatibility
-B --daemonize
-c --maxclientsnumber
-C --maxclientsperip
-d --verboselog
-D --displaydotfiles
-e --anonymousonly
-E --noanonymous
-f --syslogfacility
-F --fortunesfile
-g --pidfile
-G --norename
-h --help
-H --dontresolve
-i --anonymouscantupload
-I --maxidletime
-j --createhomedir
-J --tlsciphersuite
-k --maxdiskusagepct
-K --keepallfiles
-l --login
-L --limitrecursion
-m --maxload
-M --anonymouscancreatedirs
-n --quota
-N --natmode
-o --uploadscript
-O --altlog
-p --passiveportrange
-P --forcepassiveip
-q --anonymousratio
-Q --userratio
-r --autorename
...
Y estas opciones tienen su correspondencia en:
man pure-ftpd-wrapper
...
Numerical values
There are several types of numerical values (one number, two numbers, one or two numbers, two octal numbers).
One number
"MaxClientsNumber", "MaxClientsPerIP", "MaxDiskUsage", "MaxIdleTime", "MaxLoad", "MinUID", "TLS", "TrustedGID".
Two numbers
"AnonymousRatio", "LimitRecursion", "PassivePortRange", "PerUserLimits", "Quota", "UserRatio".
Two numbers (with unlimited value)
This allows -1 in addition to positive numbers indicating an unlimited values.
"LimitRecursion".
One or two numbers
"AnonymousBandwidth", "UserBandwidth".
Two octal numbers
"Umask".
...
Veamos algunos ejemplos:
^ pure-ftpd ^ pure-ftpd-wrapper ^ Archivo ^ Ejemplo de contenido ^
| -c --maxclientsnumber | MaxClientsNumber | /etc/pure-ftpd/conf/MaxClientsNumber | 5 |
| -y --peruserlimits | PerUserLimits | /etc/pure-ftpd/conf/PerUserLimits | 1 10 |