El caso es que me ví en la necesidad de configurar un proxy inverso para un escenario de pruebas que estoy montando, para posteriormente instalar modsecurity.
Mi escenario sería el siguiente:
En mi caso he usado dos VM con SO debian 8, normalmente para las configuraciones de proxy inverso se suele utilizar nginx pero yo me he decidido por apache que lo conozco más.
Al lío, lo primero es instalar apache en la máquina, eso no lo voy a explicar, entiendo que todos sabemos usar apt-get o aptitude.
Una vez lo tengamos instalado y funcionando es donde tenemos que añadir los módulos de apache para que funcione como Proxy Inverso o Reverse Proxy.
Los pasos a seguir:
- Instalar los módulos necesarios en apache
- Crear un nuevo host
- Configurar un alias al DNS en el equipo para que apunte hacia el servidor interno
- Habilitar el host y reiniciar el servicio.
Como root y con apache instalado habilitar los siguiente módulos.
#a2enmod proxy proxy_http
Crear el virtualhost
Ahora toca crear el host virtual, en Debian el directorio de instalación de apache está en /etc/apache2
El lugar donde tenemos que configurar nuestro host virtual está en /etc/apache2/sites-enabled
Dentro de este directorio crearemos el fichero con el nombre que queramos, además tenemos uno como ejemplo que se llama 000-default.com, yo en mi caso al fichero que he creado lo he llamado visibles.conf y tiene el siguiente contenido.
<VirtualHost *:80>
ErrorLog "/var/log/apache2/maquina-visible-error.log"
CustomLog "/var/log/apache2/maquina-visible-access.log" common
ServerName IP_SERVER_EXTERNO
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://HOSTNAME_IP
ProxyPassReverse / http://HOSTNAME_IP
</VirtualHost>
- ServerName: hace referencia a la máquina que recibe la petición, en este caso sería la máquina que está en la DMZ
- ProxyRequests Off: evita que el equipo de la DMZ sea utilizado como proxy.
- ProxyPreserveHost On: permite que las peticiones recibidas a la máquina de la DMZ sean enviadas a la máquina interna siendo para el usuario transparente. Además, nos aseguramos que el servidor ubicado en la red interna no es accesible desde internet.
- ProxyPass y ProxyReverse: gestionan el salto de ida y vuelta de un servidor a otro.
Ni hace falta explicar que hace falta otra máquina que haga de servidor web para que sea realmente la que muestre la web.
Realmente lo que hacemos es crear un host virtual que redirecciona a otra máquina, de ahí la directiva ProxyPass. Aquí podemos tener tantos host virtuales como queramos para que redireccionen a distintas máquinas.
En el siguiente post instalaremos el WAF ModSecurity y lo configuraremos.