Squid3 - Servidor Proxy

20,411 views

Published on

Manual básico de Squid3

Squid3 - Servidor Proxy

  1. 1. Ramón Jesús Suárez Pérez 2ºASIRSQUID 3 – Servidor Proxy en Ubuntu 12.04Introducción y requisitos del sistemaSquid es un popular programa de software libre bajo licencia GPL diseñado paraejecutarse en entornos tipo Unix, que implementa un servidor proxy y un dominio paracache de páginas web.Entre las principales características de squid, destacan: - Permitir conectarse a internet a una serie de equipos a través de una sola IP. - Filtrado de contenidos. - Capacidad de almacenar una caché de páginas webs para que el acceso a ellas sea mucho más rápido desde los equipos de la red.Aunque está orientado principalmente a HTTP y FTP es compatible con otrosprotocolos como Internet Gopher. Implementa varias modalidades de cifrado comoTLS, SSL, y HTTPS.
  2. 2. Ramón Jesús Suárez Pérez 2ºASIRInstalación de Squid3 en Ubuntu 12.04Para instalar Squid3 en Ubuntu 12.04, bastará con ejecutar el siguiente comando en elterminal: “sudo aptitude install squid3”.Este comando descargará e instalará el paquete squid3 de forma automáticadirectamente de los repositorios de Ubuntu.Es conveniente tener configurada en nuestro equipo una dirección IP estática, noobstante para la prueba no será necesario.Utilizaremos el comando “ifconfig”, para obtener la dirección IP de nuestro servidorque será el encargado de actuar como proxy.
  3. 3. Ramón Jesús Suárez Pérez 2ºASIRSi comprobamos el estado de los puertos abiertos en nuestro servidor mediante elcomando “nmap” ejecutado desde otra máquina, podremos comprobar que haquedado habilitado el puerto por defecto de squid (3128), lo cual nos indica quenuestro proxy está activo en el sistema.Configuración de Squid3 en FirefoxPara utilizar un servidor proxy en un navegador, en nuestro caso firefox, bastará conacceder al menú de configuración del navegador, y una vez dentro buscaremos en elapartado de configuración oportuno (en nuestro caso “Avanzado” las propiedades dela “Configuración de la conexión”.Una vez allí, en el apartado de configuración de proxy, debemos especificar ladirección IP de nuestro servidor y el puerto de nuestro proxy (por defecto 3128).
  4. 4. Ramón Jesús Suárez Pérez 2ºASIRConfiguración básica y Listas de control de acceso (ACL)Si comprobamos el funcionamiento de nuestro servidor proxy desde un navegador,podremos darnos cuenta de que por defecto SQUID bloquea el acceso a todas lasdirecciones HTTP.Para solventar esto y poder disfrutar de un acceso total al contenido web desde losequipos que utilicen nuestro proxy, debemos dirigirnos al fichero:“/etc/squid3/squid.conf” y una vez allí modificar la línea “http_access deny all” por“http_access allow all”.Es recomendable que antes de realizar modificaciones en el fichero squid.confrealicemos copias de seguridad para evitar fallos en la ejecución del programa.
  5. 5. Ramón Jesús Suárez Pérez 2ºASIRCada vez que realicemos cambios en el archivo de configuración del programa, seránecesario reiniciar el servicio de squid para que se apliquen al sistema.Para reiniciar el servicio bastará con ejecutar el comando: “sudo service squid3 restart”Una vez hecho esto, podremos comprobar como volvemos a navegar con total libertaddesde los equipos clientes que utilicen nuestro proxy.
  6. 6. Ramón Jesús Suárez Pérez 2ºASIRDefinición y denegación de ACL (Listas de control de acceso)Las listas de control de acceso son un conjunto de reglas que permiten controlar eltráfico de la red a través de la aprobación o la denegación de estas.La definición, aprobación y denegación de ACLs se realiza desde el fichero deconfiguración de squid (/etc/sqiud3/squid.conf).Las acls deben de especificarse en el fichero de manera ordenada ya que las aclssuperiores tendrán prioridad sobre las inferiores.Bloqueando el acceso a un determinado dominio.Para definir una acl para un determinado sitio web utilizaremos la siguiente sintaxis:“acl nombre_acl dstdomain dominio_o_ip_del_sitio_web”Para denegar el acceso a una detemrinado sitio web, en este caso únicamentetendremos que haber definido previamente la acl y después denegarla mediante:“http_access deny nombre_acl”Como se vió anteriormente, tras reiniciar el servicio de squid, podremos comprobarque ninguna de las webs especificadas es accesible por los equipos clientes.
  7. 7. Ramón Jesús Suárez Pérez 2ºASIRBloqueando el acceso a una lista negra de dominiosPara facilitar el bloqueo a varios sitios webs de una sola vez, podemos recurrir a lasllamadas “listas negras”.Una lista negra no es otra cosa que una acl que carga los dominios o palabras de unfichero y permite así garantizar o denegar el acceso a dichos sitios web.Para definir una acl de este tipo usaremos la siguiente estructura:“acl nombre_acl dstdomain “/direccion_del_fichero_lista_negra”
  8. 8. Ramón Jesús Suárez Pérez 2ºASIRAquí podemos comprobar el funcionamiento de la lista negra:Bloqueando el acceso a una lista negra de palabrasDe la misma forma que definimos listas negras de dominios, es posible bloquear elacceso a direcciones que contengan determinadas palabras:“acl nombre_acl url_regex “/direccion_del_fichero_lista_negra”
  9. 9. Ramón Jesús Suárez Pérez 2ºASIRSi comprobamos el funcionamiento de nuestra lista negra de palabras podemosobservar como nos bloquea directamente todas las urls que contengan las palabrasindicadas en el fichero.No nos deja incluso buscarlas desde el navegador.Excepciones de reglas (listas blancas)Las listas blancas se definen de la misma forma que cualquier otra acl...Son utilizadas para especificar excepciones en las reglas del proxy.Podemos habilitar el acceso a una lista blanca mediante la siguiente sintaxis (habiendodefinido previamente la acl correspondiente)“http_access allow nombre_acl”
  10. 10. Ramón Jesús Suárez Pérez 2ºASIRCambiando el nombre a nuestro proxyEs posible cambiar el nombre que nuestro proxy muestra a la hora de bloquear elacceso a cierto contenido.Para cambiar el nombre a nuestro proxy debemos buscar la linea “visible_hostname”dentro del fichero “/etc/squid3/squid.conf”. En dicha linea podremos especificar elnombre de nuestro proxy.
  11. 11. Ramón Jesús Suárez Pérez 2ºASIRConfiguración en WebminPara poder acceder a configurar squid3 desde Webmin, primero hemos de instalar elmódulo adecuado.Para ello, nos dirigiremos a:“Webmin  Configuración de Webmin  Módulos de Webmin”Una vez dentro del menú de instalación de módulos de webmin, procederemos ainstalar el módulo estandar “squid”
  12. 12. Ramón Jesús Suárez Pérez 2ºASIRHecho esto, podremos observar como squid3 dispondrá de un menú de configuraciónen webmin bajo el nombre “Squid – Servidor Proxy” dentro de la categoría“Servidores”.Tras acceder a dicho menú de administración, haremos clic en la utilidad“Control de Acceso”.Una vez dentro del menú de control de acceso podemos observar varias pestañas.En la pestaña de “listas de control de Acceso” podemos observar las ACLs definidas ennuestro sistema. Para definir una nueva ACL mediante Webmin, nos dirigiremos a laparte inferior de la página, donde debemos especificar el tipo de acl y una vez hechoesto pulsar en “Crear nueva ACL”.
  13. 13. Ramón Jesús Suárez Pérez 2ºASIRLa acción anterior lanzará un nuevo formulario html en el que podremos definir losdiferentes parámetros de la ACL. En este caso definición de dominios.Hecho esto, únicamente tendremos que hacer clic en “Salvar” para almacenar la ACL.Para aprobar o denegar una determinada ACL, nos dirigiremos a la pestaña”Restricciones Proxy” y haremos clic en el enlace “Añadir restricción proxy”.
  14. 14. Ramón Jesús Suárez Pérez 2ºASIRA continuación elegiremos la ACL sobre la que queremos trabajar del listado (esnecesario haberla especificado antes mediante el paso anterior) y especificaremos laacción a realizar (Permitir o Denegar).Recordemos que la posición de las restricciones llevadas a cabo en nuestro proxy juegaun papel importante en el funcionamiento de este…Podemos hacer uso de las flechas para cambiar el orden de las acls en el fichero deconfiguración. Las acls deben de especificarse en el fichero de manera ordenada ya que las acls superiores tendrán prioridad sobre las inferiores.Recordemos que después de llevar a cabo algún cambio en este servicio será necesario“Aplicar cambios” y reiniciar Squid3.
  15. 15. Ramón Jesús Suárez Pérez 2ºASIRComprobación de acl definida desde webmin:
  16. 16. Ramón Jesús Suárez Pérez 2ºASIRProxy transparentePara montar nuestro servidor proxy de forma transparente al usuario, será necesariodisponer de un segundo adaptador de red.En nuestro caso, al estar funcionando con una máquina virtual, podemos agregarlofácilmente desde el panel de configuración de este.Una vez agregado, lo configuraremos de forma manual para asignarle una dirección IPestática en otra subred.El archivo de configuración para llevar a cabo esta operación lo encontraremos en:“/etc/networking/interfaces”
  17. 17. Ramón Jesús Suárez Pérez 2ºASIRTras reiniciar el servicio de red mediante el comando:“sudo /etc/init.d/networking restart”Podremos comprobar mediante la utilidad “ifconfig” que la configuración de red se haaplicado de forma correcta.Una vez configurado nuestro segundo adaptador de forma estática, accederemos alfichero de configuración de squid3 (/etc/squid3/squid.conf) para activar el modotransparente añadiendo a la línea “http_port 3128” la cláusula “transparent”.
  18. 18. Ramón Jesús Suárez Pérez 2ºASIRHecho esto, tras reiniciar el servicio nuestro proxy estará activo de manera invisible(transparente) para el usuario, de manera que el usuario no tendrá que tener activo elproxy en su navegador.Los equipos clientes deberán de utilizar como puerta de enlace la dirección IP denuestro segundo adaptador, obligando así a redirigir el tráfico hacia nuestro proxy.Ahora únicamente faltará realizar unos últimos ajustes para redirigir el tráfico entrantede nuestra subred (segundo adaptador), hacia nuestro primer adaptador con conexióna internet a través del puerto 3128 (puerto por defecto de squid3) y viceversa, es decirmontar el puente de conexión para que los clientes de nuestra subred puedan accedera internet usando obligatoriamente nuestro proxy.Esta acción la llevaremos a cabo mediante los siguientes comandos:
  19. 19. Ramón Jesús Suárez Pérez 2ºASIRPodemos valernos del siguiente script si tenemos dificultades a la hora de redirigirmanualmente las conexiones:#!/bin/sh# squid server IPSQUID_SERVER="192.168.1.1"# Interface connected to InternetINTERNET="eth0"# Interface connected to LANLAN_IN="eth1"# Squid portSQUID_PORT="3128"# DO NOT MODIFY BELOW# Clean old firewalliptables -Fiptables -Xiptables -t nat -Fiptables -t nat -Xiptables -t mangle -Fiptables -t mangle -X# Load IPTABLES modules for NAT and IP conntrack supportmodprobe ip_conntrackmodprobe ip_conntrack_ftp# For win xp ftp client#modprobe ip_nat_ftpecho 1 > /proc/sys/net/ipv4/ip_forward# Setting default filter policyiptables -P INPUT DROPiptables -P OUTPUT ACCEPT# Unlimited access to loop backiptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT# Allow UDP, DNS and Passive FTPiptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT# set this system as a router for Rest of LANiptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADEiptables --append FORWARD --in-interface $LAN_IN -j ACCEPT# unlimited access to LANiptables -A INPUT -i $LAN_IN -j ACCEPTiptables -A OUTPUT -o $LAN_IN -j ACCEPT# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) akatransparent proxyiptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to$SQUID_SERVER:$SQUID_PORT# if it is same systemiptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port$SQUID_PORT# DROP everything and Log itiptables -A INPUT -j LOGiptables -A INPUT -j DROP
  20. 20. Ramón Jesús Suárez Pérez 2ºASIRSi hemos llevado a cabo todas las configuraciones de forma correcta, nuestro proxyinvisible deberá de estar totalmente activo. Ejemplo de acceso a una web no autorizada (en nuestro caso Facebook)
  21. 21. Ramón Jesús Suárez Pérez 2ºASIRInteresante (Proxy vs Proxy)Para evitar las acls de dominio de un determinado proxy, podemos hacer uso otroservidor proxy que no esté denegado en ellas.Un ejemplo de proxy de los más utilizados para eludir estos controles es:http://anonymouse.org/No obstante si el proxy dispone de un filtrado de palabras (lista negra) este método nofuncionará.

×