Sie sind auf Seite 1von 9

Introducción.

El servicio de ftp es uno de los más antiguos y utilizados para la transferencia


de archivos, los servidores webs lo utilizan para actualizar sus páginas
estáticas, subir imágenes o para permitir la descarga de archivos a los
visitantes.

Los servidores FTP generalmente brindan 3 tipos de accesos:

-El acceso al directorio personal del usuario.


-El acceso dentro de una jerarquia de directorios y/o archivos destinada
al FTP.
-El acceso por FTP anónimo.

Existen varios servidores de FTP que pueden realizar esta tarea, entre los
más conocidos y seguros tenemos a: ProFTP y vsFTPD.

El servicio de ftp utiliza los siguientes puertos:

-Puerto 20, para enviar/recibir datos.


-Puerto 21, para controlar la sesión.

FTP Anónimo

El FTP anónimo permite el acceso al servidor sin contraseña. Esta clase de


FTP permite colocar archivos al alcance de los usuarios en general, no es
necesaria la autenticación y solo ofrece acceso a una zona bien especifica
del sistema.

Para el caso de un FTP anónimo el servidor utiliza una funcionalidad llamada


“entorno protegido” ó chroot, que se encarga de encerrar al usuario en
directorios específicos.

Por ejemplo, si da acceso al usuario anónimo dentro de /home/ftpd, este


directorio será tomado como directorio raíz, el usuario no podrá recorrer la
jerarquía de directorios superiores, no podrá subir más arriba de la raíz, por
tanto no tendrá acceso a /home ni a cualquier otro directorio por encima de
ese en la jerarquía del sistema.

Servidor ProFTPD

ProFTPD es un servidor ftp para Linux: es seguro, sumamente flexible,


modular y fácil de configurar. Entre sus principales características tenemos:

-Permite autenticar usuarios de diferentes formas.


-Permite utilizar servidores virtuales de ftp.
-Se puede tener múltiples servidores brindando servicio de ftp anónimo.
-Es modular, lo que permite extender su funcionalidad ampliamente.
-Un usuario con acceso por ftp no requiere de una configuración
especial.
-Su código es libre, esta licenciado bajo GPL.
-Es portable a muchas plataformas (AIX, BSD/OS, Cygwin, DG/UX,
Digital Unix, FreeBSD, HP/UX, IRIX, Linux for IBM S/390, zSeries,
Linux, Mac OS X, NetBSD, OpenBSD, SCO, Solaris, SunOS).

1) Instalación.

# apt-get install proftpd

2) Configuración.

# su
# mkdir /home/ftp
# mkdir/home/ftp/up
# chmod 755 /home/ftp
# chmod 777 /home/ftp/up

4:lectura
2:escritura
1:ejecución

# nano /etc/proftpd.conf
3) Parámetros del archivo de configuración.

ServerName: Sirve para indicar el nombre de nuestro servidor FTP.

ServerType: Especifica el tipo de arranque del servicio, standalone o inetd.


Con “inetd” el equipo iniciará un nuevo proceso por cada pedido ftp y con
“standalone” el servidor correrá como un proceso independiente, el proceso
que ya se ha iniciado será clonado para atender el requerimiento de servicio.

DeferWelcome: Mensaje de entrada a mostrar por nuestro servidor antes de


la autentificación, si elige off no poner el texto a mostrar ("mensaje").

ServerIdent: Nombre para identificar al servidor cuando se acceda por ftp.

DefaultServer: Utiliza las opciones por defecto de un servidor ftp.

ShowSymlinks: Si deseamos que muestre la dirección física de los enlaces


dinámicos, si el enlace esta fuera del directorio destinado al ftp, su acceso no
será posible.

AllowRetrieveRestart: Permite continuar la descarga de un archivo donde la


transferencia no se completó, esta opción se conoce como “resume”.

AllowStoreRestart: Permite continuar con la escritura de un archivo que no se


terminó completamente, va junto a la opción anterior.

DirFakeGroup: Permite cambiar el grupo de nuestros archivos cuando son


descargados.

DirFakeUser: Misma función que la opción anterior pero para falsificar el


usuario.

DirFakeMode: Cambia los permisos de los archivos descargados, sigue la


nomenclatura del chmod: 1 es ejecucion, 2 es escritura y 4 lectura para el
usuario, grupo y otros usuarios respectivamente.

MultilineRFC2228: Hace que el servidor ftp sea compatible con casi todos los
clientes ftp.

TimeoutNoTransfer: Número máximo de segundos que puede estar un


cliente sin realizar subida ni bajada de información en el ftp. Una vez
sobrepasado el límite se cierra la conexión con el cliente.

TimeoutStalled: Número máximo de segundos que puede estar cliente-


servidor sin recibir información de una transferencia ya sea subida o bajada.

TimeoutIdle: Número máximo de segundos que puede estar un cliente en el


ftp sin realizar movimientos, ya sea desplazarse por el ftp, subir o bajar
información. Una vez sobrepasado el límite cierra la conexión con el cliente.

DenyFilter: Filtro del propio proftpd.

Port: Indicamos el puerto donde queremos que escuche nuestro servidor, el


21 es el predeterminado.

MaxInstances: Número de conexiones que se pueden hacer


simultáneamente al ftp.

AccessGrantMsg: Mensaje cuando el usuario se ha logueado correctamente.

AccessDenyMsg: Mensaje cuando el logueo del usuario ha sido incorrecto.

LogForma: Especificamos la manera que queremos que se logueen, un tipo


de conexión.

ExtendedLog: Especifica donde se guardan físicamente los logs, además del


TIPO que seleccionemos: WRITE(escritura), READ(lectura), AUTH(accesos)
y ALL(todos los anteriores).

TransferLog: Existe un tipo de logueo que esta ya descrito con un LogFormat


y TIPO predeterminado. Este tipo guarda todas las transferencias realizadas.

DefaultRoot: Hacemos chroot en el directorio de nuestro ftp, es decir, no


permitiremos que pueda subir a un directorio jerárquicamente superior a él.

AuthUserFile: Indicamos donde esta el archivo con los usuarios que tienen
acceso a nuestro ftp.

AuthGroupFile: Indicamos donde esta el archivo con los grupos que tienen
acceso a nuestro ftp.

MaxClients: Máximo número de clientes que pueden estar simultáneamente


en el servidor, se adjunta un mensaje cuando sobrepasa máximo permitido.

MaxClientsPerHost: Máximo número de clientes con el mismo ip, adjuntamos


un mensaje cuando se sobrepasa el máximo permitido.

MaxClientsPerUser: Máximo número de clientes con la misma cuenta de


usuario.
RequireValidShell: Especificamos si los usuarios necesitan tener un shell
válido o no, recomendable en off.

Servidor FTP anónimo:

Se utiliza la etiqueta <Anonymous> con propiedades muy específicas, esto


es, de permitir el acceso al ftp sin password con el user predeterminado:
anonymous.

Formato de la etiqueta anonymous:

User ftp
Group nogroup
UserAlias anonymous ftp
Opciones específicas

La mayoría de las opciones están explicadas en la primera parte, sólo


listamos las opciones más usadas:

AccessGrantMsg "mensaje"
RequireValidShell off/on
MaxClients X
MaxClientsPerHost X
MaxClientsPerUser X

Cuando deseamos trabajar sólo con usuarios anónimos y no usuarios


autenticados, sólo debemos utilizar la etiqueta <Limit> indicando LOGIN a
DenyALL:

AllowAll

CONFIGURACIÓN PARA EL ACCESO PRIVADO Y ANÓNIMO.-

Esta es la configuración básica por defecto para ProFTPD, se establece un


servidor FTP y un acceso anónimo al directorio /home/ftp:

ServerName "DebianFTP"
ServerType standalone
DeferWelcome off
ServerIdent on "JorgeJota"
ShowSymlinks on
AllowRetrieveRestart yes
AllowStoreRestart yes
DirFakeGroup off
DirFakeUser off
MultilineRFC2228 on
DefaultServer on
AllowOverwrite on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin /welcome.msg
DisplayFirstChdir .message
LsDefaultOptions "-l"

DenyFilter \*.*/

Port 21
MaxInstances 30
AccessGrantMsg "XXX"
AccessDenyMsg "El acceso no está autorizado"

User nobody
Group nogroup

DefaultRoot ~
AuthUserFile "/etc/passwd"
AuthGroupFile "/etc/group"
MaxClients 10
MaxClientsPerHost 6
MaxClientsPerUser 3
RequireValidShell off

# Configuración para el directorio home:

Umask 022 022


AllowOverwrite on

# Configuración básica para el acceso anónimo y sin permiso para guardar


archivos:

User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message

<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>

CONFIGURACIÓN PARA EL ACCESO SÓLO EN MODO PRIVADO CON


AUTENTICACIÓN.-

Esta es la configuración básica por defecto para ProFTPD, se establece un


servidor FTP y un acceso anónimo al directorio /home/ftp:

<Directory /*>
Umask 022 022
AllowOverwrite on
</Directory>

No tenemos configuración básica para el acceso sólo en modo privado con


autenticación.

CONFIGURACIÓN PARA EL ACCESO SÓLO EN MODO ANÓNIMO.-

# Denegar el acceso de usuarios del sistema en general:

<Limit LOGIN>
DenyAll
</Limit>

# Una configuración básica para el acceso anónimo y sin permiso para


guardar archivos:

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message

<Limit LOGIN>
AllowAll
</Limit>

<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>

4) Administración del servicio.

Después de haber hecho cambios en el archivo /etc/proftpd.conf se debe


iniciar o reiniciar el servicio, según sea el caso, para ello utilizar los
siguientes comandos:

# ln -s /etc/init.d/proftpd /etc/rc2.d/S20proftpd (script de carga)

Para iniciar el servicio:


# /etc/init.d/proftpd start

Para detener el servicio:


# /etc/init.d/proftpd stop

Para reiniciar el servicio:


# /etc/init.d/proftpd restart

5) Cliente FTP.

# apt-get install gftp


# gftp

6) Cuotas.

Asignar cuotas de disco a usuarios.

Las cuotas permiten especificar límites en dos aspectos del almacenamiento


en disco:

-El número de nodos que puede poseer un usuario o un grupo.


-El número de bloques de disco que puede ocupar un usuario o un
grupo.

La idea que se esconde detrás de las cuotas es que se obliga a los usuarios
a mantenerse debajo de su límite de consumo de disco, quitándoles su
habilidad de consumir espacio ilimitado en un sistema.
Las cuotas se manejan en base al usuario o grupo y al sistema de archivos.
Si el usuario espera crear archivos en más de un sistema de archivos, las
cuotas deben activarse en cada sistema de archivos por separado.

En un servidor con distintos usuarios es fundamental limitarles el uso del


espacio del disco duro para evitar posibles sorpresas. Es fácil conseguirlo
con quota (en Debian).

Primero debemos preparar la partición en la que queremos poner cuotas


editando /etc/fstab (añadimos lo que está en color):

# /dev/hda2/ /home ext3 defaults,usrquota 0 2

Con eso cuando reiniciemos tendremos la partición preparada. Para activarlo


ahora sin reiniciar (hasta que volvamos a reiniciar):

# mount -o remount,usrquota /home

Creamos 2 archivos en la partición en la que queremos crear las cuotas de


usuario:

# touch/home/aquota.user
# touch/home/aquota.group
# chmod 600 /home/aquota.user /home/aquota.group

Ahora instalamos quota y quotatools:

# apt-get install quota quotatool

Activamos las cuotas:

# quotacheck -vagumf

Por último asignamos una cuota de 300 Mb para el usuario “prueba”:

# quotatool -u prueba -bq 300M -l ‘320 Mb’ /home

Para ver las cuotas asignadas:

# repquota /home

Para eliminar la cuota del usuario “prueba”:

# quotatool -u prueba -bq 0M -l ‘0 Mb’ /home

Das könnte Ihnen auch gefallen