El ProFTPd se configura mediante la edicion del archivo proftpd.conf que se encuentrar en dos sitios: /usr/local/etc/proftpd.conf o /etc/proftpd.conf. En el caso que usemos gentoo se encontrara en /etc/proftpd/proftpd.conf.
Luego tendremos que escoger como queremos ejecutar el ProFTPd standalone o inetd, en nuestro caso escogeremos standalone. Si se tiene alguna duda sobre cual escoger es recomendado que leais el siguiente
articulo.
Ahora deberemos de crear el directorio donde vamos a tener el ftp, nosotros usaremos el direcorio /home/ftp. Si ademas se quiere usar una carpeta donde los usuarios puedan subir cosas al ftp usaremos el directorio /home/ftp/subit. Recordar que cada uno puede usar el que quiera, pero recordar que el directorio de subir debe de estar dentro del directorio del ftp, o como maximo ser el directorio de ftp el directorio de subida(esto se suele usar para ftp de subida unicamente):
# su
# mkdir /home/ftp
# mkdir /home/ftp/subir
# chmod 755 /home/ftp
# chmod 777 /home/ftp/subir
Ahora deberemos de configurar el archivo proftpd.conf:
# vim /etc/proftpd.conf *como hemos dicho arriba el lugar donde se encuentre el fichero puede variar, se puede usar otro editor que no sea el vim.
El archivo de configuracion que usaremos sera el siguiente:
ServerName "Nombre_del_servidor_ftp" #Pondremos el que queramos, Servidor FTP es un ejemplo
ServerType standalone/inetd #Nosotros usaremos standalone en vez de inetd
DeferWelcome off/on #En nuestro caso pondremos off ya que no queremos mostrar ningun mensage de entrada
ServerIdent on/off "nombre" #Usaremos on "nombre", en nombre sed originales y no pongais algo como Debian Ftp Server, o Gentoo Roolz
MultilineRFC2228 on/off #Usaremos on, ya que esto hara que nuestro servidor ftp sea compatible con casi todos los clientes ftp
DefaultServer on/off #Usaremos on, toma las opciones defualt de un servidor ftp
ShowSymlinks on/off #Usaremos on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él
AllowOverwrite on/off #Usaremos off, permite sobreescribir ficheros existentes
TimeoutNoTransfer <numero> #el numero es el maximo numero de segundos que puede estar un cliente en el ftp, sin transferencia de informacion ej: 600
TimeoutStalled <numero> #el numero maximo de segundos que puede estar cliente-servidor sin recibir informacion de una transferencia(atascado) ej: 90
TimeoutIdle <numero> #el numero maximo de segundos que puedes estar un usuario sin hacer nada ej: 200
DenyFilter \*.*/ #Es un filtro de proteccion para el ProFTPd
Port <numero> #Usaremos el 21, ya que es el numero de puerto predeterminado
MaxInstances <numero> #numero de conexiones al ftp que se pueden hacer a la vez(cuidado con los DOS) ej: 2
User nobody
Group nogroup
AccessGrantMsg "mensage" #El mensage sera mostrado si la conexion del usuario ha sido correcta(el user y password ha sido el correcto)
AccessDenyMsg "mensage" #El mensage sera mostrado si la conexion del usuario ha sido incorrecta, usar un mensage "amenazador"
LogFormat default "%h %l %u %t \"%r\" %s %b" #Con LogFormat [nombre_formato] "formato", el nombre_formato se lo ponemos nosotros
LogFormat auth "%v [%P] %h %t \"%r\" %s" #para ser usado despues con ExtendedLog
LogFormat write "%h %l %u %t \"%r\" %s %b"
TransferLog /var/log/proftpd/transfer #Loguea las transferencias que se realice con el servidor
ExtendedLog /var/log/proftpd.down_up_log WRITE,READ write #ExtendedLog es para loguear con una serie de caracteristicas
ExtendedLog /var/log/proftpd.auth_log AUTH auth #ExtendedLog [lugar_donde_se_guarda_el_log] [Que_logear] [nombre_formato]
ExtendedLog /var/log/proftpd.paranoid_log ALL default #WRITE(escritura),READ(lectura),AUTH(autentificacion, logging) y ALL(todo)
DefaultRoot ~ #Con esto hacemos chroot en el home de nuestro usuario, es decir, no permitiremos que pueda subir mas directorios
AuthUserFile "/etc/passwd" #Le decimos donde tenemos el archuvo de los usuarios
AuthGroupFile "/etc/group" #Le decimos donde tenemos el archivo de los grupos
MaxClients <numero> "mensage" #Maximo numero de clientes que pueden estar a la vez en en servidor ej: MaxClients 6 "Max %m usuarios"
MaxClientsPerHost <numero> "mensage" #Maximo numero de clientes por Host(ip) ej: MaxClientsPerHost 2 "Solo 2 conexiones por HOST"
MaxClientsPerUser <numero> "mensage" #Maximo numero de clientes por usuario ej: MaxClientsPerUser 2 "Solo 2 conexiones por usuario"
#El mensage aparece cuando superamos el numero permitido
RequireValidShell off #los usuarios no requieren, ni deben, de tener una shell "autentica"
Hasta aqui hemos configurado las opciones del servidor, pero ahun no le hemos dicho donde esta el directorio del ftp, y que permisos tenemos sobre ese directorio. Antes de ello tenemos que decidir si deseamos tener un ftp unicamente anonimo, un ftp con cuentas pricadas o un ftp con cuentas privadas y la cuenta de anonimo. Yo no recomiendo usar la cuenta anonimo, ya que, si la teneis cualquier persona de fuera podra acceder a él, claro esta, si no usamos un firewall, como por ejemplo las iptables. Tambien podemos decirle al ftp de quien puede aceptar conexion o de quien no. Una vez decidido, seguimos con la edición del archivo proftpd.conf:
Denegar acceso a ciertas ip, esto es opcional, yo no lo uso
<Limit LOGIN> #Limitamos a quienes pueden intentar loguearse en el servidor
Order deny,allow #en esta etiqueta le decimos el orden de lectura de la informacion, 1ºleere a quien denegamos y 2º a quien aceptamos
Deny from .pepito.com, xxx.xxx.xxx.xxx #La etiqueta Deny marca los host que queremos rechazar separados por una coma
Allow from all #La etiqueta Allow es de quien vamos aceptar, en este caso all que representa a todas las ip's
</Limit>
Ahora decidiremos si queremos un ftp anonimo, privado o anonimo y privado.