La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Squid Introduccion Comandos Basicos Ejemplos.

Presentaciones similares


Presentación del tema: "Squid Introduccion Comandos Basicos Ejemplos."— Transcripción de la presentación:

1 Squid Introduccion Comandos Basicos Ejemplos

2 Squid Supongamos que uno de nuestros equipos de la red intenta conectarse a y su navegador esta configurado para que su salida sea a través del Proxy. Lo primero que sucederá en el proxy es recibir la petición de dicho equipo y evaluar su cache en busca de dicha pagina, si la misma se encuentra en este, la devuelve sin generar una petición externa, generando de esta manera un tiempo de respuesta y un consumo de ancho de banda significativamente menor. En caso contrario la petición saldrá a la WAN y cuando esta sea recibida se enviara al cliente que la pidió, creando una copia en cache para futuras peticiones.

3 en el mismo Squid utiliza diferentes algoritmos:
Que es el cache? Los objetos que se guardan en el cache son archivos, documentos o respuestas a un pedido de un servicio de Internet como puede ser FTP, HTTP o Gopher. Para manejar la información contenida en el mismo Squid utiliza diferentes algoritmos:

4 en el mismo Squid utiliza diferentes algoritmos:
Que es el cache? Los objetos que se guardan en el cache son archivos, documentos o respuestas a un pedido de un servicio de Internet como puede ser FTP, HTTP o Gopher. Para manejar la información contenida en el mismo Squid utiliza diferentes algoritmos:

5 Squid * LRU: Acrónimo de "Least Recently Used", que se traduce como "Menos Recientemente Utilizado". * LFUDA: Acrónimo de "Least Frequently Used with Dynamic Aging", que se traduce como "Menos Frecuentemente Utilizado con Envejecimiento Dinámico". * GDSF: Acrónimo de "GreedyDual Size Frequency", que se traduce como "Frecuencia detamaño GreedyDual (codicioso dual)", que es el algoritmo sobre el cual se basa GDSF

6 Squid * Al instalar un Proxy-Cache, ya sabemos que necesitaremos lugar donde almacenar el caché; es por ello que cuanto mas espacio tengamos de almacenamiento, mas información podremos guardar. Se recomienda tener en la medida de ser posible un disco rígido rápido, ya que se estará accediendo constantemente a el (cuanto mas rápido sea el disco, mejor). Por otro lado las paginas con mayores accesos se guardan por periodos largos en la RAM para poder ofrecer de esta manera una mayor velocidad de acceso. Entonces este es otro punto a tener en cuenta, a mayor cantidad de RAM, mayor performance. En cambio y al contrario de lo anterior, Squid no usa gran capacidad de procesamiento, es por eso que con procesadores no muy potentes, es mas me atrevería a decir que con un Pentium 166 Mhz funciona bastante bien. Así que si pueden inviertan mas en disco y memoria, y no así en el procesador

7 Squid * Configuración Squid utiliza el fichero de configuración squid.conf localizado en /usr/local/squid/etc/, y para trabajar sobre este vamos a utilizar nuestro editor de texto preferido. Existe un gran número de parámetros (¡no se asusten!). En esta entrega vamos a empezar por los básicos para poder dejar funcionando squid y aplicaremos diferentes ACL (listas de control de acceso), para luego en las siguientes entregas iremos profundizando sobre temas mas avanzados. Los parámetros a "descomentar" y modificar son http_port, cache_mem, cache_dir, cache_effective_user, Lista de Control de Acceso, Regla de Control de Acceso.

8 Squid * Parámetro http_port: ¿Que puerto utilizar para Squid? De modo predefinido Squid utilizará 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. La configuración quedaría de la siguiente manera: si elegiríamos el puerto 3128 y el 8080 (Puerto comúnmente utilizado en Proxys) # Squid normally listens to port 3128 http_port 3128 http_port 8080

9 Squid * Parámetro cache_mem: El parámetro cache_mem establece la cantidad ideal de memoria para los objetos en tránsito, los objetos frecuentemente utilizados (hot) y los objetos negativamente almacenados en el caché. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos "hot" y aquellos negativamente almacenados en el caché podrán utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición. De modo predefinido se establecen 8 MB. Podemos especificar un tamaño mayor, esto depende de los recursos que dispongamos y lo que deseemos ocupar. Consejo: Si tenemos un servidor con al menos 128MB de RAM, pongamos 16 MB como valor para este parámetro, ya lo he probado y funciona muy bien

10 Squid #Default: cache_mem 16 MB
* Parámetro cache_dir: Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. De modo predefinido Squid utilizará un caché de 100 MB. Entonces, será algo así: cache_dir ufs /usr/local/squid/var/cache

11 Squid Se puede incrementar el tamaño del caché hasta donde lo queramos. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB: #Default: cache_dir ufs /usr/local/squid/var/cache Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No es recomendable modificar estos valores.

12 Squid Nota: Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco rígido, Squid se bloqueará inevitablemente. Es por eso que tenemos que tener cuidado con el tamaño que asignamos y estar seguros de contar con este espacio libre en el disco rígido. * Parametro cache_effective_user: Acá definimos el usuario que va a tener permiso de escritura en el caché. #Default: cache_effective_user emilianox

13 Squid * Parametro visible_hostname: Este parametro, sera el que nos aparecera en el navegador a la hora de mostrar algun error, aparece al final de la pagina de la siguiente manera: Generated Mon, 1 Jul :01:45 GMT by emi (squid/2.6.STABLE5) #Default: visible_hostname emi

14 Squid ACL (Listas de Control de Acceso)
Para controlar el tráfico, es necesario establecer Listas de Control de Acceso que definan una red o bien, ciertas máquinas en particular que son las que queremos que pasen a través de nuestro Proxy. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Regularmente una lista de control de acceso se establece con la siguiente sintaxis: acl [nombre de la lista] tipo_de_acl [lo que compone a la lista]

15 Squid Si queremos establecer una lista de control de acceso que abarque a toda la red local, tenemos que definir la IP correspondiente a la red y la máscara de subred. Vamos a hacer de cuenta que nuestra red es y la mascara de subred es , lo definimos de esta manera: #Recommended minimum configuration: acl redlocal src /

16 Squid También podemos definir una Lista de Control de Acceso especificando un archivo que puede estar localizado en cualquier parte del disco rígido, y el cual contiene una lista de direcciones, esto es realmente útil si tenemos varios equipos en nuestra red, ya que de esta manera mantendremos un orden y en caso de ser necesario agregar o eliminar un equipo, bastara con modificar El archivo. Por ejemplo, el archivo /usr/local/squid/permitidos contendría algo así: Y la lista de control de acceso quedaría así: #Recommended minimum configuration: acl permitidos src “/usr/local/squid/permitidos”

17 Squid Como bloquear dominios de destino
Este tipo de ACL es muy útil cuando queremos bloquear acceso a determinadas paginas. Por ejemplo si queremos que nuestros usuarios no accedan a lo que tendríamos que hacer es crear la siguiente ACL #Recommended minimum configuration: acl nohotmail dstdomain Con esta línea (y luego colocando las reglas de control de acceso para denegar esta ACL), ya bastara para que los equipos que hallamos especificado no ingresen en esta pagina. Como también hemos visto en el ejemplo de el tipo de ACL "src", lo que se puede hacer en el caso de que tengamos muchas paginas a las cuales queramos tener un control de acceso, es crear un archivo que contenga las mismas. Por ejemplo podemos crear un archivo llamado /usr/local/squid/paginasdenegadas que podría contener estas líneas:

18 Squid www.hotmail.com www.yahoo.com www.microsoft.com
Y las que ustedes quieran. Luego lo que tenemos que hacer es una ACL que apunte a este archivo: #Recommended minimum configuration: acl paginasno dstdomain “/usr/local/squid/paginasdenegadas” Nota: Las ACL siempre hay que definirlas de lo puntual a lo general, ya que la forma de actuar de las mismas es en orden descendente y en cuanto encuentra una que coincida no sigue buscando la siguiente. Nótese que al final hay una ACL ("deny all"). Esta existe en el caso que la petición no coincida con ninguna, por seguridad se denegara.

19 Squid 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 definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS La sintaxis básica es la siguiente: http_access [deny o allow] [lista de control de acceso] En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos: http_access allow permitidos

20 Squid O podríamos denegar a la Lista de Control de Acceso denominada denegados: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access deny denegados También pueden definirse reglas usando la expresión !, la cual significa "no". Pueden definirse, por ejemplo, dos listas de control de acceso: una denominada lista1 y otra denominada lista2 (en la misma regla de control de acceso) en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que sea lista1 excepto aquello que comprenda lista2: http_access allow lista1 !lista2 Este tipo de reglas son útiles cuando se tiene un gran grupo de IPs 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

21 Squid Aplicando Listas y Reglas de control de acceso.
Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración. Ejemplo 1: Considerando como ejemplo que tenemos una red / , y queremos definir toda la red local, vamos a usar la siguiente línea en la sección de Listas de Control de Acceso: acl todalared src / Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos así: # Recommended minimum configuration: acl all src / acl manager proto cache_object acl localhost src /

22 Squid Y después vamos a aplicar la regla de control de acceso:
http_access allow todalared Quedando la sección de reglas de control de acceso más o menos así: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access deny all La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual está conformada por / Esto significa que cualquier máquina desde hasta podrá acceder a Squid. Ejemplo 2: Si nada mas queremos permitir el acceso a Squid a ciertas direcciones IP de la red local, lo que tendríamos que hacer es crear un fichero que contenga dicha lista. Entonces generamos el fichero /usr/local/squid/listas/redlocal, dentro del cual vamos a incluir solo aquellas direcciones IP que deseamos permitir el acceso. Ejemplo:

23 Squid Vamos a definir a esta lista de control de acceso como redlocal: acl redlocal src "/usr/local/squid/listas/redlocal" Habiendo realizado lo anterior, la sección de listas de control de acceso debe quedar más o menos así: # Recommended minimum configuration: acl all src / acl localhost src /

24 Squid A continuación procedemos a aplicar la regla de control de acceso: http_access allow redlocal Habiendo realizado lo anterior, la sección de reglas de control de acceso debería quedar más o menos así: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access deny all La regla http_access allow redlocal permite el acceso a Squid a la lista de control de acceso denominada redlocal, la cual está conformada por las direcciones IP especificadas en el fichero /usr/local/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /usr/local/squid/listas/redlocal no tendrá acceso a Squid.

25 Squid Definir días y bandas horarias
Quizás necesitemos controlar el acceso a Internet en horarios y días predefinidos. Un claro ejemplo de esto puede ser una oficina cuyos días de trabajo fueran de Lunes a Viernes y en un horario de 8hs a 16hs, por motivos laborales y de seguridad solo necesitarían contar con servicio de Internet dentro de este horario y estos días. Es por eso que vamos a ver de que manera se puede controlar esto: Sintaxis: acl [nombre] time [dias][hora_de_comienzo:minutos-hora_de_fin:minutos] Ejemplos: #Recommended minimum configuration: acl horario_laborable time 8:00-16:00 acl dias_laborable time MTWHF acl dias_y_horarios time MTWHF 8:00-16:00

26 Squid Ahora a aplicar las Reglas de Control de Accesso
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow redlocal dias_y_horarios En los ejemplos anteriores, expusimos la primer ACL para determinar un horario, la segunda para determinar días y en la tercera la combinación de ambas. Luego en el ejemplo de las Reglas de Control de Acceso, aplicamos a las maquinas definidas en redlocal la ACL dias_y_horarios. Nota: Los horarios están expresados en 24Hs (Ejemplo 13:00 para 1:00 pm), se debe respetar siempre que la hora de fin sea mayor a la hora de comienzo (Ejemplo 1:00-13:00) o sea que será entre la 1:00 am y la 1:00 pm). Para los días se usa la primer letra de su representación en ingles, y en el caso que esta sea igual a alguna otra posterior, se reemplaza por la segunda letra.(Ejemplo : T de Tuesday para martes y H de Thursday para Jueves). A continuación se detalla el listado de letras a usar para cada día de la semana.

27 Squid Lista de Días y sus abreviaciones a usar: S – Domingo M – Lunes
T – Martes W - Miércoles H - Jueves F – Viernes A – Sábado Observaciones: Testeando este tipo de ACL pude observar que la hora de inicio es respetada con exactitud, pero no así la hora de fin, ya que esta se activa 1 minuto mas tarde de lo que indiquemos. Entonces si necesitamos un horario de corte exacto nos conviene colocar 1 minuto antes a la hora de fin, ejemplo: #Recommended minimum configuration: acl horario_laborable time 8:00-15:59 Esta ACL empezaría a las 8:00 hs exactamente y cortaría a las 16:00hs.

28 Squid Filtrar por mac address
Si lo que necesitamos es tener un control estricto de que maquinas pueden acceder y cuales no, lo mejor es aplicar una ACL por MAC Address (Dirección física única de las Placas de Red), de esta manera podremos quedarnos tranquilos que las maquinas permitidas o denegadas son las que nosotros hayamos indicado.Es importante aclarar que para poder usar esta ACL necesitamos habilitar esta opción durante la configuración del código fuente: --enable-arp-acl en el comando configure. Bueno pasemos a ver como la podemos implementar: Sintaxis: acl [nombre] arp [mac_address] Ejemplo: #Recommended minimum configuration acl maquina1 arp 09:00:2b:23:45:67

29 Squid En este ejemplo estamos indicando que “maquina1” tiene la MAC Address: 09:00:2b:23:45:67. También podemos apuntar a un archivo, donde contengamos una lista de MAC Address y así no tener que ir poniendo línea por línea, ejemplo: #Recommended minimum configuration acl maquinas arp “/home/emilianox/maquinas” El archivo “maquinas” podrá contener algo como esto: 00:09:B2:24:34:89 00:01:C1:22:54:10 00:01:C1:23:44:12

30 Squid Filtrar por puerto
Como lo indica el titulo, en esta ACL lo que haremos será filtrar ya sea un puerto especifico, como así también un rango de los mismos. Por ejemplo si quisiéramos que nuestros clientes solo usen el puerto 80 y 443 (HTTP y HTTPS), y el resto de los puertos denegarlos, lo que tendremos que hacer es algo como esto: Sintaxis: acl [nombre] port [numero_de_puerto_o_rango] Ejemplo: #Recommended minimum configuration: acl puertos_permitidos port Ahora aplicamos la Regla de Control de Acceso # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow puertos_permitidos redlocal http_access deny all Lo que estamos haciendo acá es permitiendo los puertos 80 y 443(http y https) y denegando el resto para redlocal .

31 Squid Ahora, si queremos definir un rango de puertos como mencionamos anteriormente lo que tendremos que hacer sera lo siguiente: #Recommended minimum configuration: acl puertos_permitidos port # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow puertos_permitidos redlocal En este caso estamos definiendo los puertos comprendidos entre 1 y 1024 para redlocal.

32 Squid FILTRAR POR CONTENIDO de url
Esta regla nos puede ser muy útil para filtrar distintos tipos de contenidos que los clientes soliciten en su url, siendo de esta manera como se debería aplicar: Sintaxis : acl [nombre] url_regex –i [contenido_a_filtrar] Ejemplo : #Recommended minimum configuration: acl denegados url_regex –i sex xxx mp3 wav En este caso lo que estaremos haciendo, es filtrar las palabras “sex, xxx, mp3 y wav”, del contenido url que genere el cliente.

33 Squid También lo que podemos hacer es crear un archivo y dentro de este colocar todas las palabras que queremos filtrar, como así también seguramente nos pasara que algunas de estas palabras contienen en realidad una dirección que quisiéramos permitir, por ejemplo la palabra sex, puede estar contenida en la pagina que poco tiene que ver con lo que realmente queremos bloquear, es por eso que veamos como podemos implementar esto: #Recommended minimum configuration: acl contenidos_excep url_regex “/usr/local/squid/excepciones” acl contenidos_negados url_regex “/usr/local/squid/denegados” Entonces observando estas ACLs, la primera hace referencia a un archivo donde pondremos las direcciones que queremos que se omitan a las negadas y en la siguiente hace pondremos las palabras a negar, ejemplo: El archivo “/usr/local/squid/excepciones” podría contener denominaciones para un uso educativo como podría ser:

34 Squid Mientras que el archivo “/usr/local/squid/denegados” podría contener las palabras que deseamos filtrar, algo así: sexo xxx pornografia desnudos mp3 Wav Entonces al aplicar las Reglas de Control de Acceso, quedaría algo como lo siguiente: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access deny contenidos_negados !contenidos_excep

35 Squid DENEGAR PROTOCOLOS
Si lo que queremos es restringir algún protocolo, por ejemplo evitar que las maquinas clientes descarguen archivos vía FTP, lo que podemos hacer es lo siguiente: Sintaxis: acl [miprotocolo] proto [Tipo de Protocolo] Ejemplo: #Recommended minimum configuration: acl miprotocolo proto FTP En las Reglas iría: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access deny redlocal miprotocolo De esta forma estaríamos restringiendo el protocolo FTP a toda las maquinas definidas en redlocal.

36 Squid Combinando algunas acl’s y aplicando reglas de control de acceso
#Recommended minimum configuration: acl maquina1 arp 09:00:2b:23:45:67 acl denegados url_regex –i sex xxx mp3 wav acl puertos_permitidos port acl dias_y_horarios time MTWHF 8:00-16:00 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access deny maquina1 !dias_y_horarios http_access deny denegados http_access allow maquina1 puertos_permitidos http_access deny all Bueno entonces repasemos lo aplicado aquí: 1era ACL indica la MAC para “maquina1”. 2da ACL deniega las palabras “sex, xxx, mp3 y wav” en el contenido URL .

37 Squid 3era ACL establece los puertos 80 y 443 (http y https) como permitidos. 4ta ACL delimita los días entre (Lunes y Viernes) y por otro lado el horario entre las (8:00 y 16:00 hs). Luego al aplicar las Reglas de Control de Acceso lo que estamos diciendo es que deniegue el acceso de “maquina1” excepto de Lunes a Viernes entre las 8:00hs y 16:00hs, si esto se cumple evaluara el contenido url que sea distinto a los patrones “sex, xxx, mp3 y wav” y a su vez solo dejara pasar los puertos 80 y 443 (http y https).

38 Bibliografía Fedrico Nan


Descargar ppt "Squid Introduccion Comandos Basicos Ejemplos."

Presentaciones similares


Anuncios Google