Proxy inverso con squid

Descripción: 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 (esto se hace en nic.ar), luego poner un squid en el equipo bastión que redireccione - en función de las urls que reciba - hacia los equipos internos correspondientes.

Versión: TENER EN CUENTA QUE ESTO FUNCIONA EN 2.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 hostvirtual

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:

.estaURL.com.ar
.otra.com.ar
.OTRAURL.com.ar
.ESTATAMBIEN.org.ar

-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 ip 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%^http://www.estaURL.com.ar([:/]|$)%http://192.168.20.2$1% && next;
s%^http://www.otra.com.ar([:/]|$)%http://192.168.20.3$1% && next;
s%^http://www.OTRAURL.com.ar([:/]|$)%http://192.168.20.5$1% && next;
s%^http://www.ESTATAMBIEN.org.ar([:/]|$)%http://192.168.20.6$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 (ver aquí), 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.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License