Proxy inverso con Squid

 

En el caso que se encuentren varios servidores web en la red interna y exista una única conexión a internet mediante un bastión y se desee acceder a estos distintos servidores web desde internet se debe hacer lo siguiente: en primer lugar, asociar los diferentes nombres de dominio a la misma IP pública, luego poner un Squid en el equipo bastión que redireccione -en función de las URLs que reciba- hacia los equipos internos correspondientes.

TENER EN CUENTA QUE ESTO FUNCIONA EN LA VERSION DE SQUID v2.6.5 en versiones anteriores era bastante diferente.

Configuración

En /etc/squid/squid.conf se debe configurar Squid para que escuche en el puerto 80, avisarle que realiza tareas de Host Virtual, darle permisos de acceso a la red interna y decirle que se conecte en forma directa.

– Puerto 80 y virtual host: Le digo que escuche en la ip pública X.Y.Z.W, al puerto 80 y que es un Host Virtual.

http_port X.Y.Z.W:80 vhost vport

– Permisos en función de las url destino: Esto es nos permite tener mayor seguridad, para que nuestro proxy solo resuelva para las URL que tenemos asociadas.

acl webinternas dstdomain "/etc/squid/webinternas.txt"
http_access allow webinternas

En este archivo tenemos los siguientes dominios de ejemplo:

.javirodriguez.com.es
.miweb.com
.miotraweb.com

Le digo que se conecte en forma directa hacia los sevidores internos:

acl ServidoresLocales dst 192.168.20.0/24
always_direct allow ServidoresLocales

Le digo que use el programa redirector.pl para traducir los pedidos a las IPs internas:

redirect_program /usr/local/sbin/redirector.pl

Script redirector.pl

Es un script en perl al que se le debe ortorgar permisos de ejecución, el contenido del mismo es el siguiente:


#!/usr/bin/perl -p
BEGIN { $| = 1; }
s%^https://javier.rodriguezaparicio.es/blog([:/]|$)%http://192.168.0.101$1% && next;
s%^http://www.miweb.com([:/]|$)%http://192.168.0.102$1% && next;
s%^http://www.miotraweb.com([:/]|$)%http://192.168.0.103$1% && next;

Proxy inverso sobre https

Utilizar HTTPS suele ser útil, si tenemos que introducir información privada, que no debe circular por la red en texto plano. Supongamos que tenemos un Webmail interno y deseamos que nuestra constraseña viaje por Internet de modo cifrado, es aquí donde entra en juego nuestro proxy inverso sobre SSL (https).

Primero se deben crear los certificados y claves, luego, en squid.conf se debe dar la ruta de los mismos:

http_port 80
https_port 443 cert=/etc/squid/certificados/webmail-epe.crt key=/etc/squid/certificados/webmail-epe.key

Seguramente luego se deben poner los parámetros que vimos al principio: vhost phost

NOTA sobre el Firewall:

Obviamente que el firewall debe permitir las conexiones al puerto 80 desde Internet al firewall, desde el firewall hacia la red interna, y las respuestas desde la red interna hacia internet y hacia el firewall.

Fuente: http://linuxemb.wikidot.com/squid-inverso

Share
Javier Rodriguez Escrito por:

2 comentarios

  1. 28 de octubre de 2011

    Verdad. Tengo unas cuantas entradas sin fuente porque en su dia no lo puse y no recuerdo de donde lo saque. Ya edito esta entrada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *