domingo, 10 de agosto de 2008

CONFIGURACION DEL SERVIDOR FTP (PROFTPD)


PROFTPD nace con la necesidad de tener un servidor FTP configurable y seguro, cuenta con un único fichero de configuración llamado proftpd.conf.

Presenta una gran ventaja con respecto a otros ya que su código ha sido portado a muchas plataformas, lo que lo hace bien interesante a la hora de elegir un servidor FTP, entre las mas reconocidas encontramos AIX, FreeBSD, DG/UX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, SunOS, entre otros...

Para empezar con la instalación de proftpd, debemos descargar el paquete.
Thiney:/#apt-get install proftpd
Escogemos el modo cómo se va a ejecutar, es decir, si lo hará bajo inetd (por servicio) ó standalone (servidor-forma independiente). La gran diferencia entre ambos métodos es la velocidad de ejecución y la carga que se le dará al equipo.

En este caso lo ejecutaré de forma independiente y procedemos a dar Aceptar. Una vez terminada la instalación se crea automática una carpeta dentro del directorio etc llamada proftdp. En esta se encuentra el archivo de configuración principal llamado proftd.conf, procedemos a editarlo con nuestro editor favorito.
Thiney:/# nano /etc/proftpd/proftpd.conf

Aproximadamente en la linea 10 encontramos el primer parámetro.
#Soporte para Ipv6: Activa o desactiva este parámetro de acuerdo a su necesidad. En este caso lo desactivamos.
UseIpv6 off
#Nombre del servidor FTP
ServerName "ftp.thiney.com"
#Modo en que se va a trabajar el servidor, en este caso independiente.
ServerType standalone
#Activa el mensaje de entrada antes o después del logueo del user
DeferWelcome on
#Personaliza el mensaje de bienvenida
ServerIdent on "BIENVENIDO AL SERVIDOR FTP.THINEY.COM"
#La siguiente linea nos garantiza la compatibilidad o no con la mayoría de clientes FTP. Por lo tanto procedemos a activarlo (on).
MultilineRFC2228 on

#Usaremos on, para que tome las opciones por defualt de un servidor ftp
DefaultServer on
#Si esta en on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él
ShowSymlinks on
#Permite o Deniega la sobre-escritura de los archivos existentes, en este caso desactivamos la sobre-escritura.
AllowOverwrite off
#El número máximo en segundos, que puede estar un cliente, sin transferencia
TimeoutNoTransfer 900
#Ahora procedemos a cambiar el número máximo de segundos que puede estar el cliente-servidor sin recibir información de una transferencia.
TimeoutStalled 600
TimeoutIdle 160
#El siguiente parámetro es un filtro de protección para este servidor ProFTPd
DenyFilter \*.*/

#Puerto de escucha
Port 21
#Número de visitas máximas en el ftp
MaxInstances 13
#Usuario y grupo, Si no existen estos grupos o usuarios, debemos crearlo.
User proftpd
Group proftpd
#Personaliza el mensaje al momento de loguearse
AccessGrantMsg "LA CONEXION FUE EXCITOSA"
#Mensaje cuando el nombre o el pass ha fallado
AccessDenyMsg "HA FALLADO, VUELVA A LOGUEARTE"
#Enjaula al usuario dentro de su propio home
DefaultRoot ~
#El siguiente comando permite definir un fichero de contraseñas especifico a los usuarios y a los grupos.
AuthUserFile "/etc/passwd"
AuthGroupFile "/etc/group"

#Establece un número máximo de clientes que pueda estar conectados simultaneamente en el servidor
MaxClients 2 "MAX USER"
#Máximo numero de clientes por Host(ip)
MaxClientsPerHost 2 "MAX HOST"
#Máximo numero de clientes por usuario
MaxClientsPerUser 2 "MAX POR USER"
#A continuación desactivamos el parámetro que nos indica que los usuarios no requieren una shell, valida o "autentica". Esto le brinda un poco de seguridad a nuestro servidor FTP.
RequireValidShell off
#Le decimos que el directorio del ftp es /home/ftp y a continuación le damos unas características
Umask 077 077
AllowOverwrite off

