Cómo configurar Apache para mejorar la seguridad de un sitio Zope, utilizando mod_proxy y VirtualHostMonster.

Escenario

Tenemos una máquina con una única IP pública que hace de fachada de una red con direccionamiento privado. Esta máquina tiene configurado un port-forward de los puertos 80 y 443 hacia una de las máquinas de la red interna (que llamaremos ‘www’). Esa máquina se encarga de gestionar todo lo referente a web que hay en la red local. Hay una tercera máquina (llamada ‘zope’) que tiene varios sitios Plone. Algo como esto:

 INET-----router--+--www  80,443
                  |
                  +--zope 8081

En realidad este tinglado es “virtual”, porque no son máquinas reales sino VServers, pero a efectos de configuración y mantenimiento es igual que si estuviera montado con máquinas reales.

La configuración del iptables de router es:

*nat
-A PREROUTING -m multiport -p tcp --dports 80,443 -j DNAT --to-destination zope
-A POSTROUTING -o eth0 -j MASQUERADE

Zope

Lo único que hay que hacer en el Zope es instalar el producto VirtualHostMonster: en el raíz. Tienes que indicar un ID pero puedes poner cualquier cosa, por ejemplo “VHM”. Este producto permite indicarle a Zope cómo son las URL que quieres que genere.

Apache

En www instalamos un Apache nuevecito y hacemos un VirtualHost conforme a la receta Crear un sitio web SSL con apache2.

mod_proxy

Instala el módulo proxy con:

# a2enmod proxy

Configuración

Sobre el mismo fichero que has hecho para el sitio SSL, haz las siguientes modificaciones:

<VirtualHost *:443>
  ...
  ProxyRequests Off
  
  <Proxy *>
     Order deny,allow
     Allow from all
  </Proxy>
  
  # Zope site management
  <Location /zope>
    ProxyPass http://zope:8081/VirtualHostBase/https/IP_PUBLICA:443//VirtualHostRoot/_vh_zope
    ProxyPassReverse http://zope:8081/VirtualHostBase/https/IP_PUBLICA:443//VirtualHostRoot/_vh_zope
  </Location>
  
  <Location /miSitio>
    ProxyPass http://zope:8081/VirtualHostBase/https/IP_PUBLICA/xm/VirtualHostRoot/_vh_miSitio
    ProxyPassReverse http://zope:8081/VirtualHostBase/https/IP_PUBLICA:443/xm/VirtualHostRoot/_vh_miSitio
  </Location>

</VirtualHost>

Se trata de un Reverse Proxy, es decir, no se puede usar como un proxy web al uso, sino simplemente como un intermediario transparente hacia otro site.

En este fichero, se definen dos redirecciones: la primera es para el interfaz de administración de Zope, y la segunda es un sitio Plone llamado “miSitio”.

Por último

No olvides recargar la nueva configuración de Apache.

# /etc/init.d/apache2 reload

Referencias



blog comments powered by Disqus