Administracion de Redes

Administracion de Redes
En este blog encontraran todo lo relacionado con el modulo de seguridad de administracion de redes, aunque tambien encontraran documentos relacionados con tecnologia e informatica.

martes, 11 de marzo de 2008

SQUID

PROXY SQUID

Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de pá
ginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un Servidor Web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.

Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque orientado a principalmente a HTTP y FTP es compatible con otros protocolos como Internet Gopher. Implementa varias modalidades de cifrado como TLS, SSL, y HTTPS.

Squid posee las siguientes características:

Proxy y Caché de HTTP, FTP, y otras URL:
Squid proporciona un servicio de Proxy que soporta peticiones HTTP, HTTPS y FTP a equipos que necesitan acceder a Internet y a su vez provee la funcionalidad de caché especializado en el cual almacena de forma local las páginas consultadas recientemente por los usuarios. De esta forma, incrementa la rapidez de acceso a los servidores de información Web y FTP que se encuentra fuera de la red interna.

Proxy para SSL:
Squid también es compatible con SSL (Secure Socket Layer) con lo que también acelera las transacciones cifradas, y es capaz de ser configurado con amplios controles de acceso sobre las peticiones de usuarios.

Jerarquías de caché:
Squid puede formar parte de una jerarquía de caches. Diversos proxys trabajan conjuntamente sirviendo las peticiones de las páginas. Un navegador solicita siempre las páginas a un sólo proxy, si este no tiene la página en la caché hace peticiones a sus hermanos, que si tampoco las tienen las hacen a su/s padre/s... Estas peticiones se pueden hacer mediante dos protocolos: HTTP e ICMP.

ICP, HTCP, CARP, caché digests:
Squid sigue los protocolos ICP, HTCP, CARP y caché digests que tienen como objetivo permitir a un proxy "preguntarle" a otros proxys caché si poseen almacenado un recurso determinado.

Caché transparente:
Squid puede ser configurado para ser usado como proxy transparente de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y habitualmente sin que el propio cliente conozca de su existencia. De modo predefinido Squid utiliza el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.


WCCP:
A partir de la versión 2.3 Squid implementa WCCP (Web Cache Control Protocol). Permite interceptar y redirigir el trafico que recibe un router hacia uno o más proxys caché, haciendo control de la conectividad de los mismos. Además permite que uno de los proxys caché designado pueda determinar como distribuir el tráfico redirigido a lo largo de todo el array de proxys caché.

Control de acceso:
Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer políticas de acceso en forma centralizada, simplificando la administración de una red.

Aceleración de servidores HTTP:
Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché, si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet. Esta función permite navegar rápidamente cuando los objetos ya están en el caché y además optimiza enormemente la utilización del ancho de banda.

SNMP:
Squid permite activar el protocolo SNMP, este proporciona un método simple de administración de red, que permite supervisar, analizar y comunicar información de estado entre una gran variedad de máquinas, pudiendo detectar problemas y proporcionar mensajes de estados.

Caché de resolución DNS:
Squid está compuesto también por el programa dnsserver, que se encarga de la búsqueda de nombres de dominio. Cuando Squid se ejecuta, produce un número configurable de procesos dnsserver, y cada uno de ellos realiza su propia búsqueda en DNS. De este modo, se reduce la cantidad de tiempo que la caché debe esperar a estas búsquedas DNS.


Instalación y Configuración de SQUID

Instalamos el squid:
#apt-get install squid

El fichero de configuración de SQUID se halla en /etc/squid/squid.conf y hemos de editarlo con nuestra herramienta favorita para realizar los cambios adecuados y conseguir que cumpla su tarea con cierta seguridad para nuestro sistema.
#pico /etc/squid/squid.conf

Lo mejor que se debe hacer es crear otro archivo .conf para squid para no tener que buscar dentro de todas las lineas que se han creado al instalarlo.

Primero movemos el archivo .conf que se creo con la instalacion:
#mv /etc/squid/squid.conf /etc/squid/squid.old

Luego creamos el archivo nuevo donde vamos a configurarlo:
#touch /etc/squid/squid.conf

Puerto para SQUID

Por defecto, SQUID utilizará el puerto 3128, aunque puede configurarse para que use cualquier otro, incluso varios puertos simultáneamente, dependiendo de nuestras necesidades. La línea correspondiente quedará:

http_port 3128

Tamaño de caché

En esta instrucción fijamos el espacio en disco que se usará para almacenar las páginas visitadas, es decir, respondemos a la pregunta, ¿Cuánto deseo almacenar de Internet en mi disco duro?

Por defecto SQUID usará 100 Mb, como límite para el tamaño del caché, pero si quisiéramos fijar, por ejemplo 500 Mb, debemos fijar la entrada correspondiente de la siguiente forma:

cache_dir ufs /usr/local/squid/cache 500 16 256

En la línea anterior estamos seleccionando el directorio de caché (/usr/local/squid/cache), indicando el tamaño máximo para éste (500), la cantidad de subdirectorios de primer nivel que puede contener (16, el valor por defecto) y, el número de subdirectorios de segundo nivel (256, también por defecto) que puede almacenar

NOTA:En caso de que fijemos un tamaño para el directorio de caché superior a la capacidad real del disco duro, SQUID se bloqueará.

Vida en el caché (TTL)

Podemos configurar también el tiempo que pueden permanecer los objetos almacenados en el caché, dependiendo de nuestras necesidades, lógicamente. De modo general, si definimos un tiempo de permanencia demasiado bajo, estaremos desaprovechando una de las principales ventajas del uso de servidor proxy, mientras que si establecemos un periodo demasiado alto, también saturaremos innecesariamente la capacidad de almacenaje.

Parece una decisión razonable, en la mayoría de casos, fijar un mes de vida para los objetos del caché. Esto se logra con la instrucción:

reference_age 1 month

Controles de acceso

Una de las características más interesantes de este servidor proxy es la posibilidad de establecer unas reglas de control de acceso que pueden complementar perfectamente nuestro objetivo de filtrado de paquetes.

Para ello, confeccionaremos unas Listas de Control de Acceso para designar qué máquinas o redes tienen permitido, o no, acceder al servidor. Cada una de ellas tendrá asociada unas Reglas de Control que regulará esta actividad. Es decir, definimos unas listas, por una parte y establecemos unas reglas específicas para cada una de ellas, ejemplo:

Si queremos permitir el acceso al proxy para todas las máquinas de nuestra red, debemos de definir una lista que identifique a toda nuestra red local, en nuestro caso:

acl nuestrared src 192.168.1.0/255.255.255.0

De esta forma nuestra red queda identificada para SQUID, quedando la sección de Listas de Control de Acceso con el siguiente aspecto:

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.255
acl nuestrared src 192.168.1.0/255.255.255.0

Ahora debemos permitir el acceso con una línea con la siguiente sintaxis de modo que la sección Reglas de Control, debe quedar:

http_access allow localhost
http_access allow nuestrared
http_access deny all

La línea http_access allow nuestrared permite el acceso al proxy para la lista denominada nuestrared que está formada por 192.168.1.0/255.255.255.0, o sea, cualquier máquina cuya dirección IP esté comprendida entre 192.168.1.1 y 192.168.1.254

Redireccionamiento a través de SQUID

Una posibiliad que nos interesa plantearnos es utilizar nuestro servidor proxy de modo "transparente", es decir, nuestras máquinas saldrán a la red Internet a través de él, pero de la misma forma que lo harían mediante el router ADSL. Para ello, usando iptables redireccionaremos todas las peticiones al puerto 80 de nuestra red local hasta el puerto 3128 donde escucha SQUID, la instrucción para conseguirlo es:

#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Esta linea anterior se hace para que redireccione todo el trafico del puerto 3128 al 80, pero este tambien se debe hacer con la primera linea y la ultima del ejercicio que vamos a realizar a continuacion y de esta manera conseguiremos volver el proxy-squid transparente.

Ejercicio
Politicas de seguridad
Restringir el uso de Internet

1. Crear listas negras (archivos) para bloquear los siguientes contenidos.

Porno ---> para cada categori­a se debe crear una lista negra. Cada archivo tendra
Chat al menos dos registros
Correos
Deportes
Descargas
Juegos

2. Bloquear a todos los usuarios en la red la navegacion de los usuarios en las listas negras.
3. Bloquear a todos los usuarios las descargas y reproduccion de archivos .exe .mp3 .mpg .wav .iso .zip .rar.
4. La navegacion debe restringirse a horarios locales de lunes a viernes de 8 a 12 am y de 1 a 4:30 pm.
5. Existe un usuario sin ninguna sin ninguna restriccion 10.3.6.208.
6. Los usuarios de la red pueden acceder a paginas de correo gratuito y chat solamente solamente en el horario del almuerzo --> 12:00-13:00.
7. Configurar su maquina para que trabaje como proxy-transparente.


SOLUCION -->

#ESTA LINEA SE AGREGA JUNTO CON LA ULTIMA DE DEBAJO PARA COLOCAR EL #PROXY TRANSPARENTE
http_port 10.3.6.206:3128 transparent

#ES EL PUERTO POR DEFECTO DEL ICP
icp_port 0

#EN ESTA LINEA INDICAMOS EL TAMAÑO DE CACHE QUE DECEAMOS UTILIZAR
cache_mem 16 MB
cache_dir ufs /var/spool/squid 100 16 256
#ESTA LINEA SE AGREGA PARA COLOCAR LOS PROXY PARIENTES PARA COMPARTIR LA INFORMACION DE LA CACHE DE LOS PROXY
cache_peer proxy2.sena.edu.co parent 80 0 default

#LISTAS DE CONTROL DE ACCESO
#ESTA ACL TIENE EL NOMBRE "profe" src SIGNIFICA EL ORIGEN DE LA ACL
acl profe src 10.3.6.232
#ESTA ACL TIENE EL NOMBRE "Restringir-almuerzo" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl Restringir-almuerzo time MTWHF 12:00-13:30
#ESTA ACL TIENE EL NOMBRE "RestringirPorHoras1" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl RestringirPorHoras1 time MTWHF 08:00-12:00
#ESTA ACL TIENE EL NOMBRE "RestringirPorHoras2" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl RestringirPorHoras2 time MTWHF 13:00-16:30
#ESTA ACL TIENE EL NOMBRE "ficeros" urlpath_regex -i ES PARA DENEGAR EL ACCESO A EXTENSIONES QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/ficheros.acl" --> SE DEBE EDITAR EL ARCHIVO ficheros.acl Y COLOCAR LAS EXTENSIONES ASI: mp3$, jpg$
acl ficheros urlpath_regex -i "/etc/squid/acl/ficheros.acl"
#ESTA ACL TIENE EL NOMBRE "porno" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/porno.acl" --> SE DEBE EDITAR EL ARCHIVO porno.acl Y COLOCAR LAS PALABRAS ASI: porno, sexo
acl porno url_regex "/etc/squid/acl/porno.acl"
#ESTA ACL TIENE EL NOMBRE "chat" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/chat_correos.acl" --> SE DEBE EDITAR EL ARCHIVO chat_correos.acl Y COLOCAR LAS PALABRAS ASI: hotmail, meebo
acl chat url_regex "/etc/squid/acl/chat_correos.acl"
#ESTA ACL TIENE EL NOMBRE "descarga" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/descargas.acl" --> SE DEBE EDITAR EL ARCHIVO descargas.acl Y COLOCAR LAS PALABRAS ASI: download, descargar
acl descarga url_regex "/etc/squid/acl/descargas.acl"
#ESTA ACL TIENE EL NOMBRE "sitios-web" dstdomain ES PARA DENEGAR EL ACCESO A DOMINIOS COMPLETOS QUE SE ENCUENTRAN EN LA RUTA # "/etc/squid/acl/sitios-web.acl" --> SE DEBE EDITAR EL ARCHIVO sitios-web.acl Y COLOCAR LOS DOMINIOS ASI: www.google.com, www.chatiapues.com
acl sitios-web dstdomain "/etc/squid/acl/sitios-web.acl"
#ESTA ACL TIENE EL NOMBRE "deporte" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/paginas-deporte.acl" --> SE DEBE EDITAR EL ARCHIVO paginas-deporte.acl Y COLOCAR LAS PALABRAS ASI: futbol, foxsport
acl deporte url_regex "/etc/squid/acl/paginas-deporte.acl"
#EN ESTA LINEA ESTAMOS INDICANDO EL RANGO DE TODAS LAS REDES
acl all src 0.0.0.0/0.0.0.0
#EN ESTA LINEA ESTAMOS INDICANDO EL RANGO DE TODA LA RED LOCAL
acl localnet src 10.3.6.128/255.255.255.128

#EN ESTA LINEA PERMITIMOS LA ACL "PROFE" ANTERIORMENTE INDICADA
http_access allow profe
#DENEGAMOS LA ACL "SITIOS-WEB" ANTERIORMENTE INDICADA
http_access deny sitios-web
#DENEGAMOS LA ACL "FICHEREOS" ANTERIORMENTE INDICADA
http_access deny ficheros
#DENEGAMOS LA ACL "PORNO" ANTERIORMENTE INDICADA
http_access deny porno
#PERMIRTIMOS LA ACL "CHAT" A LOCALNET (RED LOCAL INDICADA ANTERIORMENTE)PERO SOLAMENTE EN EL HORAIO INDICADO EN "Restringir-almuerzo"
http_access allow chat localnet Restringir-almuerzo
#DENEGAMOS LA ACL "CHAT" ANTERIORMENTE INDICADA
http_access deny chat
#DENEGAMOS LA ACL "DESCARGA" ANTERIORMENTE INDICADA
http_access deny descarga
#DENEGAMOS LA ACL "DEPORTE" ANTERIORMENTE INDICADA
http_access deny deporte

#ESTAS LINEAS NOS PERMITEN LAS ACL "RestringirPorHoras1 Y RestringirPorHoras2" EN EL HORARIO APLICADO EN LA ACL
http_access allow localnet RestringirPorHoras1
http_access allow localnet RestringirPorHoras2


#ESTA ES LA POLITICA POR DEFECTO QUE DENIEGA TODO EL TRAFICO QUE NO ESTA PERMITIDO
http_access deny all

#ESTA LINEA SE DEBE AGREGAR CON LA PRIMERA PARA COLOCAR EL PROXY COMO TRANSPARENTE
visible_hostname localhost

NOTA: Esta por demas decir que las lineas que estan con # es por que estan comentadas y si las colocamos sin # cuando ejecutemos el squid va a tomar estas lineas como caracteres y va a presentar errores, por este motivo debemos dejarlas comentadas al pasarlas al archivo .conf del squid.

No hay comentarios: