Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo configurar VirtualHosts en ProFTPD

⋆ Cómo configurar VirtualHosts en ProFTPD

(Tiempo estimado: 6 - 12 minutos)

Los Virtual Hosts nos permiten tener diferentes servidores FTP en un mismo equipo, reduciendo considerablemente los costes de hardware y su mantenimiento. Al igual que ocurre con el servidor Web de Apache, con ProFTPD podemos configurar varios servidores FTP en un mismo equipo y con configuraciones totalmente diferentes.

Seguid leyendo y aprenderéis como configurar Virtual Hosts en ProFTPD...

 

 

¿QUÉ ES UN VIRTUALHOST?

El término Virtual Host se refiere a hacer funcionar más de un sitio (ftp,web etc ...) como por ejemplo www.servidor1.com y www.servidor2.com en una misma máquina. Los Hosts Virtuales pueden funcionar basándose en "direcciones IP", lo que significa que cada Virtual Host tiene una dirección IP diferente, o basados en "nombres de dominio", lo que significa que con una sola dirección IP están funcionando Virtual Hosts con diferentes nombres de dominio. Este proceso es totalmente transparente para el usuario final.

 

 

Con VirtualHosts podemos tener varios servidores FTP en un mismo servidor

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo con GNU/Linux + ProFTPD instalado
  • Conexión a Internet (por si necesitamos instalar algún programa)
  • Cliente FTP

 

 

2.- CONFIGURACIÓN INICIAL

Siguiendo la serie de tutoriales de ProFTPD, este tutorial se basa en la configuración final del anterior tutorial. Por tanto, os recomiendo tener claro primero los anteriores tutoriales si queréis entender perfectamente el por qué de cada una de las líneas. La configuración en la que nos vamos a basar, es la que generamos en el anterior tutorial Cómo configurar cuotas de disco en ProFTPD, y es la siguiente:

Include /etc/proftpd/modules.conf

ServerName "Debian"
ServerType standalone
DefaultServer on
UseIPv6 off

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd

<IfModule mod_quotatab.c>
QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
<IfModule mod_quotatab_file.c>
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
</IfModule>
</IfModule>

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory upload>
<Limit STOR,MKD>
Allow all
</Limit>
</Directory>

</Anonymous>

 

 

Es necesario realizar las operaciones con usuario root o con sudo.

 

 

3.- CONFIGURACIÓN BÁSICA DE 2 VIRTUALHOSTS

Para este ejemplo, utilizaremos dos nombres de dominio que apuntan a la misma dirección IP: ftp.servidor1.com y ftp.servidor2.com.

Vamos a plantear el siguiente escenario de configuración para los 2 VirtualHosts:

En el servidor ftp.servidor1.com, se almacenarán los ficheros de contabilidad de un taller, y en el ftp.servidor2.com se almacenarán ficheros y utilidades de ofimática. En ambos FTPs se podrá acceder con usuario Anonymous pero, en el VirtualHost ftp.servidor1.com, habrá un directorio donde los usuarios anónimos podrán subir ficheros. En el ftp.servidor2.com el usuario anonymous no podrá subir nada. El servidor ftp.servidor1.com escuchará en el puerto 7000 TCP y el servidor ftp.servidor2.com en el puerto 7001 TCP.

 

 Por tanto, en el equipo vamos a tener 3 servidores: 

  • FTP1 General (Configurado en tutoriales anteriores)
  • FTP2 ftp.dominio1.com (Para los documentos de un Taller)
  • FTP3 ftp.dominio2.com (Para los programas de ofimática)

 

En el fichero de configuración principal /etc/proftpd/proftpd.conf tenemos que añadir la siguiente línea:

Include /etc/proftpd/virtuals.conf

 

 

En el fichero virtuals.conf será donde añadiremos la configuración de los nuevos servidores virtuales. Es posible utilizar un fichero de configuración por cada host virtual, pero no resulta mucho mas cómodo. Por tanto, todos los hosts virtuales irán dentro del fichero virtuals.conf.