#nuestro directorio de subida se encontrará en /home/ftp/subir, así que especificamos algunos permisos para el directorio
Umask 077 077
AllowOverwrite on
#El directorio tendrá acceso de lectura, escritura y grabación para todos(Allow All)
AllowAll
#Para denegar acceso a ciertos usuarios
DenyUser fercho
#Guardamos y salimos (control + X + Si + Enter)

Lo siguiente es crear las cuentas de usuario y el grupo
Thiney:/#adduser kate
Adding user 'kate' ...
Adding new group 'kate' (1007) ...
Adding new user 'kate' (1004) with group 'kate' ...
Creating home directory '/home/kate' ...
Copying files from '/etc/skel' ...
Enter new UNIX password:*******
Retype new UNIX password:*******
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para kate
Introduzca el nuevo valor, o presione ENTER para el predeterminado
Nombre completo []: kate
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [y/N] y

Ahora editamos el archivo passwd ubicado en etc. En este archivo realizaremos dos cambios significativos.
Thiney:/#nano /etc/passwd
Vamos a la linea del usuario que acabamos de agregar, es decir, kate.
kate:x:1004:1007:kate,,,:/home/kate,:/bin/bash
Primero, cambiamos el /home para que todos queden alojados en /home/ftp/. Segundo, cambiamos el shell de /bin/bash a /bin/false, con el fin de que los usuarios no accedan a una shell completa; quedando así:
kate:x:1004:1007:kate,,,:/home/ftp,:/bin/false

En ProFTPd no es necesario agregar una nueva shell (/bin/false) en /etc/shells, pues en el archivo de configuración principal desactivamos este parámetro que indica que los usuarios no requieren una shell, valida o "autentica" (RequireValidShell off)

Por ultimo reiniciamos el servicio ProFTPd para que la configuración tenga efecto.
Thiney:/#/etc/init.d/proftpd restart
Stopping ftp server: proftpd.
Starting ftp server: proftpd.

Ahora ingresaremos al ftp desde la consola

Thiney:/#ftp 192.168.70.4
Connected to 192.168.70.4.
220 BIENVENIDO AL SERVIDOR FTP.THINEY.COM
Name (192.168.70.4:root): kate
331 Password required for kate
Password: ***** (ponemos nuestra contraseña)
230 LA CONEXION FUE EXCITOSA
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls (Listar contenido)
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r-- 1 thiney thiney 12449 Jul 30 01:46 servicios.odt
drwxrwxrwx 3 root root 4096 Aug 3 08:37 subir
226 Transfer complete.
ftp> exit
221 Goodbye.

Verificamos por medio del navegador, para esto ponemos la dirección de nuestro servidor ftp://192.168.70.4 o si ya tenemos el dns funcionando ponemos ftp://thiney.com/. Nos pedirá el nombre de Usuario y Contraseña, así:

Y listo!!

Si desea conocer mas parámetros para una configuración avanzada, lo invito a ingresar a la página oficial de proftpd http://www.proftpd.org/localsite/Userguide/linked/userguide.html

Hasta pronto

1 comentario:

Leandro Ariel Leonhardt dijo...

#nano /etc/passwd
proftpd:x:1004:1007:proftpd,,,:/home/proftpd,:/bin/bash
Y la dejamos así:
proftpd:x:1004:1007:proftpd,,,:/home/ftp,:/bin/bash

te recomiendo por razones de seguridad, que primero agregues en el /etc/shells la linea /bin/false

luego de eso, donde dices que debe de quedar asi
Y la dejamos así:
proftpd:x:1004:1007:proftpd,,,:/home/ftp,:/bin/bash
cambias /bin/bash por /bin/false
con esto niegas a los usuario que tengan la posiblida de entrar con un shell ya que es peligroso!!