viernes, 30 de octubre de 2009

Configuración de Servidor Proxy

1. Servidor PROXY

Un servidor Proxy , es básicamente un programa que acepta peticiones de clientes para las URL, obtiene, y devuelve los resultados al cliente. Los Proxy se utilizan en redes en la que los clientes no tienen acceso directo a Internet, pero tienen que ser capaces de ver páginas Web y para la memoria caché de las páginas comúnmente solicitadas, de manera que si más de un cliente quiere ver la misma página, sólo tiene que ser una vez descargada.


1.1. Squid PROXY

Squid es el Proxy más popular servidor para sistemas Unix. Es libre y está disponible para su descarga desde www.squid-cache.org, y se incluye como paquete estándar con todas las distribuciones de Linux y muchos otros sistemas operativos. Squid soporta Proxy, caching y aceleración HTTP, y tiene un gran número de opciones de configuración para controlar el comportamiento de estas características.

2. Instalación y Configuración de Squid

Empezamos instalando squid y httpd:

# yum - y install squid httpd

Squid utiliza el fichero de configuración ubicado en la siguiente ruta:

/etc/squid/squid.conf, el cual podremos trabajar con nuestro editor preferido.

Configuración squid.conf

Antes de empezar a configurar algún servicio en Linux es recomendable hacer una copia del archivo de configuración que viene por defecto, esto lo hacemos de la siguiente manera:

# cp squid.conf squid.conf.original

Ahora pasamos a configurar squid.conf. Usamos algún editor vim, mcedit, etc. Entramos en la ruta absoluta del archivo de configuración:

# cd /etc/squid
# vim squid.conf


Configurar: parámetro http_port: (puerto que utilizará Squid)

De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados recomendados para servidores intermediarios (proxies) pueden ser el 3128 y 8080 a través de TCP.

De modo predefinido Squid utilizará el puerto 3128 para atender a peticiones, sin embargo podemos especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos a la vez.

Si queremos darle mayor seguridad, vinculamos el servicio a una IP que solo se pueda acceder desde la red local. Si nuestro servidor tiene la dirección IP: 192.168.1.45, hacemos lo siguiente:


Configurar: parámetro cache_mem

Este parámetro cache_mem establece la cantidad de memoria para:

-Objetos de transito
-Objetos frecuentemente utilizados (Hot).

Por defecto vienen 8 MB. Podemos especificar una cantidad mayor dependiendo de nuestras necesidades.

Si tenemos un servidor con al menos 128 MB de RAM, establecemos 16 MB como valor para este parámetro:

cache_mem 16 MB


Configurar: parámetro cache_dir

Establecemos que tamaño deseamos que tenga el caché en el disco duro para Squid. De modo predefinido Squid utilizará un caché de 100 MB, de modo que encontramos la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Podemos incrementar el tamaño del caché según nuestra necesidad.

Mientras más caché tengamos, más objetos se almacenarán en éste y por lo tanto se utilizará menos ancho de banda. Por ejemplo establecemos un caché de 10000 MB:

cache_dir ufs /var/spool/squid 10000 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No es necesario modificar estos números.
Configurar: parámetro cache_mgr

De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el proceso, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso de considere conveniente.

cache_mgr webmaster@redlinux.com

Controles de Acceso

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertos equipos en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid.

* Listas de Control de Acceso

La sintaxis para una lista de control de acceso por lo general es la siguiente:

acl [nombre de la lista] src [lo que compone la lista]

Si deseamos establecer una lista de control de acceso que abarque a toda la red, tenemos que definir la dirección IP correspondiente a la red y la máscara de sub-red.

Por ejemplo:

Mi red: 192.168.1.0 (nuestra red local) Máscara de sub-red: 255.255.255.0
La lista sería:

acl mired src 192.168.1.0/255.255.255.0

También podemos especificar una Lista de Control de Acceso especificando un fichero que contenga una lista de direcciones IP. Por ejemplo un grupo de IPs de los jefes.

Primero creamos el fichero dentro de la ruta de Squid:

# cd /etc/squid
# touch jefes


Editamos el fichero e ingresamos las direcciones IP:

# vim jefes
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10

Aquí estamos definiendo la Lista de Control de Acceso denominada jefes estaría compuesta para las IP incluidas en el fichero /etc/squid/jefes. La lista sería:

acl jefes src “/etc/squid/jefes”

Reglas de Control de Acceso

Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso, es decir, a partir de donde se localiza la siguiente leyenda:

La sintaxis básica es la siguiente:

http_access [deny o allow] [lista de control de acceso]

Ahora un ejemplo con la Lista de Control de Acceso jefes definida anteriormente:

http_access allow jefes

