Bueno
Antonio Bueno
www.portaleso.com
Este documento tiene como objetivo ayudarte a instalar un servidor FTP con el conocido
servidor Pure-FTPd. En este documento pretendo dejar en marcha el servidor y espero
ayudarte a solucionar los problemas que me surgieron a mí. No llega a ser un manual pero
sin lugar a dudas te resultará muy útil.
Resaltar que para poder instalarlo debes tener acceso como root a la máquina linux.
Índice
1. Introducción.
2. Requerimientos y puesta en marcha.
2.1 Requisitos de Hardware.
2.2 Dependencias.
2.3 Obtención de las Fuentes (manos a la obra).
2.4 Creando el Makefile.
2.5 Compilación e instalación.
3. Arrancando el Servidor.
3.1 Arrancando desde la línea de comandos (configuración).
3.2 Arrancando desde Inetd (configuración).
3.3 Como un 'daemon'.
3.4 Arrancando al inicio.
3.5 Paso de Parámetros.
3.6 Prueba del Servidor.
4. Usuarios Virtuales.
4.1 Creamos un grupo y usuarios virtuales.
5. Otras opciones.
5.1 Ratios.
5.2 Banners y mensajes de bienvenida.
5.3 Permitiendo Uploads.
6. Conclusión y observaciones.
7. Derechos del Autor.
1. Introducción
Pure-FTPd es un servidor FTP libre (GPL) basado en Troll-FTPd. Fue 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á diseñado para ser seguro en su configuración por defecto; no tiene buffer overflows
conocidos y es muy sencillo de instalar. Ha sido diseñado para los kernels modernos, y ha
1
Pure-FTPd A. Bueno
sido portado con éxito a Linux, FreeBSD, NetBSD, OpenBSD, BSDi, Solaris, Darwin, Tru64,
Irix y HPUX.
Yo he instalado el pureftpd bajo Suse 8.0. El hardware no tiene mucho que ver en esto ya
que el servidor crea su puerto, generalmente el 21 y no se preocupa de lo físico. Hasta ahora
no tengo noticias de conflictos con el hardware y no creo que aparezcan.
2.2 Dependencias.
Luego de haber instalado el servidor, cosa que vamos a ver en el punto siguiente, el pureftpd
depende de él mismo.
Aunque parezca ridículo decirlo, el puerto que ocupa el FTP no debe estar ocupado, sino tu
servidor nunca subirá.
Para compilarlo necesitas el gcc, de la versión 2.95 hacia arriba. Obviamente debes tener las
librerías necesarias como glibc, pero eso esta en casi la mayoría de las estaciones Linux (por
no decir en todos). Los nombres de los paquetes que contiene esas librerías difieren con la
distribución que uses. La distribución de Suse lo incorpora y puedes ayudarte a instalarlo con
el YaST.
Pureftpd soporta la comunicación entre LDAP, PostgreSQL y/o MySQL, así que si quieres
compilarlo con alguno de esas directrices, primero debes tenerlos instalados para luego darle
la ruta donde encontrarlos.
Existen los paquetes precompilados, como son para Suse, Slackware, Debian o Redhat.
Bueno, yo me limito a explicar como se realiza la instalación a través de las fuentes y creo
que es mejor, de hecho yo lo hice así. Además, compilando no pierdes tanto tiempo en
comparación a una compilación por ejemplo de Kde.
No lo he instalado del binario. Sin embargo las personas que pertenecen al grupo de
desarrollo de pureftpd colocan los binarios para varias distribuciones Linux. Busca mas
información en la página oficial. Y de allí mismo te podrás bajar las ultimas fuentes del
servidor. http://www.pureftpd.org
Lo primero de todo será bajarnos el último fuente, actualmente es la versión 1.0.17. El fichero
a bajar será pure-ftpd-1.0.17.tar.gz. o pure-ftpd-1.0.17.tar.bz2 que puedes encontrar en
ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/
Para hacer esto debes almacenarlo en un directorio temporal de root, que debes crear en
primer lugar.
2
Pure-FTPd A. Bueno
# md /root/install
# cd /root/install
Si ya has compilado alguna aplicación alguna vez esto ya será trivial para ti. Si ya tienes las
fuentes es hora de que los descomprimas. Si lo bajaste como .bz2 o .gz debes hacer lo
siguiente desde el intérprete de comandos de linux:
Entra en el directorio y encontraras un archivo llamado configure y ejecútalo con las opciones
que desees.
# cd pure-ftpd-1.0.17
# ./configure --with-puredb --with-throttling --with-language=spanish --with-ftpwho
# ./configure --help
te mostrara todas las opciones de configuración que exista hasta el momento. Estas son
algunas de ellas:
Si al ejecutar el configure con las opciones deseadas como en el ejemplo sale todo bien
entonces debes ver algo así.
<Contenido omitido>
configure: creating ./config.status
config.status: creating Makefile
configure: +-------------------------------------------------------------------------------+
configure: | You can subscribe to the Pure-FTPd users mailing-list |
configure: | to ask for help and to stay informed of new releases. |
configure: | Go to http://www.pureftpd.org/ml/ now! |
configure: +-------------------------------------------------------------------------------+
3 Arrancando el Servidor
3.1 Arrancando desde la línea de comandos (configuración).
Tenemos también otra opción que es editar el fichero /etc/pureftpd.conf, con el script pure-
config.pl que acompaña el programa. Esta opción no la he probado.
# /usr/local/sbin/pure-ftpd <opciones>
-U 133:022 umask
-u 100 No permite que usuarios que estén bajo el uid dado por el
número entero entren al sistema. Por ejemplo si fuera la opción –
u20 todos los usuarios que tengan el uid por debajo de 20 no
podrán entrar, como el root.
-k 90 Se podrá usar como máximo el 90% de la partición.
-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.
*Nota: Para acceder a la lista completa de opciones obtenla de la documentación original del
Pure_FTPd.
Primero que nada, debes saber que inetd es un “super demonio de Internet“ y la función que
tiene es escuchar los puertos especificos y en el momento de recibir alguna petición
“despertar al servidor que le corresponda“.
En nuestro caso Pure-FTPd que ocupa el puerto 21. Para que funcione debes añadir una
línea en el archivo /etc/services parecida a esta o comprobar que ya está:
Si deseas cambiar el puerto de salida del ftp es aquí donde debes modificarlo.
Luego de haber hecho lo de arriba debes reiniciar el inetd. Hazlo matando el pid del proceso.
# killall inetd
# inetd o /usr/sbin/inetd
5
Pure-FTPd A. Bueno
Este modo lo recomiendo porque a través de inetd se puede realizar fácilmente un ataque de
DoS (Denegación de Servicio) ya que el inetd deja de escuchar por un tiempo cuando hay
muchas conexiones simultaneas. Los desarrolladores dicen que es mejor usar el xinetd u
otro que exista. Pero de todas maneras recomiendan este modo.
#/usr/local/sbin/pure-ftpd -B
Si tu servidor esta configurado para que arranque con inetd o xinetd debes preocuparte que
ellos partan al inicio o cuando tu lo digas.
En SuSE hay una aplicación llamada YaST, en la que puedes configurar el modo de
arranque del servidor y el nivel donde debe arrancar. Para ello selecciona Sistema y luego el
Editor de niveles de ejecución dentro de éste, selecciona el nivel de ejecución, por defecto es
el 5 y al editar los detalles selecciona el inetd en el nivel que desees (5).
Otra forma es que agregues una línea en el /etc/rc.local o le digas al sistema que lo haga.
nada más.
Todas las opciones deben estar antepuestas por un guion (-) como se muestra en
la línea siguiente, ojo en la línea de comando entre la opción y el número se deja un espacio
mientras que en fichero de configuración inetd no se debe dejar el espacio.
donde configuramos:
-B = Como un daemon.
6
Pure-FTPd A. Bueno
Las 3 primeras pruebas sólo serán para ver si el servidor esta arriba y eso es todo lo que
necesitaras. Luego deberás ver como se porta durante el transcurso del tiempo pero eso lo
debes hacer tu. Yo lo he probado desde hace algún tiempo.
#telnet 127.0.0.1 21
#netstat -l
admin@luvex:/$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:x11 *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
7
Pure-FTPd A. Bueno
Te fijaste, bueno en mi host no dejo entrar a anónimos así que usare una cuenta:
4. Usuarios Virtuales
4.1 Creamos un grupo y usuarios virtuales.
El grupo se puede crear con la ayuda de YaST en SuSE, y el usuario se crea de forma
virtual con la herramienta pure-pw. El usuario no es un usuario del sistema, repito no es un
usuario del sistema.
Se recomienda utilizar usuarios virtuales en lugar de cuentas del sistema, por eso he
habilitado la opción AUTH (-lpuredb:/etc/pureftpd.pdb).
8
Pure-FTPd A. Bueno
password:
# pure-pw mkdb
Una vez introducido el password, lo siguiente que he hecho ha sido actualizar la base de
datos /etc/pureftpd.pdb para que los cambios surtan efecto.
# pure-pw -help
Cada usuario tiene un número distinto identificador, luego si deseo crear otro usuario ahora
tendrá el User ID = 502, y así sucesivamente.
5. Otras opciones
5.1 Ratios.
Los ratios se usan para obligar a los usuarios a dejar algún fichero de X megas en el FTP
para poder bajar Y megas. Para activar los ratios usaremos la opción -q X:Y
(upload:download).
En cada directorio también podemos grabar un fichero .message para que sea impreso cada
vez que el usuario accede al directorio.
La problemática 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.
9
Pure-FTPd A. Bueno
Otra posibilidad es arrancar el servidor pure-ftpd con la opción -U 777:777, de forma que los
ficheros que suban los usuarios tendrán permisos ----------. De esta forma no podrán ser
descargados.
6. Conclusión y Observaciones
El Pure-FTPd es un servidor FTP fiable e interesante que nos provee de muchas opciones de
configuración con el que podemos crear nuestro propio servidor FTP.
Te recomiendo que cuando hayas subido tu servidor estés continuamente revisando el sitio
oficial por si hay bugs de seguridad. Para que mantengas tu servicio lo más actualizado y
robusto posible.
Por supuesto no soy ninguna autoridad en Pure-FTPd, tan solo pretendo hecha una mano a
quines quieren tener montado su servidor FTP, por lo que espero haber puesto la
información suficiente para que instales el tuyo sin problemas.
10