lunes, 27 de mayo de 2013

Proxy inverso Squid para servidores OWA



Un proxy inverso (reverse proxy en inglés) es un servidor proxy situado en el alojamiento de uno o más servidores web. Todo el tráfico procedente de Internet y con destino en alguno de esos servidores web es recibido por el servidor proxy. Esto va a permitir una capa adicional de defensa, protegiendo los servidores OWA.

Un posible esquema de acceso a Servicio OWA sería el siguiente:




Como se puede observar en el esquema, los servidores Squid1 y Squid2, que son los proxys inversos, se encuentran ubicados en la DMZ, mientras que los servidores de correo OWA se encuentran dentro del dominio. 


Instalación y configuración de Debian y Squid


Se ha realizado la instalación sobre un Debian 6.0.6 en su versión de 64 bits (amd64) con los paquetes básicos y los de servidor web y ssh. Para la instalación de Squid se ha empleado la versión 2.7. 

La instalación de Debian es trivial, por lo que vamos a centrarnos en la instalación de Squid. 

En primer lugar se descargará el paquete con el código fuente desde la página oficial de Squid, http://www.squid-cache.org/Versions/ , en concreto la versión 2.7-stable9. Para su descompresión (formato tar.gz) se empleará el siguiente comando:

# tar xzvf squid-2.7.STABLE9.tar.gz

Para realizar la instalación de Squid es necesario tener instalado previamente el paquete build-essential, http://packages.debian.org/squeeze/build-essential, que a su vez depende de los paquetes, g++, gcc, dpkg-dev, libc6-dev y make

En mi caso, al no poder descargar los paquetes desde los repositorios mediante el comando apt (o aptitude), se ha realizado la descarga previa desde un equipo cliente y se han transferido los ficheros mediante WinSCP. A continuación se ha realizado la instalación de estos paquetes en local mediante el comando dpkg –i nombre_paquete_deb . En algunos casos, se encontrará con dependencias circulares que solucionaremos con el comando dpkg - - force-all –i nombre_paquete_deb . Algunos paquetes, una vez instalados, requieren su configuración, hecho que se advierte desde línea de comando. Para realizar la configuración se empleará el comando dpkg  - - configure nombre_paquete_deb

Otros paquetes que necesarios son los siguientes:

#dpkg –i libssl-dev_0.9.8o-4squeeze14_amd64.deb
#dpkg –i libssl9.9.8_0.9.8o-4squeeze14_amd64.deb
#dpkg –i zlib1g-dev_1.2.3.4.dfsg-3_amd64.deb
#dpkg –i openssl_0.9.8o-4squeeze14_amd64.deb
#dpkg –i ssl_cert_1.0.28_all.deb

Y a continuación se realizará el proceso de configuración y compilación mediante los comandos:

# cd squid-2.7.STABLE9
# configure –enable-ssl
# make all
# make install

Una vez instalado Squid, el siguiente paso se modificar el fichero de configuración que se encuentra en la ruta /usr/local/squid/etc/squid.conf . El utilizado en este caso es:

http_port 172.x.x.x:80 accel defaultsite=correo.dominio.es
https_port 172.x.x.x:443 accel cert=/usr/local/squid/etc/owa2.pem key=/usr/local/squid/etc/OWA2-sinpass.pem defaultsite=correo.dominio.es

cache_peer 172.y.y.y parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER name=correo.dominio.es
acl OWA dstdomain .dominio.es
cache_peer_access correo.dominio.es allow OWA
never_direct allow OWA

acl all src 0.0.0.0/0.0.0.0

# lock down access to only query the OWA server!
http_access allow OWA
http_access deny all
miss_access allow OWA
miss_access deny all


acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
icp_access allow all


Nota:

  • 172.x.x.x --> IP del servidor Squid

  • 172.y.y.y --> IP Cluster Exchange

 

En la segunda línea de este fichero se indica el certificado de servidor y la clave utilizada por el servidor OWA. Lo que se debe hacer es exportarla y copiarla en el servidor Squid e indicar la ruta en la que se ha almacenado.