Servidor FTP bajo un host virtual basado en IP

Hola a todos, hoy vamos a a configurar un servidor FTP bajo un host virtual basado en IP. Usaremos ProFTPd en Ubuntu.

Hace tiempo creamos host virtuales basados en IP para Apache, en este caso lo haremos para ProFTPd. No debemos de tener problemas para hacerlo ya que es muy parecido.

Introducción

Para crear nuestro servidor FTP seguiremos las siguientes pautas:

  1. Estará sobre una interfaz de red virtual.
  2. Será de sólo lectura para los usuarios anónimos y admitirá a los usuarios de sistema.
  3. Los usuarios de sistema no podrán salir de su “home”.
  4. Los usuarios anónimos no podrán salir de su directorio por defecto.

Vamos a proceder.

Creando la interfaz de red virtual

Para crear una interfaz de red virtual, debemos saber cómo se llama nuestra interfaz física. Para saberlo, abrimos un terminal y tecleamos:

ifconfig

Como podemos ver marcado en la imagen, nuestra interfaz física de red se llama eth2. Vamos a crear una interfaz de red virtual a partir de la interfaz física. Desde un terminal tecleamos:

sudo ifconfig eth2:1 172.16.100.10 netmask 255.255.0.0

Bien, ya tenemos la interfaz creada. Ahora toca configurar nuestro VirtualHost para ProFTPd.

Configurando nuestro VirtualHost

Pasemos ahora a configurar el host virtual para ProFTPd. En un terminal tecleamos:

sudo gedit /etc/proftpd/proftpd.conf

Nos vamos al final del archivo y añadimos lo siguiente:

<VirtualHost 172.16.100.10>
     RequireValidShell     on
     TransferLog           /var/log/proftpd/virtual
     DefaultRoot           ~

     <Limit LOGIN>
          AllowAll
     </Limit>

     <Anonymous /var/ftp/descargas>
          User            ftp
          UserAlias       anonymous     ftp
          RequireValidShell    off
          <Limit LOGIN>
               AllowAll
          </Limit>
          <Limit WRITE>
               DenyAll
          </Limit>
     </Anonymous>
</VirtualHost>

Explicación del código:

En primer lugar se crea la directiva VirtualHost a la que se le asigna la dirección IP de la interfaz de red virtual que creamos anteriormente. Dentro de la directiva VirtualHost, se añaden una serie de parámetros de configuración, el primero RequireValidShell se establece a on para impedir que a nuestro FTP entren usuarios con shell falsa.

El parámetro TransferLog sirve para indicar cual será el archivo de log que registrará el movimiento de archivos en nuestro FTP. DefaulRoot es el directorio por defecto del que no podrá subir el usuario, en este caso, el directorio por defecto es el home de cada usuario y se indica con ~.

La directiva Limit LOGIN junto al parámetro AllowAll indica que todos los usuarios tendrán autorizado hacer login en nuestro FTP. Si quisiéramos denegar el login a todos los usuarios, pues tendriamos que cambiar el parámetro AllowAll por DenyAll.

A continuación nos encontramos con la directiva Anonymous, a esta directiva se le asigna el directorio del que no podrán subir los usuarios anónimos. En el parámetro User, indicamos que realmente se va a acceder al FTP con un usuario que existe en el sistema, ese usuario se llama ftp.

UserAlias nos sirve para definir un alias a nuestro usuario ftp, ese alias será anonymous y lo usaremos para entrar al FTP. En este caso RequireValidShell se pone en off para permitir que sí entren usuarios con shell falsa. Ahora nos queda la directiva Limit WRITE, que en este caso está limitada sólo a los usuarios anónimos mediante el parámetro DenyAll.

Bien, ya tenemos nuestro VirtualHost configurado, ahora tenemos que reiniciar el servicio. Desde un terminal tecleamos:

sudo service proftpd restart

Verificando el funcionamiento

Vamos ahora a verificar que todo está correcto. Para ello usaremos FileZilla. En un tutorial anterior explico cómo instalar FileZilla.

Bien, abrimos FileZilla (Aplicaciones / Internet / FileZilla FTP client) y nos logeamos con un usuario anónimo.

Bien, nos lleva a nuestro directorio FTP, ubicado en /var/ftp/descargas. Vamos a ver qué ocurre al logearnos como un usuario de sistema.

Al entrar al FTP con un usuario de sistema, nos redirige a su directorio home. Los usuarios de sistema sí tienen permisos de escritura en su home, vamos a probar a subir un archivo.

Como se ve en la imagen, el archivo revista.pdf ha sido correctamente subido.

Comprobemos ahora los propios logs de ProFTPd. En un terminal escribimos:

sudo less /var/log/proftpd/proftpd.log

Como se ve en la imagen, primero inició sesión un usuario anónimo, después lo hizo el usuario tardes. Comprobemos ahora el log propio de nuestro VirtualHost. En el terminal escribimos:

sudo less /var/log/proftpd/virtual

En ese log quedó registrada la subida del archivo revista.pdf.

Anuncios
Publicado en FTP, ProFTPd, Seguridad, Tutoriales, Ubuntu

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: