Configuración de un Proxy en Debian (Squid)

No hay comentarios

Antes que nada, demos una pequeña introducción acerca de un Proxy, en el ultimo artículo vimos como transmitir el internet de una red pública a una privada utilizando NAT y un servidor DHCP en Debian, en este Post agregaremos un Proxy a ese servidor que construimos el Post pasado, pero bueno creo que ya me salí un poco del tema. Un Proxy en una red de computadoras, es un dispositivo o programa que realiza una acción de representación de otro, es decir supongamos  que la máquina A  Solicita un recurso a C, la máquina A hará la petición mediante la máquina B, C entonces  no sabrá  que la petición procedió originalmente de A. Con esta situación se pueden instalar una serie de funciones como: control de acceso, web-caching , monitoreo de tráfico, control de acceso a páginas web, etc.

Ejemplo Proxy

Procedemos entonces a la instalación de nuestro Proxy, partiendo que ya hayan hecho la instalación de su DHCP. Si es así continuemos, sino tendrán que leer mi Post anterior.

Primero instalamos los paquetes necesarios:

apt-get install squid

En caso de que el paquete no se encuentre deberán agregar los siguientes repositorios a su lista y actualizar: (/etc/apt/sources.list)

#Repositorios Oficiales
deb http://ftp.fr.debian.org/ squeeze/updates main contrib non-free 
deb-src http://ftp.fr.debian.org/ squeeze/updates main contrib non-free

Guardamos y actualizamos los repositorios:

apt-get update

una vez instalados los paquetes nos dirigimos al directorio de squid:

cd /etc/squid/

una vez aquí sacamos una copia al archivo de configuración:

cp squid.conf squid.conf.bak

después borramos el archivo de configuración:

rm squid.conf

y creamos de nuevo el mismo archivo, esto con la finalidad de empezarlo desde cero:

nano squid.conf

una vez aquí escribimos la siguiente configuración:

http_port 3128 transparent
visible_hostname Servidor_Proxy
cache_mem 32 mb

acl all src 0.0.0.0/0.0.0.0
acl red src 10.10.1.0/255.255.255.0
acl paginas_negadas url_regex "/etc/squid/denegados"

http_access deny paginas_negadas
http_access allow red
http_access deny all

Comentaré el significado de cada línea:

1.  Puerto por el cual escuchará las peticiones el Proxy.

2. Nombre del Servidor Proxy

3. Cache de almacenamiento para cargar las paginas.

5. Lista de control de acceso llamada “all” que contienen todas las direcciones ip

6. Lista de control de acceso llamada “red” que es la red de computadoras a las cuales se les dará acceso a internet.

7. Lista de control de acceso llamada “paginas_negadas” de tipo url_regex  esta ubicado en un archivo con las paginas que queramos negar.

9,10,11. Por medio del comando http_access y el nombre de la lista de control de acceso podenos permitir(allow) o denegar (deny) el servicio a dichas listas.

Una vez guardado el archivo, creamos el archivos de las paginas negadas, ya que si no lo hacemos nos marcara un error.

nano /etc/squid/denegados

El archivo contendrá las paginas que queramos bloquear, por ejemplo el Facebook, el archivo deberá contener la URL de las paginas, una por cada renglón.

www.facebook.com

Una vez creado el archivo procedemos a reiniciar el servicio del Proxy:

/etc/init.d/squid restart

Ahora solo nos queda redireccionar todo el tráfico hacia el puerto del squid por medio de las iptables:

iptables -F
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.1.0/24 -j MASQUERADE

Hasta aquí el servidor debe de empezar a bloquear las páginas de Internet, debo mencionar que no es la única función que realiza, como lo dije al principio del Post este también puede autenticar, fijar navegación por horario, web-caching, monitoreo de tráfico e incluso lanzar reportes por medio de una segunda herramienta llamada SARG, pero eso es tema de otro POST.

Saludos.

Nota: En caso de que el proxy no bloquee las páginas, solo reinicie la máquina y vuelva a cargar las iptables.