Page 1

SERVIDOR PROXY CON SQUID

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


¿QUÉ ES UN PROXY? Un proxy es un programa o dispositivo que realiza una tarea acceso a Internet en lugar de otro ordenador. Un proxy es un punto intermedio entre un ordenador conectado a Internet y el servidor al que se está accediendo. Cuando navegamos a través de un proxy, nosotros en realidad no estamos accediendo directamente al servidor, sino que realizamos una solicitud sobre el proxy y es éste quien se conecta con el servidor que queremos acceder y nos devuelve el resultado de la solicitud.

La siguiente imagen ilustra la tarea principal de un proxy

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


TIPOS DE PROXY Servicio Proxy o Proxy Web Su funcionamiento se basa en el del Proxy HTTP y HTTPs, pero la diferencia fundamental es que la petición se realiza mediante una Aplicación Web embebida en un Servidor HTTP al que se accede mediante una dirección DNS, esto es, una página web que permite estos servicios. Proxy Caché Su método de funcionamiento es similar al de un proxy HTTP o HTTPs. Su función es precargar el contenido web solicitado por el usuario para acelerar la respuesta Web en futuras peticiones de la misma información de la misma máquina u otras. Proxy transparente Es transparente en los términos de que su dirección IP está expuesta, no es transparente en los términos de que no se sabe que lo está utilizando. Combina un servidor proxy con NAT (Network Address Translation) de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del usuario. Este es el tipo de proxy que utilizan los proveedores de servicios de internet (ISP) Proxy inverso Un reverse proxy es un servidor proxy instalado en el domicilio de uno o más servidores web. Todo el tráfico entrante de Internet y con el destino de uno de esos servidores web pasa a través del servidor proxy. Hay varias razones para instalar un "reverse proxy": • Seguridad: el servidor proxy es una capa adicional de defensa y por lo tanto protege los servidores web. • Cifrado / Aceleración SSL: cuando se crea un sitio web seguro, habitualmente el cifrado SSL no lo hace el mismo servidor web, sino que es realizado por el "reverse proxy", el cual está equipado con un hardware de aceleración SSL (Security Sockets Layer). • Distribución de Carga: el "reverse proxy" puede distribuir la carga entre varios servidores web. En ese caso, el "reverse proxy" puede necesitar reescribir las URL de cada página web (traducción de la URL externa a la URL interna correspondiente, según en qué servidor se encuentre la información solicitada). • Caché de contenido estático: Un "reverse proxy" puede descargar los servidores web almacenando contenido estático como imágenes u otro contenido gráfico. P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Proxy NAT (Network Address Translation) / Enmascaramiento Es un mecanismo de intermediario en una red. Modifica la dirección original de fuente o destino de los paquetes IP, sustituyéndola por otras. Proxy abierto Este tipo de proxy es el que acepta peticiones desde cualquier ordenador, esté o no conectado a su red. En esta configuración el proxy ejecutará cualquier petición de cualquier ordenador que pueda conectarse a él, realizándola como si fuera una petición del proxy. Por lo que permite que este tipo de proxy se use como pasarela para el envío masivo de correos de spam. VENTAJAS Y DESVENTAJAS DEL USO DE UN PROXY Ventajas: Control: Solamente el intermediario hace el trabajo real, por lo tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos solamente al proxy. Ahorro: Por lo tanto, solamente uno de los usuarios (el proxy) debe estar equipado para hacer el trabajo real. Velocidad: Si varios clientes piden el mismo recurso, el proxy puede hacer de caché: guardar la respuesta de una petición para darla directamente cuando otro usuario la pidiera. Así de ésta manera no tiene que volver a contactar con la destinación, y acaba siendo más rápido. Filtrado: El proxy puede negarse a responder algunas peticiones si detecta que están prohibidas, gracias a las políticas de seguridad. Modificación: Como intermediario que es, un proxy puede falsificar información, o modificarla siguiendo un algoritmo. Anonimato: Si todos los usuarios se identifican como uno solo, es difícil que el recurso accedido pueda diferenciarlos. Pero eso puede ser malo, por ejemplo cuando hay que hacer la identificación.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Desventajas: Abuso: Al estar dispuesto a recibir peticiones de muchos usuarios y responderlos, es posible que haga algún trabajo que no toca. Por lo tanto, debe controlar quien tiene acceso y quien no, cosa que normalmente es muy difícil. Carga: Un proxy debe hacer el trabajo de muchos usuarios. Intromisión (es un paso más entre el origen y el destino), y algunos usuarios pueden no querer pasar por el proxy. Y menos si hace de caché y guarda copias de los datos. Irregularidad: El hecho de que el proxy represente a más de un usuario da problemas en muchos escenarios, en concreto los cuales suponen una comunicación directa entre un emisor y un receptor (como TCP/IP).

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


PROXY CON SQUID A continuación se describe como se realiza la instalación del proxy squid en un sistema operativo Linux (Ubuntu), así como la configuración de dicho proxy para fines prácticos en una red. 1.-INSTALACIÓN Escribimos en una terminal de comandos lo siguiente:

Si uno ya se encuentra como root, no es necesario escribir sudo, con el resto de la línea bastara para comenzar la instalación. En caso de haber ejecutado el comando anterior y no se realice la instalación, tendremos que actualizar los repositorios de los paquetes de software, con el siguiente comando: sudo apt-get update Una vez que finalice la instalación debemos de tomar en cuenta cuales son los ficheros y directorios más importantes de squid, los cuales se describen a continuación -El directorio /etc/squid es donde se guardan los ficheros de configuración: por ejemplo el fichero squid.conf -La documentación se encuentra en /usr/share/doc/squid-x.x.x/ -En /var/spool/squid se van a encontrar las páginas “cacheadas”, es decir, las traídas desde Internet y que se almacenan para la próxima vez que las solicite alguien y no hayan cambiado. -En /var/log/squid se guardan los accesos de nuestros usuarios a Internet a través del proxy, así como los posibles errores que hayan ocurrido.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


2.-PREPARAR EL SERVIDOR PROXY Configuración de las tarjetas de red El servidor Proxy Squid necesita tener al menos 2 tarjetas de red La primer tarjeta de red (eth0), será la que conecte a la red local de ordenadores y que posteriormente accederán a Internet a través del servidor proxy Squid. Por ejemplo la red: 172.26.0.0/16 red de Clase B. La segunda tarjeta de red (eth1), será la que esté conectada directamente a Internet, por ejemplo a través de un router ADSL, por ejemplo la red 192.168.1.0/24 red de Clase C, supongamos que el acceso a Internet nos lo proporciona la dirección IP 192.168.1.1, que es la IP del router. De esta forma tenemos aislada la red local de la red que permite el acceso a Internet, de forma que si un usuario de la red local quiere acceder a Internet lo tiene que hacer a través del servidor proxy Squid y de esta forma podremos filtrar el contenido al que puede acceder, e incluso impedirle el acceso según nos convenga. Activar el enrutamiento Con esto se consigue comunicar las dos tarjetas de red eth0 y eth1 entre sí, ya que si no sería imposible conectar la red local de ordenadores y la red que tiene acceso a Internet. -Activar enrutamiento de forma temporal

-También se puede hacer permanentemente, descomentando la siguiente línea en el fichero de configuración /etc/sysctl.conf:

Configurar el Cortafuegos Hay que configurar correctamente el cortafuegos del servidor Squid, para que permita enviar paquetes y recibir desde la red local, enmascarar la red local (NAT) para poder usar la única dirección IP pública que normalmente se tiene para acceder a Internet.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Configuración básica de todas las reglas de filtrado Supondremos que el interfaz de red conectado a Internet es eth1 y el de la red local eth0 con dirección: 172.26.0.0/16. Un posible script de configuración puede ser (puedes incluir el script en /etc/rc.local para Ubuntu):

Configuración avanzada para el cortafuegos La configuración anterior de cortafuegos permite que los clientes usen el servicio del proxy Squid, pero y ¿si desea algún cliente saltarse el proxy?, con las reglas del cortafuegos en el ejemplo anterior conseguiría saltárselo, para evitar esto se deben añadir algunas reglas más que refuercen la seguridad de nuestro equipo en la red. Para este ejemplo se tendrá la siguiente configuración en un ordenador con dos tarjetas de red: -eth0: interfaz que se conecta a Internet a través de la dir. IP: 192.168.1.131/24 -eth1: interfaz de la red local de ordenadores que usan el proxy: 10.42.43.1/8 El fichero /etc/rc.local tendrá las siguientes líneas:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Esta configuración permite detener a Ultrasurf, una aplicación que salta la configuración del proxy y cortafuegos de la red, mediante el uso de túneles SSL y proxys anónimos. Artículo principal: http://linuxerotijolero.blogspot.com/2011/11/bloquear-ultrasurf.html

3.-CONFIGURACIÓN El archivo de configuración que utiliza Squid es /etc/squid/squid.conf, pudiendo encontrarse en otras localizaciones dependiendo de la instalación. Primero hay que realizar una copia de seguridad del fichero squid.conf, mediante el comando:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


¿Qué puerto utilizar para Squid? Squid por defecto utilizará el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto o bien que lo haga en varios puertos a la vez. En el caso de un Proxy Transparente, regularmente se utilizará el puerto 80 y se valdrá del re direccionamiento de peticiones de modo tal que no habrá necesidad alguna de modificar la configuración de los navegadores Web para utilizar el servidor Proxy. Bastará con utilizar como puerta de enlace al servidor. Es importante recordar que los servidores Web, como Apache, también utilizan dicho puerto, por lo que será necesario reconfigurar el servidor HTTP para utiliza otro puerto disponible, o bien desinstalar o deshabilitar el servidor HTTP. Hoy en día ya no es del todo práctico el utilizar un Proxy Transparente, a menos que se trate de un servicio de Café Internet u oficina pequeña, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar más conveniente configurar un servidor Proxy con restricciones por contraseña, lo cual no puede hacerse con un Proxy Transparente, debido a que se requiere un diálogo de nombre de usuario y contraseña. Regularmente algunos programas utilizados comúnmente por los usuarios suelen traer por defecto el puerto 8080 -servicio de cacheo WWW- al configurar que servidor proxy utilizar. Si queremos aprovechar esto en nuestro favor y ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto también. Siendo así localice la sección de definición de http_port, y especifique:

Si se desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.254, puede hacerse lo siguiente:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Parámetro cache_mem Define la cantidad de memoria RAM que deseamos asignar a las funciones de Squid, por defecto se establecen 8 MB. Puede especificarse una cantidad mayor si así se considera necesario, dependiendo esto de los hábitos de los usuarios o necesidades establecidas por el administrador. Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parámetro:

Parámetro cache_dir: Tamaño de la caché Este parámetro establece que tamaño va a tener la caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuánto desea almacenar de Internet en el disco duro? Por defecto Squid utilizará un cache de 100 Mb, de modo tal que encontrará la siguiente línea:

Se puede incrementar el tamaño de la memoria caché hasta donde lo desee el administrador. Mientras más grande sea la cache, más objetos de almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un cache de 700 Mb:

Los números 16 y 256 significan que el directorio del caché contendrá 16 subdirectorios con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo. El sistema de almacenamiento usado se especifica con el parámetro ufs. Es muy importante considerar que si se especifica un determinado tamaño de caché y este excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de cache especificado. Controles de acceso. Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas maquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid, es decir, el acceso a Internet si está disponible.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Listas de Control de Acceso (ACL) Las Listas de Control de Acceso empiezan a definirse a partir de estas líneas, que nunca deberían ser modificadas, en concreto en la versión de squid 2.6 te puedes encontrar con:

Cada Lista de Control de Acceso (ACL) puede definir a una red, dirección IP, listas de direcciones IP, un dominio (FQDN), listas de dominios, e incluso palabras o listas de palabras. Las ACL definidas por el administrador deben ser insertadas a partir de la siguiente línea:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Regularmente una lista de control de acceso se establece siguiendo la siguiente sintaxis:

Se puede establecer una ACL que defina la red local a través de la IP que corresponde a la red y la máscara de red. Por ejemplo, si se tiene la red 192.168.1.0 con máscara de red 255.255.255.0, podemos utilizar lo siguiente:

También se puede definir así en notación CIDR:

Otro ejemplo de Lista de Control de Acceso (ACL):

También puede definirse una Lista de Control de Acceso invocando un fichero localizado en cualquier parte del disco duro, y en el cual se en cuenta una lista de direcciones IP. Ejemplo:

El fichero /etc/squid/permitidos contendría algo como siguiente:

Se puede definir una ACL que esté formada por palabras incluidas en la URL o dirección de la página web, por ejemplo:

Igual que en el caso anterior, se pueden definir estas ACL de palabras incluidas en la URL, mediante un fichero que contenga estas palabras, sobre todo si la lista de palabras es extensa:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


En este ejemplo el fichero es /etc/squid/denegados que contendrá las siguientes líneas:

También se pueden declarar ACL de direcciones de destino o dominios, por ejemplo:

Y por supuesto se puede realizar esto mediante un fichero que contenga un dominio en cada línea, si la lista de dominios es muy grande.

Reglas de Control de Acceso Las Reglas de Control de Acceso se aplican sobre las ACL's creadas anteriormente y permite o deniega el acceso a internet a cada una de estas Listas de Control de Acceso (ACL). Las Reglas de Control de Acceso definidas por el administrador, se deben insertar, a partir de donde se localiza la siguiente leyenda (al igual que sucede con las ACL):

La sintaxis básica es la siguiente:

En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


También pueden definirse reglas valiéndose de la expresión !, la cual significa excepción. En el siguiente ejemplo hay dos listas de control de acceso, una denominada lista1 y otra denominada lista2 en donde se asigna la expresión ! a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que establezca lista2:

Este tipo de reglas son útiles cuando se tiene un gran 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. Una vez comprendido el funcionamiento de la Listas y las Reglas de Control de Acceso, procederemos a determinar cuáles utilizar para nuestra configuración. Permitir el acceso a una red local Considerando como ejemplo que se dispone de una red local 192.168.1.0/24, habrá que escribir las siguientes líneas en el lugar adecuado, detrás de INSERT YOUR OWN RULE(S).....

La regla http_access allow redlocal permite el acceso a Internet a la Lista de Control de Acceso denominada redlocal, la cual está conformada por la red 192.168.1.0/24. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a internet a través de Squid en caso de que lo haya Y por supuesto la red localhost del propio ordenador donde se instaló Squid. Permitir el acceso a listas de direcciones IP Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/lista, dentro del cual se incluirán solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Ejemplo:

Habrá que escribir las siguientes líneas en el lugar adecuado, detrás de INSERT YOUR OWN RULE(S).

La regla http_access allow listaIP 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 /etc/squid/lista. Esto significa que cualquier máquina no incluida en /etc/squid/lista no tendrá acceso a Internet, salvo la red localhost. Impedir el acceso a dominios Existe un caso frecuente, consistente en prohibir el acceso a una lista de sitios consideramos como "inapropiados". Squid no está optimizado para gestionar una larga lista de sitios, pero puede gestionar un número concreto de sitios sin problemas.

Este ejemplo indica que las URLs playboy.com o sex.com serán denegadas, ya que así lo especifica la primera línea de la directiva "http_access". Si se piden otras URLs, lógicamente la primera línea no es aplicable, y Squid pasa a considerar la segunda y tercera. Por tanto, si el cliente se conecta dentro del rango permitido se cursará la petición. De lo contrario, la petición será rechazada.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Idioma de los mensajes mostrados por Squid al usuario. Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las páginas de error traducidas al español, es necesario cambiar un enlace simbólico localizado en /etc/squid/errors Para que apunte hacia /usr/share/squid/errors/Spanish en lugar de hacerlo hacia /usr/share/squid/errors/English. Elimine primero el enlace simbólico actual:

Coloque un nuevo enlace simbólico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al español.

Importante: Este enlace simbólico debe verificarse, y regenerarse de ser necesario, cada vez que se actualice Squid. 4.-PROXY TRANSPARENTE Si deseamos disponer de un servicio de proxy en el que los clientes no tengan que modificar nada en la configuración del navegador necesitamos montar un proxy transparente. Para disponer de esta funcionalidad descomentaremos en el fichero de configuración de Squid (/etc/squid/squid.conf) las siguientes líneas: Versiones de Squid 2.5 y anteriores

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


También sería correcta esta configuración, si el servidor web de la red local es 192.168.1.254, considerando que se hará uso del caché de un servidor HTTP (por ejemplo Apache) como auxiliar:

Opciones para Proxy Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.

Versiones de Squid 2.6 y posteriores Si el servidor http de la red local es 192.168.1.254 y el puerto por el que escucha es el 8080, para no interferir con squid que escucha por el puerto 80.

En caso de no haber un servidor HTTP en la red local, se puede activar directamente el proxy transparente de la siguiente forma:

Re-direccionamiento de peticiones a través de iptables y Firestarter. Si se tiene poca experiencia con guiones de cortafuegos a través de iptables, sugerimos utilizar Firestarter. Éste permite configurar fácilmente tanto el enmascaramiento de IP como el cortafuegos. Firestarter: http://www.fs-security.com/ En un momento dado se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia servidores HTTP en el exterior sin que ésta pase antes por P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Squid. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT. El re-direccionamiento lo hacemos a través de iptables. Considerando para este ejemplo que la red local se accede a través de una interfaz eth0, el siguiente esquema ejemplifica un re-direccionamiento:

Lo anterior, que requiere un guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor Squid (también se puede hacer para otro puerto como el 3128 que es más común en Squid). Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post. Ejemplo Configuración de todas las reglas de filtrado de paquetes (supondremos que el interfaz de red conectado a Internet es eth1 y el de la red local eth0 con dirección: 172.26.0.0/16). Un posible script de configuración puede ser (muy parecido al que se propuso anteriormente, salvo por que este incluye el re direccionamiento, puedes incluir el script en /etc/rc.local para Ubuntu):

En las máquinas clientes solo será necesario poner la puerta de enlace y las IPs de los servidores de nombres (si se utiliza un servicio de DHCP se puede hacer automáticamente). Pero ya no hay que optar por configurar nada en los navegadores.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Importante Debemos tener en cuenta que para poder activar el proxy transparente con Squid, necesitamos una máquina con al menos dos tarjetas de red reales, no vale en este caso configuraciones de una tarjeta de red real denominada eth0 y otra virtual eth0:0 ya que las reglas de filtrado no están permitidas sobre interfaces de red virtual. Esto se puede resolver con una máquina virtual donde podemos simular otra tarjeta de red, es decir, tener instalado proxy squid en una máquina virtual donde podemos “engañar” al sistema operativo (en este caso Linux) para que crea que tenga dos tarjetas de red (o todas las que necesites). 5.- INICIO Y PARADA DE SQUID. DEPURACIÓN DE ERRORES. Arrancar: sudo /etc/init.d/squid start Parar: sudo /etc/init.d/squid stop Reiniciar: sudo /etc/init.d/squid restart También se puede usar el comando en Ubuntu 10.04: # service squid {start | stop | restart} El formato general de Squid es: # /etc/init.d/squid {force-reload reload restart start stop} Por defecto, el servidor Squid en Ubuntu se iniciará automáticamente al arrancar el ordenador. Si no te interesa esto, puedes deshabilitar esta opción mediante: # update-rc.d -f squid remove Y para que de nuevo vuelva a iniciarse Squid al arrancar el ordenador: # update-rc.d squid

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Depuración de errores Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis o bien se están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso .Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en /etc/squid/squid.conf.

También puede iniciar Squid directamente desde la línea de mandato, especificando el modo de depuración:

6.- CONFIGURACIÓN DE LOS CLIENTES Para poder acceder a Internet a través de un navegador web desde el cliente, habrá que configurar dicho navegador, indicando la dirección IP del servidor proxy Squid y el puerto por el que escucha. Por ejemplo, si nuestro servidor proxy Squid tiene la dirección IP: 192.168.55.200 y escucha por el puerto 3128. Hay que configurar el navegador Mozilla accediendo al menú: Editar→Preferencias→Avanzadas→Proxy→Configuración Manual del Proxy, pulsamos Ver y en los distintos protocolos ponemos el host : 192.168.55.200 por el puerto 3128 que es por el que escucha el Squid peticiones de sus clientes. Podemos ponerlo en todos los protocolos menos en el socks.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


En el caso de Google Chrome damos clic, en configuración, después en opciones avanzadas y seleccionamos el apartado de red donde nos saldrá una imagen como la siguiente:

Después de eso damos clic en configuración LAN, donde podremos poner la dirección IP de nuestro servidor Squid así como el puerto correspondiente al proxy.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


7.-WEBMIN PARA MODO GRAFICO DE SQUID Webmin es una interfaz web para la administración de sistemas Linux (Unix). Usando cualquier navegador podemos configurar las cuentas de usuario, Apache, DNS, apagado del equipo, compartir archivos, etc. Además, elimina la necesidad de editar manualmente los archivos de configuración (como /etc/passwd) y nos permite manejar el sistema desde el propio equipo o remotamente. 1.-Instalación de Webmin. Para la instalación de webmin habremos de proceder de la siguiente manera, podremos bien dirigirnos directamente a la página de Webmin (www.webmin.com) y seleccionar downloads .

En esa página procederemos a seleccionar la descarga que sea compatible con nuestra distro de Linux, en este caso para debían, Ubuntu y otros derivados Linux, tal y como se observa en la captura, haremos clic para descargar.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Una vez descargada y en el sistema Ubuntu si hacemos doble clic sobre el archivo, aparecerá la opción de “abrir con” (tal y como se aprecia en la captura) el instalador de paquetes Gdebi que es el predeterminado para instalar descargas con la extensión “.deb” como es el caso de nuestra descarga “webmin_1620_all.deb”, pulsamos aceptar.

Cargara el instalador de paquetes GDebi y haremos clic en Instalar paquete arriba a la derecha.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Lo que dará comienzo a la instalación propiamente dicha, si hacemos clic en terminal veremos el progreso de la instalación.

Después nos notificara de la finalización exitosa de la instalación de webmin.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Una vez instalado podemos acceder a la interfaz web de Webmin usando un navegador y escribiendo la dirección IP del equipo donde está instalado seguida del puerto donde está escuchando, por defecto, el 10.000. Eso sí, debemos estar atentos porque en vez de usar el protocolo HTTP, usaremos el HTTPS, en nuestro caso la IP será https://192.168.0.199:10000 o lo que es lo mismo https://servidorweb:10000. Nos encontraremos con la siguiente advertencia si accedemos desde Firefox y añadiremos una excepción, por lo que hacemos clic sobre Obtener certificado y después sobre Confirmar excepción de seguridad.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Iniciaremos sesión en Webmin y nuestro nombre de usuario será el usuario del sistema con privilegios de administrador.

Y así accedemos a la interfaz de Webmin.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


2.-INSTALACIÓN DE SQUID DESDE WEBMIN La instalación del servidor proxy Squid será llevado a cabo desde Un-used Modules de la herramienta de administración web Webmin donde seleccionaremos Squid Proxy Server en la lista de módulos no usados, y haremos clic en él, con lo que se nos mostrara la pantalla de la captura, en la cual habremos de hacer clic en “click here” (marcado en cuadro rojo) para que se realice su instalación.

Una vez realizado el clic se procede a la instalación del servidor de manera no asistida por el usuario, el sistema entiende que le has dado competencias para realizar la instalación sin necesidad de confirmación u otra intervención del usuario (nótese la opción en los parámetros de instalación “-y --force -yes -f” a continuación de apt-get).

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


El sistema nos informa no solo de la correcta instalación del servidor en sí, sino también de los paquetes necesarios para el correcto funcionamiento del servidor proxy tal y como se muestra en las siguientes capturas, instalación correcta de squid-langpack, squidcommon, el propio squid, tal y como se muestra a continuación.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Por último y una vez instalado el servidor poder acceder a la interfaz gráfica de administración y configuración que provee Webmin.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


3.-CONFIGURACIÓN DE SQUID Y PRUEBAS REALIZADAS. Para la configuración de Squid proxy server se ha partido de cero sin que existiera ninguna “acl” ni restricción proxy en el servidor, habiendo suprimido todas aquellas que aparecían por defecto en la configuración del mismo. Una vez realizado esto, haremos clic en Access Control (marcado en cuadro rojo en la captura) para proceder a configurar nuestras listas de control de accesos.

Una vez en la pantalla de Control de Acceso, para crear una nueva lista de control de acceso habremos de seleccionar el tipo de lista en el desplegable de la derecha (marcado rojo), y una vez seleccionado el tipo pulsar el botón crear nuevo de la izquierda. (Marcado azul)

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Para definir la siguiente lista de control de acceso seleccionaremos el tipo, Dirección de Cliente (client address) y pulsaremos crear nuevo, una vez nos presenta la imagen siguiente, en esta ocasión para el nombre de la lista (acl name) introduciremos “all” es una acl que verifica todos los equipos de la red, es equivalente a “acl all src 0.0.0.0/0.0.0.0” Posteriormente se utilizara para establecer una política preestablecida para denegarlo o aceptarlo todo, por lo tanto introduciremos 0.0.0.0 en el espacio (From ip), el espacio hasta ip (to ip) lo dejaremos vacio, y por ultimo introduciremos 0.0.0.0 en el espacio de mascara de red (netmask), y acto seguido pulsaremos salvar, y volveremos a acl haciendo clic en return to acls.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


La siguiente lista de control de acceso seleccionaremos el tipo, Dirección de Cliente (client address) y pulsaremos crear nuevo, una vez nos presenta la imagen siguiente, en esta ocasión para el nombre de la lista (acl name) introduciremos “localhost” y en el espacio desde ip (from ip) introduciremos la ip loopback del sistema 127.0.0.1 esta lista tiene por objeto registrar nuestra maquina como origen de conexiones y acto seguido pulsaremos salvar, y volveremos a acl haciendo clic en return to acls.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Para la siguiente lista de control de acceso seleccionaremos el tipo “url_regex” el cual permite especificar expresiones regulares para comprobar una url completa, desde el http:// inicial, y pulsaremos crear nuevo, en el nombre de esta lista introduciremos las iniciales de nuestro nombre y apellidos, marcaremos la opción de ignore case para que ignore las mayúsculas, no introduciremos nada en el cuadro de expresiones, y en la última fila “store acl values in file” almacenar valores en archivo marcaremos “separate file” archivo separado y haremos clic en el cuadro con los tres puntos para seleccionar el archivo de configuración y su ubicación y acto seguido pulsaremos salvar, y volveremos a acl haciendo clic en return to acls.

Previamente a la selección del archivo que contendrá las expresiones a comprobar, habrá que crearlo e introducir en él lo que queramos comprobar, en este caso queremos que se bloquee el acceso a las páginas que contengan pornografía, para conseguirlo crearemos mediante la terminal bash un archivo llamado “porno.acl” en la carpeta “/etc/squid/”, para ello desde la terminal realizaremos “cd /etc/squid” y una vez en la carpeta deseada “nano porno.acl” con lo que nos creara dicho archivo.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Una vez en dicho archivo el cual estamos editando añadiremos tantas expresiones como deseemos en este caso se han incluido 10 URLs de páginas de contenido pornográfico, y aparte de estas 18 expresiones que pudieran conducir a una búsqueda de contenido pornográfico por medio de un buscador cualquiera, una vez configurado a nuestro gusto el archivo pulsaremos control+o para guardar el contenido escrito en el archivo seleccionado y control+x para salir de nano.

Una vez realizado lo anterior el aspecto que tendrá la pantalla de listas de control de acceso será el de la captura siguiente, una vez aquí seleccionaremos la pestaña “Proxy restrictions” (marcada en rojo) y haremos clic en ella.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Una vez en Editar restricciones de proxy, crearemos dos reglas de control de acceso, la primera de ellas será “allow” autorizar y seleccionaremos la acl “all” con ello habremos conseguido una regla en la que todos tengan acceso, sin que se realice ninguna comprobación de expresión.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


A continuación crearemos la regla que comprobara las expresiones que hemos introducido en el archivo y si coincide alguna de ellas no permitirá la conexión, para ello seleccionaremos “deny” denegar y en la lista de coincidencias acl (match acl) seleccionaremos nuestra lista de control de acceso “JCTS”, y en la lista de no coincide acl (don´t match acl) localhost que es el equipo origen de las conexiones.

Solo queda ordenar las reglas de acceso para un correcto funcionamiento de nuestro servidor proxy squid, para ello por medio de las flechas pondremos en primer lugar la regla “deny JCTS!localhost” por encima de “allow all”, ya que si no se realizase esto no se comprobaría expresión alguna, ya que si no se coloca la regla más restrictiva primero, no pasa a analizar la segunda regla.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Con ello tendríamos configurado el servidor proxy squid solo deberíamos pulsar “apply changes” , a continuación “stop squid” y una vez parado el servidor ponerlo en marcha de nuevo haciendo clic en “start squid”. Una vez configurado y en marcha nuestro servidor proxy, solo nos queda configurar nuestro navegador para que haga uso de él, para ello en Firefox, en la opción de la barra de menús Editar haremos clic en preferencias, en la ventana que cargara, haremos clic en avanzado, y una vez allí, seleccionaremos la pestaña red en la que haremos clic en configuración.

En la ventana de configuración de conexión, seleccionaremos la configuración manual del proxy e introduciremos los datos del mismo, nuestra dirección ip 192.168.0.199 y el puerto de escucha es el definido por defecto para squid 3128, hacer notar que se configurara el no usar proxy para localhost ni para 127.0.0.1 de manera automática. Una vez configurado pulsaremos aceptar.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


PRUEBAS En Firefox una vez realizado lo anterior, introduciremos la url de una página pornográfica, la cual hemos hecho mención específica dentro del archivo “porno.acl” en concreto es.pornhub.com, comprobamos que el proxy bloquea el acceso a dicha página.

Comprobaremos ahora si la búsqueda en google de una de las expresiones nombradas en el archivo nos devuelve algún tipo de dirección, en este caso haremos la búsqueda con la expresión “sex”, y comprobamos como ha sido bloqueada por squid.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Sin embargo cualquier otra búsqueda no coincidente con las expresiones del archivo “porno.acl” devuelve resultados y permiten el acceso normalmente, como se aprecia en la imagen.

Por ultimo una captura de ventana del sistema con una búsqueda bloqueada por el servidor proxy, una búsqueda no bloqueada, la página de inicio de Firefox, y la información de la conexión del sistema.

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.


Referencias -Paginas consultadas en Internet http://www.linuxparatodos.net/ http://www.josedomingo.org/web/file.php/41/2/entrega2.pdf http://es.wikipedia.org/wiki/Squid http://www.idesoft.es/www2/squid/control.php

P.ING.COMPUTACIÓN JESÚS ELISEO JIMÉNEZ ROBLES

Creative Commons.

Servidor proxy  
Servidor proxy  
Advertisement