Si habéis leído los anteriores tutoriales, no os costará entender la configuración de cada uno de los virtualhosts que se detallarán a continuación. La configuración está basada en el escenario planteado en unos párrafos más arriba.

ftp.servidor1.com (taller)

<VirtualHost ftp.servidor1.com>
ServerName "Servidor 1"
RequireValidShell off
Port 7000
DefaultRoot /srv/ftp1

<Anonymous /srv/ftp1>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory /srv/ftp1/uploads>
<Limit WRITE>
Allow All
</Limit>
</Directory>
</Anonymous>

</VirtualHost>

 

 

ftp.servidor2.com (software ofimática)

<VirtualHost ftp.servidor2.com>
ServerName "Servidor 2"
RequireValidShell off
Port 7001
DefaultRoot /srv/ftp2

<Anonymous /srv/ftp2>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>
</Anonymous>

</VirtualHost>

 

 

Los directorios de destino (directorios home o raíz) de cada uno de los Virtual Hosts, deben estar creados previamente para que funcione todo correctamente. También es necesario asignarle los permisos correctos cambiándole el propietario a ftp y el grupo a nogroup (estos valores pueden cambiar en cada distribución de GNU/Linux):

raul@ns1:~$ sudo mkdir /srv/ftp1/
raul@ns1:~$ sudo mkdir -p /srv/ftp2/upload
raul@ns1:~$ sudo chown -R ftp.nogroup /srv/ftp[1-2]

 

 

La configuración de ambos Virtual Hosts hay que ponerla en el fichero virtuals.conf, una detrás de otra.

 

 

 

 

4.- PROBANDO LOS VIRTUALHOSTS

Para probar los Virtual Hosts, realizaremos básicamente 2 pruebas:

  1. Acceder a ftp.servidor1.com:7000 como usuario anónimo y comprobar que solamente podremos leer y descargar ficheros, excepto en el directorio incoming, que podremos también subir ficheros.
  2. Acceder a ftp.servidor2.com:7001 con usuario anónimo y comprobar que solamente tenemos permisos de lectura, nunca de escritura.

 

Virtual Hosts ProftpdAccesp ftp.servidor1.com correcto

 

 

Virtual Hosts ProftpdImposible subir ficheros al raíz

 

 

Virtual Hosts ProftpdSubir ficheros a /uploads

 

 

Virtual Hosts ProftpdAcceso a ftp.servidor2.com

 

 

5.- CONFIGURACIÓN FINAL

A continuación pongo el contenido completo del fichero proftpd.conf descrito en este tutorial junto con la configuración realizada en tutoriales anteriores. El fichero principal proftpd.conf es el siguiente:

Include /etc/proftpd/modules.conf
Include /etc/proftpd/virtuals.conf

ServerName "Debian"
ServerType standalone
DefaultServer on
UseIPv6 off

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd

<IfModule mod_quotatab.c>
QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
<IfModule mod_quotatab_file.c>
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
</IfModule>
</IfModule>

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory upload>
<Limit STOR,MKD>
Allow all
</Limit>
</Directory>

</Anonymous>

 

 

Y el fichero de virtuals.conf es el siguiente:

<VirtualHost ftp.servidor1.com>
ServerName "Servidor 1"
RequireValidShell off
Port 7000
DefaultRoot /srv/ftp1

<Anonymous /srv/ftp1>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory /srv/ftp1/uploads>
<Limit WRITE>
Allow All
</Limit>
</Directory>
</Anonymous>

</VirtualHost>

<VirtualHost ftp.servidor2.com>
ServerName "Servidor 2"
RequireValidShell off
Port 7001
DefaultRoot /srv/ftp2

<Anonymous /srv/ftp2>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>
</Anonymous>

</VirtualHost>

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

Código de seguridad
Refescar