Ha pasado ya tiempo, pero aquí estamos de nuevo.
En el artículo anterios hacíamos un resumen de lo que debíamos tener (y qué queríamos montar) ahora, vamos a empezar con las partes necesarias.
Las tareas que vamos a realizar son las siguientes:
Descargar / Compilar SQUIDDescargar / Compilar ApacheDescargar / Compilar Mod_SecurityDescargar / Compilar Mod_html_proxyPruebas de Funcionamiento
Como la mejor de las explicaciones es la práctica, ahí vamos, pero debemos establecer unos requisitos mínimos antes de poder comenzar:
- Compilador Sun CC versión 5.9 (Sun Studio 12/Express-February 2007)
- Squid Cache 2.6
- Mod_Security 2.x (modsecurity-apache_2.1.1.tar.gz)
- Mod_proxy_html (stable version 2.5.2)
- Apache HTTP Server (apache 2.2.4)
- LibXML2 (libxml2-2.6.26)
A.- Preparación Entorno de Compilación
Es importante entender que las pruebas las he realizado con un entorno Sun Solaris 9/10 SPARC/x86 utilizando el compilador SunCC 5.9 Build40_1 2007/02/08 y con el binario CC en nuestro PATH.
1.- Instalación SQUID Proxy Cache
La página oficial de Squid Proxy Cache es http://www.squid-cache.org y nos bajaremos la versión estable 2.6 más reciente (a día de hoy es la versión 2.6-STABLE12)
$ export CC=cc
$ export CXX=cc
$ export CFLAGS="-fast -native"
$ export CXXFLAGS="-fast -native"
$ cd SQUID-CACHE-DIR
$ ./configure
--enable-delay-pools
--enable-forward-log
--enable-default-err-language=Spanish
--enable-cache-digests
--with-large-files
--with-pthreads
--enable-x-accelerator-vary
--enable-removal-policies
--enable-delay-pools
--disable-internal-dns
--prefix=/opt/applications/squid-2.6
...
$ make
...
$ make install
...
El uso de los flags "-native -fast" sólo son válidos si estamos compilando en un entorno igual al de producción, si no es así podemos utilizar la siguiente parametrización
UltraSPARC III
CFLAGS="-fast -xarch=v8plusb"
UltraSPARC IV
CFLAGS="-fast -xarch=v9 -xlibmopt -xreduction"
x86 - Opteron/Intel
CFLAGS="-fast -xarch=ss2"
x64 - Opteron
CFLAGS="-fast -xarch=amd64"
Puedes encontrar un archivo shell para realizar las tareas de forma automática aquí un poco "manual"
2.- Configuración SQUID Proxy Cache
2.1.- Configuración Directorios
Vamos a crear un grupo y un usuario para hacer más segura la instalación, además después de instalar squid, tendremos la siguiente estructura de directorios, sin embargo
$SQUID_BASE
/bin
/etc
/libexec
/man
/sbin
/share
Para hacer una configuración más personalizada vamos a realizar algunos cambios, como crear una nueva estructura de directorios para la caché, el PID, y el log de la siguiente forma:
$SQUID_BASE
/var
/cache
/logs
/run
# export SQUID_BASE=/opt/applications/squid-2.6
# mkdir -p $SQUID_BASE/var/logs
# mkdir -p $SQUID_BASE/var/run
# mkdir -p $SQUID_BASE/var/cache
# groupadd -g 7000 proxy
# useradd -g proxy -s /bin/false -d /dev/null -u 7000 proxy
# passwd -l proxy
# chown -R root:root $SQUID_BASE
# chmod -R o-r,o-w,o-x $SQUID_BASE
# chmod -R proxy:proxy $SQUID_BASE/var
# chown root:proxy $SQUID_BASE/var/run
2.2.- Configuración SQUID
Desde la versión 2.6 de SQUID se han introducido cambios en el archivo de configuración, muchos de ellos pertenecen a la versión 3.x de SQUID que está en fase de desarrollo. Por ello, la forma antigua de configuración de Transparent Proxy, ha sido modificada (y simplificada). Los parámetros que debemos ajustar son los siguientes:
########################################################
## PARAMETROS ADMINISTRATIVOS
########################################################
visible_hostname NOMBRE-REVERSE-PROXY (en nuestro caso rev-proxy1.test.com)
cache_effective_user USUARIO-QUE-EJECUTA (en nuestro caso proxy)
cache_effective_group GRUPO-QUE-EJECUTA (en nuestro caso proxy)
httpd_suppress_version_string on (elimina la versión en el header)
########################################################
## PARAMETROS PROXY TRANSPARENTE
########################################################
http_port PUERTO vhost (en nuestro caso el puerto 80)
icp_port 0
cache_peer WEBSERVER-ORIGINAL parent 80 0 originserver default (en nuestro caso 192.168.1.72)
Aquí tenemos varias propiedades que han sido importadas de la versión de desarrollo como son: httpd_suppress_version_string y http_port PUERTO vhost
- httpd_suppress_version: Tiene una función igual a ServerTokens Minimal de Apache y tiene como objetivo no mostrar la versión de SQUID
- http_port Nº_PUERTO PARAMETRO: Tiene como función hacer que SQUID se comporte como un proxy transparente si ponemos como parámetro vhost.
- cache_peer WEBSERVER-ORIGIANL parent 80 0 originserver default: De esta forma hacemos que WEBSERVER-ORIGINAL (su IP) sea el servidor principal (aunque la propiedad sirve para hacer que WEBSERVER-ORIGINAL sea la caché principal, por ese mismo pincipio, se puede hacer el proxy transparente).
########################################################
## PARAMETROS CACHE
########################################################
cache_dir ufs /opt/applications/squid-2.6/var/cache 2048 16 256
pid_filename /opt/applications/squid-2.6/var/run/squid.pid
########################################################
## PARAMETRIZACION DE LA CACHE MEMORIA
########################################################
cache_replacement_policy heap LFUDA
memory_replacement_policy lru
########################################################
## PARAMETROS TAMA!NO CACHE
########################################################
cache_mem 50 MB
cache_swap_low 90
cache_swap_high 96
maximum_object_size 150 MB
maximum_object_size_in_memory 64 KB
########################################################
## PARAMETRIZACION ERRORES
########################################################
error_directory /opt/applications/squid-2.6/share/errors/Spanish
err_html_text NOMBRE@CORREO.COM
########################################################
## PARAMETRIZACION SEGURIDAD
########################################################
acl SSL_ports port 443-563 # SSL
acl Safe_ports port 80-84 # http
# Permitimos utilizar el CONNECT a puertos seguros, hemos deshabilitado el acces
# para POP y SMTP puesto que nos pueden ocasionar fallos de seguridad, ademas, nos
# pueden utilizar como SPAMMER's
acl CONNECT method CONNECT
# Permitimos acceder al sistema de configuracion solo desde LOCALHOST
http_access allow manager localhost
http_access deny manager
# Cualquier llamada a puertos que no sean seguros denegada
http_access deny !Safe_ports
#Denegamos cualquier intento de CONNECT a los puertos que no sean los especificados
http_access deny CONNECT !Safe_ports
########################################################
## ACCESO A LA CACHE PERMITIDO A TODO EL MUNDO
########################################################
acl all world 0.0.0.0/0.0.0.0
http_access allow world
# No cachemaos los cgi
no_cache deny QUERY
Con esto tenemos una configuración base de SQUID capáz de realizar tareas de Reverse Proxy, como todas las configuraciones que hemos expuesto aquí pueden ser un poco difíciles de ver, tienes un archivo de configuración completo aquí
Hasta el próximo capítulo,
Urko
No hay comentarios:
Publicar un comentario