Instalar y configurar un servidor proxy con Squid

squid

En el contexto de las redes informáticas, el término proxy hace referencia a un programa o dispositivo que realiza una acción en representación de otro. Su finalidad más habitual es la de servidor proxy, que sirve para permitir el acceso a Internet a todos los equipos de una organización cuando sólo se puede disponer de un único equipo conectado, esto es, una única dirección IP.

En este caso vamos a utilizar squid, este 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.

Esta sería la conexión básica de un servidor proxy:

proxy

Para comenzar, la instalación es sencilla en Ubuntu / Debian :

sudo aptitude install squid

Configuración básica de Squid

El archivo de configuración se encuentra en /etc/squid/ y se llama squid.conf, si lo observan es un archivo bastante grande, ya que squid como lo comentaba, es un servidor proxy bastante completo. Una configuración básica debe incluir, al menos, los parámetros que se indican a continuación:

  • http-port: Establece el puerto de escucha para squid (por defecto puerto 3128).
  • visible_hostname: nombre del equipo.
  • acl: a cada ACL o lista de control de acceso se le hace corresponder una regla de control de acceso (http_access) que es la que permite o deniega las conexiones definidas en cada acl.

Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?

Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuanto desea almacenar de Internet en el disco duro? De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. 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:

cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.

Ejemplo: Denegar la dirección www.youtube.com a todas las máquinas
Abrimos y editamos el fichero de configuracion de squid squid.conf

#Parámetros obligatorios:
visible_hostname debian
http_port 3128
cache_mem 64 MB
cache_dir ufs /var/spool/squid 700 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

#Listas de control de acceso:
acl all src 0.0.0.0/0.0.0.0
acl denegado dstdomain www.youtube.com
acl localhost src 127.0.0.1

#Control de acceso:
http_access deny denegado !localhost
http_access allow all
error_directory /usr/share/squid/errors/Spanish

En esta configuración , se observa en el apartado de parámentros obligatorios el puerto de escucha, el nombre del servidor (si no sabes cual es el nombre de tu máquina, ve a una terminal y teclea «hostname»), tamaño de memoria cache y las rutas; en el segundo apartado se encuentran las listas de control de acceso, las cuales se asigna el rango de ip’s, asignación de dominio, etc…; en el tercer apartado es el control de acceso, una vez asignadas las listas de control con http_access deny se deniegan ya sea ip’s ó dominios, y con http_access allow, se permite lo mismo, tmb por ahí aparece una linea error_directory la cual muestra los mensajes de advertencia en idioma español.

Reseteamos squid:

# /etc/init.d/squid restart

Si no aparece ningún mensaje de error entonces nuestro proxy debe de funcionar deacuerdo a lo establecido, para poder probar ve a un navegador de una máquina que este conectada en la misma LAN, ve a propiedades y habilita el uso de proxy, en la ip , hay que poner la ip de nuestra máquina que tiene el squid corriendo.

Cuando hagan pruebas les bloqueará www.youtube.com, pero si ponen youtube.com si los dejará entrar, para eso se utiliza otra lista de control de acceso:

acl denegado url_regex «/home/tuusuario/denegados»

Dónde /home/tuusuario/denegados es un simple archivo de texto que contiene la palabra youtube, con eso, todos los dominios youtube serán bloqueados.

20 respuestas a «Instalar y configurar un servidor proxy con Squid»

  1. Hola mi problema es;

    al ingresat apt-get install squid me dice:

    leyendo lista de paquetes … hecho
    Creando arbol de dependencias… hecho

    E:. no se pudo cencontrar el paquete squid

      1. Gracias por tu respuesta, me ayudo mucho, al final descargue fedora 12 de la web original. Ya pude instalar squid y dar servicio sin problemas.

        Lo que al final hice fue:… en una laptop de 4 Gb de ram y 320 en disco con procesador de 2.2 AMD Turion X2…

        tiene instalado windows 7. con vmwares emule fedora e instale el squid… y pude con esa maquina y emulando fedora.. dar servicio de acceso a internet a una sala de internet…., y la laptop tiene solo 1 tarjeta de red. Y todo lo hice posible.

        Gracias

  2. Disculpen pero tengo una duda.
    No me queda muy claro si se necesitan dos tarjetas de red o solo una ya que por lo que entendi del DSL se conecta al servidor y del servidor al switch aqui es donde tengo la duda?

  3. Excelente tutorial, pero me quedo un par de dudas:

    – En donde defino la pagina personalizada, para que se direccione a ella en caso de que un usuario ingrese a una pagina prohibida. como por ejemplo siguiendo tu tutorial: al ingresar a youtube me mande a una que diga acceso denegado. esto viola el reglamento blabla bla…. un html interno.

    – Como puedo hacer para que si alguna de las maquinas de cualquier navegador instalado no se define la direccion y datos del proxy no entre para nada a internet.. Es aqui cuando se usan las 2 tarjetas de internet que mencionan mas arriba? o tambien funciona al poner una. o como seria a qui? mas que nada la conexion fisica. no la configuracion….

    1. amigo eduardo es un pequeño tutorial sobre squid ya que se puede configurar de muchas maneras y formas tanto fisicamente como por software…. lo que tu me preguntas viene en el manual de squid perfectamente explicado, instalalo y miras el man de squid

  4. Hola que tal.

    Necesito crear un servidor de internet que provea de internet a mi red interna, pero no entiendo como hacerlo
    si mi proveedor de internet me asigna una direccion de internet de forma dinamica, como hago para compartir y bloquear el acceso a ciertas paginas.

    espero tengas una respuesta .. gracias

  5. Buenas amigo, quiciera que me ayudaras con la configuracion de las interfaces de red del servidor proxy,
    es decir la de eth0 y eth1, para administrar la subred que se le brindara el servicio proxy, al igual me podrias aclarar lo del servicio dhcp, porque no mi proveedor de internet no me da una IP estática, como haría en ese caso para que todos los usuarios de mi red puedan navegar sin ningun problema, muchas gracias por tu atención, y personas como tu necesita este mundo.

    1. la configuracion de Squid puede valer para cualquier distribucion Linux, pero los pasos de la instalación vale solamente para Debian/Ubuntu/Kubuntu

  6. y si quisieramos negar todas las paginas y darle acceso solo a unas en especifico por ejemplo que los usuarios con ip 192.168.10.3 a la 192.168.10.6 solo puedan abrir facebook,hotamil y gmail?

    1. pues facil le agregas esas 3 IPs a la excepciones del proxy y yasta, pero para eso hace falta leerse el manual y no esperar a que te lo den todo hecho jose luis 😀

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.