El documento describe la instalación y configuración de Pound, un balanceador de carga, para redirigir solicitudes HTTPS a servidores web HTTP. Se requiere instalar Pound, generar un certificado SSL autofirmado y configurar el archivo de configuración de Pound para redirigir el tráfico entrante basado en el dominio solicitado a diferentes servidores web.
3. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Introducción
El objetivo de Pound es poder redirigir una petición de entrada entre varios
servidores. Así, si tenemos una pagina web con carga, podemos tener varios
servidores detrás que la tengan alojado. Los clientes cuando accedan a nuestra web,
creerán que es la misma pagina web, pero realmente Pound va enviando las
peticiones entre varios servidores.
Esta el objetivo principal de Pound, pero otra función no menos importante de Pound,
es la capacidad de recibir conexiones https y enviarlas por http a nuestro servidor real.
De esta forma la conexión entre el cliente y nuestra sede esta encriptada y desde
round hasta el servidor final (en nuestro caso web) va en texto claro, pero ya vamos
dentro de nuestro entorno.
Bien nosotros en este ejemplo vamos a usar la segunda opción de Pound, redirigir de
https a http.
5. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Requisitos02
Para poder desarrollar este laboratorio nos basaremos en los siguientes
requerimientos:
• Distribución de Linux, en nuestro caso centOS 5,5 64 bits.
• Ejecutable de Pound para nuestra distribución de Linux (pound-2.3.3-
1.el5.rf.x86_x64.rpm)
• IP estática de entrada.
• Tantos servidores web como deseemos.
6. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Instalación de Pound03
Para hacer la instalación de Pound necesitamos permisos de administrador sobre la
máquina Linux.
sudo rpm –ihv pound-2.4.3-1.el5.rf.x86_64.rpm
Si no tenemos alguna dependencia instalada, nos lo indicará, por lo que deberemos de
proceder a instalarlas.
s
7. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Instalación de Pound03
Para que Pound funcione correctamente, debemos deshabilitar SeLenux, para ello
desde la consola de Centos, escribiremos el comando:
setup
s
8. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Instalación de Pound03
Nos vamos a Configuración del Firewall. Marcando como vemos las opciones
“Deshabilitado” tanto para Nivel de seguridad como para SELinux.
Nos vamos a Configuración del Firewall. Marcando como vemos las opciones
“Deshabilitado” tanto para Nivel de seguridad como para SELinux.
9. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Generar un certificado digital autofirmado
04
En el siguiente paso vamos a crear un certificado temporal ssl (si lo tuviésemos ya, solo
tenemos que copiarlo a la ruta /etc/ssl)
mkdir /etc/ssl
cd /etc/ssl
openssl genrsa -out server.key 1024
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl x509 -in server.crt -text
openssl x509 -in server.crt -out server.pem
Openssl rsa -in server.key >> server.pem
Ya tendremos nuestro certificado de pruebas, guardado en la ruta /etc/ssl en el
fichero server.pem
10. TECHNOLOGY
innovaINNOVA TECHNOLOGY
Ejemplo05
Bien ahora vamos a lo interesante, configurar el servidor de Pound.
En este último paso vamos a poner un ejemplo de cómo configurar Pound, para que
acepte peticiones HTTPS y las envíe a diferentes servidores web sobre HTTP, usando el
certificado anteriormente creado.
Ejemplo:
Todo el tráfico entrante a la maquina por el puerto 443 y que tenga como dominio en la
petición http “www.innovatechnoloy.eu” lo debe enviar a 10.0.13.25 por el puerto 80.
Todo el tráfico entrante a la maquina por el puerto 443 y que tenga como dominio en la
petición http “vdi.innovatechnoloy.eu” lo debe enviar a 10.0.13.70 por el puerto 80.
12. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
Todo la configuración de Pound se encuentra en el fichero /etc/pound, lo editamos con
nuestro editor favorito (nano, vi, vim…)
nano /etc/pound
13. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
Modificamos el fichero para que quede como sigue:
User “www-data”
Group “www-data”
ListenHTTPS
Address 0.0.0.0
Port 443
Cert “/etc/ssl/server.pem”
Service
HeadRequire “Host:.*www.innovatechnoloy.eu.*”
BackEnd
Address 10.0.13.25
Port 80
End
End
Service
HeadRequire “Host:.*vdi.innovatechnoloy.eu.*”
BackEnd
Address 10.0.13.70
Port 80
End
End
End
14. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
Con estas tres líneas definimos que escuchamos por cualquier interfaz de nuestro
servidor Pound y que escuchamos por el puerto 443 y que el certificado se encuentra
en la ruta /etc/ssl con el nombre de server.pem
Address 0.0.0.0
Port 443
Cert “/etc/ssl/server.pem”
En cada campo “Service” definimos que estamos esperando en la cabecera de la
petición http y donde lo enviamos y el puerto de conexión entre Pound y el servidor
15. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
En “HeadRequire” es donde definimos que estamos esperando para enviarlo a un
servidor o a otro.
Ejemplo: Todo las peticiones a la url www.innovatechnology.eu lo vas a enviar a los
servidores que defina en la sección “BackEnd“
HeadRequire “Host:.*www.innovatechnology.eu.*”
En el campo “BackEnd” dentro del servicio, establezco los servidores a donde voy a
redirigir las peticiones en caso de que coincidan con el HeadRequire anterior.
16. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
Ejemplo: Todo lo que coincida con www.innovatechnology.eu envíalo a los servidores
10.0.13.25 y 10.0.13.26 (que son los servidores con apache donde esta la pagina web
alojada), podemos poner tantos como queramos, y envía la petición al servidor por el
puerto 80
BackEnd
Address 10.0.13.25
Address 10.0.13.26
Port 80
End
End
17. TECHNOLOGY
innovaINNOVA TECHNOLOGY
05
Como otro ejemplo de configuración, voy a poner la configuración para escuchar
directamente peticiones a un servidor Pound y este a varios servidores web para
balancear la carga entre ellos:
User “www-data”
Group “www-data”
ListenHTTPS
Address 0.0.0.0
Port 80
Service
BackEnd
Address 10.0.13.25
Address 10.0.13.26
Address 10.0.13.27
Address 10.0.13.28
Port 80
End
End
End