Fecha: 01 de Diciembre de 2004 INTRODUCCIN En este documento vamos a tratar de describir el proceso de instalacin, compilacin y configuracin del servidor FTP Pure-FTPd en nuestro FreeBSD. Pure-FTPd es un servidor FTP libre (GPL) basado en Troll-FTPd. Fu modificado por Frank Dennis por razones de seguridad y funcionalidad. Los principales objetivos de este servidor FTP son la eficiencia, la seguridad y la facilidad de uso. Est diseado para ser seguro en su configuracin por defecto; no tiene buffer overflows conocidos y es muy sencillo de instalar. Ha sido diseado para los kernels modernos, y ha sido portado con xito a Linux, FreeBSD, NetBSD, OpenBSD, BSDi, Solaris, Darwin, Tru64, Irix y HPUX. Compilacin e instalacin de Pure-FTPd Distinguiremos 2 formas de hacerlo, que dejaremos a eleccin de cada cual segn sus preferencias y comodidad: A) Forma tradicional Lo primero de todo ser bajarnos de http://www.pureftpd.org el ltimo fuente, acutalmente es la versin 1.0.20. El fichero a bajar ser pure-ftpd-1.0.20.tar.gz Una vez bajado, procederemos a la compilacin y configuracin del mismo, realizando los siguientes pasos: $ tar zxvf pure-ftpd-1.0.20.tar.gz $ cd pure-ftpd-1.0.20 $ ./configure --with-puredb --with-throttling --with-language=spanish --with-ftpwho $ make --with-puredb -->Nos permite crear usuarios virtuales para el FTP --with-throttling -->Nos permite limitar el ancho de banda --with-language-spanish -->Soporte en castellano de los mensajes del servidor --with-ftpwho -->Nos permite monitorizar los usuarios conectados Ahora mediante el uso del superusuario (root), procederemos a realizar la instalacin en el sistema: # make install Con esto ya tenemos instalado en el sistema Pure-FTPd, ahora falta lo ms importante, que es la configuracin y puesta en marcha. B) Mediante el sistema de paquetes Como muchos de vosotros, preferiris la forma mas purista de instalacin de software, es decir, mediante el sistema de paquetes de FreeBSD, pues no poda faltar en este documento la forma de hacerlo mediante este sistema: Lo primero ser dirigirse al directorio donde se encuentra ese port, que es en /usr/ports/ftp/pure-ftpd, as pues tecleamos: # cd /usr/ports/ftp/pure-ftpd A continuacin editaremos el fichero Makefile para poder establecer y activar determinadas funcionalidades que no vienen puestas por defecto, como son: los mensajes en castellano, la posibilidad de usar usuarios virtuales, el chrooteo automtico de dichos usuarios a un directorio fijo.. etc. Para lo cual, haciendo uso de vuestro editor preferido, -- en este caso usaremos el ee por su simplicidad y por ser el que viene por defecto instalado en FreeBSD-5.3 -- vi ./Makefile Ahora, localizaremos la lnea CONFIGURE_ARGS= en la que deberemos introducir los siguientes parmetros: --with-puredb\ --with-language=spanish\ --with-ftpwho\ --with-throttling\ y por tanto, la seccin editada, finalmente quedar: CONFIGURE_ARGS= --with-everything \ --with-paranoidmsg \ --with-virtualchroot \ --with-tls \ --with-largefile \ --with-puredb\ --with-language=spanish\ --with-ftpwho\ --with-throttling\ --sysconfdir=${PREFIX}/etc Ahora nos aseguramos de haber guardado los cambios, y procedemos a la compilacin del port Pure-FTPd, ejecutando: # make install Con esto ya tenemos instalado en el sistema Pure-FTPd, ahora falta lo ms importante, que es la configuracin y puesta en marcha. Configuracin y puesta en marcha Pure-FTPd es configurable a travs de la lnea de comandos, es decir, a la hora de arrancar el servidor pasamos como parmetros las opciones que queramos; despus veremos las opciones disponibles ms comunes a la hora de poner en marcha nuestro servidor FTP, ahora pasamos a la configuracin y manejo de usuarios: Manejo de usuarios Antes de nada, comenzaremos aadiendo un usuario y un grupo al sistema, de la siguiente forma: # pw groupadd ftpgroup # pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc Es RECOMENDABLE utilizar usuarios virtuales en lugar de cuentas del sistema, por eso hemos habilitado la opcin --with-puredb en la compilacin. Ahora todo el mantenimiento de los usuarios virtuales se puede hacer a travs del comando pure-pw. Cabe destacar que las contraseas con las MISMAS que las cuentas reales del sistema en caso de que usemos cuentas reales, especificando la opcin que veremos ms adelante de usar las cuentas reales del sistema al poner en marcha el servidor FTP. Creando un usuario virtual En nuestro ejemplo crearemos un usuario virtual llamado: pruebas # pure-pw useradd pruebas -u ftpuser -d /home/ftpusers/pruebas -t 15 -T 10 Nos pedir su contrasea, le asignaremos una y la tendremos que repetir para confirmar. Las opciones que hemos usado son las siguientes: -u -> User ID -g -> Group ID -d -> Directorio al que tiene acceso el usuario* -t 15 -> 15 Kb/s de lmite de ancho de banda de bajada -T 10 -> 10 Kb/s de lmite de ancho de banda de subida Nota: *Es VITAL resear la importancia de que el comando -d y al ser un usuario virtual crea un CHROOT especfico, por lo que el usuario JAMS tendr acceso por encima de su directorio a ninguna parte del sistema*. Una vez introducida y confirmada la contrasea, debemos actualizar la base de datos /etc/pureftpd.pdb Actualizacin de la base de datos Para que los cambios realizados hasta ahora, surtan efecto, deberemos actualizar toda esa informacin en la base de datos con el siguiente comando: # pure-pw mkdb Una vez finalizado usaremos, como ya explicamos previamente, el comando pure-pw para el manejo de usuarios, de tal modo que para y a modo de ejemplo: Ver la informacin de un usuario: pure-pw show Eliminar un usuario del sistema: pure-pw userdel Configuracin de Ratios Aunque personalmente odie los ratios, no por eso voy a dejar de explicar como usarlos con pure-ftpd. Los ratios se usan para obligar a los usuarios a dejar algn fichero de X megas en el FTP para poder bajar Y megas. Para activar los ratios usaremos la opcin -q X:Y (upload:download). Banners y mensajes de bienvenida Si en el directorio raz del ftp grabamos un fichero de nombre .banner, de tamao no superior a 4000 bytes, ste ser impreso por pantalla cuando el usuario acceda al FTP. En cada directorio tambien podemos grabar un fichero .message para que sea impreso cada vez que el usuario accede al directorio. Permitiendo Uploads La problemtica del directorio upload es que, al tener permiso de escritura, en principio los usuarios pueden borrar los ficheros, usar el directorio para intercambiar warez, etc. Esto lo podemos evitar estableciendo permisos de escritura y ejecucin al directorio pero no de lectura (drwx-wx-wx), con chmod 333. Otra posibilidad es arrancar el servidor pure-ftpd con la opcion -U 777:777, de forma que los ficheros que suban los usuarios tendrn permisos ----------. De esta forma no podrn ser descargados. Puesta en marcha del servidor Pure-FTPd La primera vez que arranquemos el servidor FTP lo haremos de tal forma que en cuanto se conecten los usuarios, estos vayan creando con su login sus respectivos directorios Chrooteados ya de por s, sin nuestra intervencin --Salvo las cuentas reales del sistema, que usarn sus propios directorios habituales y los permisos asociados con dichas cuentas -- , para lo cual ejecutaremos como superusuario: NOTA: *Todos aquellos que hayis usado el mtodo "A)" para instalar Pure-FTPd vuestro fichero de base de datos donde se albergan las contraseas y manejo de usuarios virtuales ser por defecto: /etc/pureftpd.pdb y para los que hayan usado el mtodo "B)" el fichero de trabajo ser /usr/local/etc/pureftpd.pdb. A partir de ahora, suponemos que se ha instalado con el mtodo "A)", pero para aquellos que lo hagan mediante el mtodo "B)", SOLAMENTE, en los pasos que vienen a continuacin han de cambiar esa ruta. Ya que si no lo hacen cuando intenten validarse en el sistema los usuarios virtuales dar error de autentificacin, ms concretamente, con que no se ha encontadrado dicho fichero (pureftpd.pdb obviamente.) # pure-ftpd -j -lpuredb:/etc/pureftpd.pdb & Cuando los usuarios virtuales inicien su sesin en el servidor, automticamente: Con el modificiador -j Se crear su directorio de trabajo; que previamente especificamos como /home/ftpusers/pruebas (para el usuario "pruebas"). Con el modificador -lpuredb:/etc/pureftpd.pdb Le indicamos al sistema que los usuarios virtuales se activen para poder iniciar sesin FTP en el sistema. En las sucesivas activaciones de este servicio, ya no tendremos que usar ms el modificador -j ya que los directorios se habrn creado con el primer logueo en el sistema de los usuarios virtuales, por tanto, y a partir de ahora, iniciaremos el servidor con los siguientes parmetros: # pure-ftpd -l unix -lpuredb:/etc/pureftpd.pdb & Ahora el nuevo modificador es -l unix que nos permite usar las cuentas reales del sistema para loguearnos en el servidor FTP. La lista de Opciones disponibles ms comunes son: -A ->Chroot para todos los usuarios. No pueden salir del directorio del FTP. -c 10 -> 10 conexiones mximas al FTP. -B -> Ejecutar en segundo plano. -c 2 -> Permitir solamente 2 conexiones para una misma IP. -d -> Verbose log. -E -> No permitir usuario anonymous. -f ftp -> Logear a travs de syslog. -H -> No resolver IP. -I 15 -> Si el usuario est 15 minutos inactivo, es desconectado -L 2000:8 -> Lmite de recursividad. -m 3 -> Mxima carga por encima de la cual el servidor deja de funcionar. -s -> Antiwarez. -U 133:022 -> umask -u 100 -> minuid -k 90 -> Se podr usar como mximo el 90% de la particin. -lpuredb:/etc/pureftpd.pdb -> Usaremos usuarios virtuales de FTP en vez de cuentas reales del sistema. -S hostname_o_ip,puerto -> Escuchamos en el puerto especificado de esa IP o Hostname, si el equipo tiene varias IPs. Para ver la lista completa de Opciones disponibles: http://www.pureftpd.org/README Logs Por defecto Pure-FTPd realiza el logueo de los usuarios a travs de syslog, la configuracin de este demonio reside en /etc/syslog.conf por tanto si no nos gusta el fichero donde Pure-FTPd guarda los logs, lo podremos modificar editando dicho archivo. El fichero donde nuestro Pure-FTPd guarda los Logs es /var/log/xferlog Propsito Con este mini-tutorial espero haber terminado de convencer a todos aquellos indecisos que por falta de conocimiento, de tiempo de una gua sencilla y fcil de seguir, an no se hayan atrevido a montar su propio servidor FTP sin renunciar a la seguridad y la potencia que ofrece este servicio.