Configurar un Proxy Web con Squid3 en Linux

By Jose Alberto Gallardo Pérez martes, 3 de febrero de 2015

En este tutorial vamos a instalar y configurar un Proxy Web en Linux, en este caso en Debian. Para ello debemos instalar Squid3, en una máquina Debian, en mi caso una máquina virtual y para realizar las comprobaciones, vamos a hacer uso de otra máquina virtual con Windows XP.

Requisitos para la práctica

Vamos a usar máquinas virtuales en Virtual Box con las siguientes configuraciones
  • Debian con dos interfaces, una en Adaptador puente y otra en Red Interna
  • Windows XP con una interfaz en Red Interna (misma que Debian)

¿Qué es un Proxy Web?

Un proxy web puede definirse como un software que sirve para controlar e interceptar la navegación de páginas web por motivos de seguridad, rendimiento, anonimato...

Instalación y configuración de Squid3

apt-get update
apt-get install squid3
Ahora nos iremos a la ruta de Squid3 para ver los archivos de configuración
cd /etc/squid3
Vamos a hacer una copia de seguridad de squid.conf por si las moscas
cp squid.conf squid.bak
Vamos a editar squid.conf con nano (por ejemplo) y vamos a activar las siguientes línes en squid.conf. Como el archivo tiene varios miles de líneas te recomiendo que hagas uso de Ctrl + w para buscar las siguientes líneas y descomentarlas...
cache_mem 256
cache_dir ufs /var
Una cosa interesante sería renombrar partes del archivo para poder buscarlos más fácilmente como podéis ver en las siguientes imágenes... En YOUR OWN RULES... he puesto GALLARDO RULES! y en ACL TYPES... he puesto TIPOS DE ACL, de tal forma que si quiero acceder a cualquiera de estas partes, simplemente hago un Ctrl + w GALLARDO y ya accedo a la línea interesante.

Aplicando reglas a nuestro Proxy Web

Bajo la línea YOUR OWN RULES... renombrado como GALLARDO RULES! en mi caso vamos a poner las reglas acl que nos van a servir para empezar a configurar nuestro Proxy Web a nuestro antojo. A estas líneas les seguirán otras líneas http_access que llamarán a las acl para permitir (allow) o denegar (deny). Hay que recordar que cada vez que realicemos modificaciones en nuestro squid.conf tendremos que reiniciar nuestro servicio squid3 con service squid3 restart.

Configurar una sola IP con Squid3

En este primer ejemplo vamos a crear nuestra primera regla acl
acl "nombre" src "IP"
por ejemplo:
acl windows src 10.0.0.2
A la que le va a seguir una regla http_access que va a llamar a la regla acl
http_access "allow ó deny" "nombre"
por ejemplo:
http_access allow windows
Con lo que vamos a permitir que windows se pueda conectar a internet.

Configurar en los navegadores el Proxy Web

En mi caso para realizar la prueba vamos a usar Internet Explorer (aunque esté un poco obsoleto) pero es el que viene en mi máquina virtual de Windows XP. Para ello nos vamos a Herramientas > Opciones de Internet > Conexiones > Configuración de LAN > Opciones avanzadas > IP : 3128(Check) Usar el mismo servidor proxy para todos los productos como podemos ver en la siguiente imagen.



Denegar una sola IP y activar el resto de la red

acl windows src 10.0.0.2
acl red10 src 10.0.0.0/24
http_access deny windows
http_access allow red10


Permitir a un rango de IPs

acl rango1020 src 10.0.0.10-10.0.0.20
http_access allow rango1020


Permitir a todos los equipos de una red excepto a una IP y un rango

acl windows src 10.0.0.2
acl red10 src 10.0.0.0/24
acl rango1020 src 10.0.0.10-10.0.0.20
http_access deny rango1020
http_access deny windows
http_access allow red10


Permitir conectarse a una MAC determinada

acl MAC arp XX:XX:XX:XX:XX:XX
http_access allow MAC


Permitir conectarse a una MAC e IP determinadas

acl windows src 10.0.0.2
acl MAC arp 08:00:23:G5:00:01
http_access allow MAC windows


Permitir conectarse unos días, a unas horas y unos equipos determinados

Para ello vamos a tener en cuenta que S es domingo, M es Lunes, T es Martes, W es Miércoles, H es Jueves, F es Viernes y A es Sábado. Vamos a tomar como nomenclatura acl lo siguiente.

acl "nombre" time "DIAS" "H1:M1-H2:M2"
Por ejemplo:
acl horariotrabajo time MTWHF 08:00-15:00
acl rango1020 src 10.0.0.10-10.0.0.20
http_access allow horariotrabajo rango1020
José Alberto Gallardo Pérez

Soy un sevillano de 25 años, proyecto de ingeniero, profe de ajedrez, escéptico, loco, con mil ideas en la cabeza y poco tiempo para desarrollarlas. A veces me da por crear contenido en Monetizalia, Gallardowork, MusicCopyleft o donde estas ahora mismo.

2 comentarios to ''Configurar un Proxy Web con Squid3 en Linux"

ADD COMMENT
  1. Hola,
    Muy bueno tu aporte. Quería saber si te habías topado con algún error como este:
    -------------------------------------------------- ---------------------------------
    The following Error was Encountered while trying to retrieve the URL: /
    Invalid URL
    Some aspect of the requested URL is incorrect.
    Some possible problems are:
    Missing or incorrect access protocol (Should be http: // or the like)
    Missing hostname
    Illegal double-escape in the URL-Path
    Illegal character in hostname; underscores are not allowed.
    Your cache administrator is webmaster.
    -------------------------------------------------- ---------------------------------
    Mi conexión es:
    Router> MikroTik (Ether1)
    MikroTik (ether2)> Squid
    MikroTik (ether 3)> Switch

    Espero me des una mano, gracias.

    Saludos.

    ResponderEliminar
  2. La forma mas sencilla de configurar el proxy en una red local es:
    visible_hostname [nombre del host]
    acl all src [dirección de la red, ej: 192.168.0.0/24]
    http_port [puerto]
    acl [nombre] url_regex "[ruta del archivo con las palabras bloqueadas]"
    http_access deny [nombre]

    ResponderEliminar