También podemos definir reglas haciendo uso de la expresión ! que significa no. Por ejemplo: Dos listas de control de acceso una denominada jefes (acceso a Squid), y mired (sin acceso). Aquí establecemos que solo la lista jefes tendrá acceso a squid excepto todo lo que comprenda a mired.
http_access allow jefes !mired

Esto tipo de reglas se aplican cuando tenemos un grupo de IP dentro de un rango de red

al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de Control de Acceso

Ahora vamos a ver algunos casos donde podemos aplicar listas y reglas de control de acceso.

Ejemplo:

Si tenemos una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

acl mired src 192.168.1.0/255.255.255.0

Ahora la sección de listas de control de acceso deberá quedar más o menos del siguiente modo:

# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.0
acl mired src 192.168.1.0/255.255.255.0

Ahora procedemos a aplicar la regla de control de acceso:

http_access allow mired

Ahora la sección de reglas de control de acceso deberá quedar más o menos del siguiente modo:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTES
#

La regla http_access allow mired permite el acceso a squid a la Lista de Control de Acceso denominada mired, la cual está conformada por 192.168.1.0/255.255.255.0. Lo que significa que cualquier maquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

Iniciado Squid

Una vez que terminamos de configurar Squid, ejecutamos por primera vez la siguiente instrucción:

# service squid start

Si necesitamos reiniciar el servicio para ejecutar algún cambio de configuración, hacemos:

# service squid restart

Para que Squid se inicie de manera automática cada vez que iniciemos el sistema, hacemos:

# chkconfig squid on

Restricción de Páginas Web Indebidas

Denegar el acceso a ciertos sitios de red permite hacer un uso más racional del ancho de banda. El proceso es simple, y consiste en denegar el acceso a nombres de dominio o direcciones Web que contengan patrones en común.

Definiendo patrones comunes

Debemos de generar una lista que contenga las direcciones Web y palabras utilizadas en nombres de ciertos dominios.

Ejemplos:

http://www.sitioporno.com/
http://www.otrositioporno.com/
sitioindeseable.com
otrositioindeseable.com
napster
sex
porn
mp3
xxx
adult
warez
celebri

Se recomienda denegar la dirección web del sitio, así como también el dominio, tal como se indico en el ejemplo anterior

Estos dominios y palabras las ingresaremos dentro de una lista en la ruta:

/etc/squid/sitiosdenegados

Previamente deberíamos haber creado el fichero sitiosdenegados dentro de /etc/squid

Parámetros en /etc/squid/squid.conf

Una vez generado el fichero sitiosdenegados, también debemos definir una Lista de Control de Acceso que defina a dicho fichero y la denominaremos “sitiosdenegados”.

La línea correspondiente debería quedar así:

acl sitiosdenegados url_regex “/etc/squid/sitiosdenegados”

Debemos tener lo siguiente:

Ahora generamos la Regla de Control de Acceso correspondiente a la lista “sitiosdenegados”, de la siguiente manera:

http_access allow mired !sitiosdenegados

Luego en squid.conf tendremos:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTES
#
http_access allow localhost
http_access allow mired !sitiosdenegados
http_access deny all

Para que se efectúen los cambios de configuración ejecutamos:

# service squid restart

Restricción de Archivos por su Extensión

Squid permite denegar el acceso a ciertos tipos de extensiones, lo que nos permite hacer

un uso más racional del ancho de banda. El funcionamiento es simple, y consiste en denegar el acceso a ciertos tipos de extensiones que coincidan con lo establecido en una Lista de Control de Acceso.

Definiendo elementos de la Lista de Control de Acceso

Primero debemos generar una lista que contenga las extensiones que vamos a denegar, esta lista la generamos dentro de /etc/squid.

Ejemplo:

\.avi$
\.mp4$
\.mp3$
\.mpg$
\.mpeg$
\.exe$

Esta lista debe ser guardada con todas las extensiones de fichero que consideremos pertinentes, la guardamos como /etc/squid/listaextensiones.

Parámetros en /etc/squid/squid.conf

Debemos definir una Lista de Control de Acceso que a su vez defina al fichero /etc/squid/listaextensiones. Esta lista será denominada “listaextensiones”. Lo que debe quedar de la siguiente manera:

acl listaextensiones urlpath_regex “/etc/squid/listaextensiones”

Habiendo hecho esto, en la sección de Lista de Control de Acceso debemos tener:

Ahora generamos una Regla de Control de Acceso para la lista “listaextensiones”, de la siguiente manera:

http_access allow mired !sitiosdenegados !listaextensiones

Para que se efectúen los cambios de configuración reiniciamos Squid:

# service squid restart
###espero les sirva RDS......####