Un
proxy básicamente es un programa o dispositivo que recibe las peticiones de una red y en base a diferentes reglas que tiene configuradas las permite o no.
Por ejemplo, si mi PC sale a internet directamente a traves de un router standard va a poder acceder a todas las paginas que desee. El diagrama sería algo así:
PC > ROUTER > INTERNET
Ahora, con un proxy en el medio la salida a internet estaría limitada por las reglas que le configuremos:
PC > PROXY > ROUTER > INTERNET
Si en el proxy configuramos una regla donde, por ejemplo, nadie pueda acceder a
youtube al intentar hacerlo aparecerá un mensaje como éste:
Para instalarlo solo necesitamos a nuestro querido apt-get:
sudo apt-get install squid
Una vez instalado
procedemos a configurarlo, para ello editamos el siguiente archivo:
sudo nano /etc/squid/squid.conf
1. Con
Ctrl + W buscamos la siguiente linea:
http_port 3128
En esta linea configuramos
el puerto por el cual Squid "escuchará" las peticiones. Por defecto viene el
3128, podemos cambiarlo por ejemplo al
8080. En mi caso, dejo el que viene por defecto.
2. Nuevamente con
Ctrl + W buscamos la siguiente linea:
cache_mem 8 MB
Aquí configuraremos la
cantidad de memoria asignada para la caché de Squid. Ésta valor va a depender de la cantidad de RAM de la máquina, pero si tenemos 1GB podemos asignarle unos 256 MB.
No olviden descomentar las líneas (quitar el simbolo #)
3. Buscamos la linea:
cache_dir ufs /var/spool/squid 100 16 256
Este parámetro se encarga de
asignar un espacio en el disco para almacenar la caché de Squid.
Ufs es el formato con el que Squid guarda la caché en disco, luego viene la ruta donde se almacenará la misma y, por ultimo, aparece el tamaño máximo en disco que Squid utilizará.
Al primer valor (100) le asignaremos 1000 (MB), este valor no puede ser menor que el que hemos asignado antes a la memoria caché. Luego vienen los parámetro de directorio primario (16) y directorio secundario (256) en niveles. Establecerá 16 directorios de primer nivel y 256 subdirectorios de segundo nivel. Estos valores conviene dejarlo por defecto.
Hasta fue la configuración del proxy. Ahora seguimos con las listas de control de acceso:
1. Buscamos la linea:
acl CONNECT method CONNECT
Aquí crearemos la primera regla que luego permitiremos (o denegaremos). La regla debe comenzar con "
acl" y luego elegiremos
el nombre de la misma,
el metodo de acceso y por ultimo
el rango de acceso. Por ejemplo:
acl redlocal src 192.168.1.0/24
En ésta regla indicamos
cual es el origen de las conexiones. En este caso es la dirección de red 192.168.1.0 con mascara 255.255.255.0. Lo que abarca el rango de IP desde 192.168.1.0 hasta 192.168.1.255 (tener en cuenta que la primer dirección y la última no deben utilizarse).
Ahora crearemos otra regla para denegar la conexión a distintas paginas:
acl denegado url_regex "/etc/squid/denegado"
El método
url_regex es
para que el proxy analice las direcciones de acuerdo a las palabras que anotemos en una lista. En éste ejemplo luego del método colocamos una ruta con un archivo que
Squid chequeará antes de permitir la conexión. Ese archivo estará formado por
todas las palabras que queremos denegar. En lugar de la ruta podríamos escribirlas todas una al lado de la otra, separadas por espacios, pero si son muchas quedaría bastante desprolijo. Entonces, las 2 reglas que creamos quedaron de la siguiente forma:
2. Para permitir o denegar las reglas que creamos en el paso anterior debemos buscar la siguiente linea:
http_access y debajo de la linea que dice
# Only allow cachemgr access from localhost agregamos:
http_access deny denegado
http_access allow redlocal
Con esto denegamos el listado de palabras situado en "
/etc/squid/denegado" y permitimos las conexiones de nuestra red.
Ya con esto estaría configurado el archivo
squid.conf. Presionamos
Ctrl + O para guardar,
ENTER para mantener el nombre del archivo y
Ctrl + X para salir.
Ahora crearemos el
archivo con las palabras que deseamos denegar, para ello escribimos en la terminal:
sudo nano /etc/squid/denegado
Acá ingresamos todas aquellas palabras que queremos denegar una debajo de la otra. Guardamos con Ctrl + O, presionamos ENTER para mantener el nombre del archivo y Ctrl + X para salir.
3. Para activar el servicio escribimos en la terminal:
sudo /etc/init.d/squid restart
También podemos usar el parámetro "
reload" en lugar de "
restart" si en lugar de reiniciar el servicio solo queremos "
recargar" la configuración del archivo
squid.conf. Otros parametros posibles son "
start" para iniciar el servicio o "
stop" para detenerlo.
Aclaración: Cuando seguí estos pasos con
Ubuntu 10.10 a la hora de reiniciar el servicio me encontré con que no estaba en
/etc/init.d/squid sino en /etc/default/squid. Así que si no les llega a funcionar el paso anterior prueben escribiendo directamente "sudo squid restart" (si les dice que "Squid is already running!" deberán primero "matarlo" con "sudo kill NumeroProcessID" . En Debian 6.0 Squeeze funciona todo tal cual fue descripto.
Para hacer efectivo la configuración de nuestro proxy debemos configurarlo en el navegador.
1. Para
Internet Explorer vamos a "
Herramientas" > "
Opciones de internet" > Pestaña "
Conexiones" > "
Configuración LAN"
Tildamos "
Usar un servidor proxy para la LAN", en dirección escribimos la direccion IP de la máquina en la que está corriendo
Squid y en puerto el
3128 (si es que no lo cambiamos). También debemos tildar la opción "
No usar servidor proxy para direcciones locales".
Y listo, ya no deberia permitirnos ingresar a las palabras claves del archivo "
denegado" ubicado en "
/etc/squid/"
2. Por supuesto que el proxy se puede configurar en cualquier navegador. Por ejemplo para
Chromium con
Debian /
Ubuntu debemos ir a "
Herramientas" > "
Opciones" ("
Preferencias") > "
Avanzadas" > "
Cambiar la configuración del proxy" > "
Configuración manual del proxy".
3. Para
Firefox: "
Herramientas" > "
Opciones" o "
Editar" > "
Preferencias" > "
Avanzadas" > Pestaña "
Red" > "
Configuración" > "
Configuracion manual del proxy"
Y así con todos :)
Para que el proxy nos devuelva los mensajes de error en español debemos editar el archivo de configuración:
sudo nano /etc/squid/squid.conf
Luego buscamos la linea "
error_directory /usr/share/squid/errors/en" la descomentamos y al final en lugar de "
en" (inglés) escribimos "
es" (español).
Guardamos con Ctrl + O, presionamos ENTER para mantener el nombre del archivo y Ctrl + X para salir.
Para que haga efecto la nueva configuración ejecutamos en la terminal:
sudo /etc/init.d/squid reload
Si deseamos
editar los mensajes de error debemos seguir la ruta "
/usr/share/squid/errors/es" y editar el mensaje que queramos. Dentro de esa carpeta aparecen todos los archivos con los mensajes de error que al ser abiertos a traves de un editor de texto podremos ver que están hechos con
HTML con lo cual podremos editarlas facilmente y dejar el mensaje como queramos. Por ejemplo, yo edité el mio y quedó así:
Por ultimo, y ya para finalizar el tutorial, decirles que si desean ver el
log con los intentos de acceso a las palabras clave denegadas pueden hacerlo abriendo el archivo ubicado en
/var/log/squid/access.log.
Eso ha sido todo, a denegar! :P
Referencia:
Instalación de un servidor proxy Squid en Ubuntu
IMPORTANTE: Si lo que queres es bloquear una sola página, o unas pocas, quizás te convenga hacerlo editando el archivo hosts como expliqué una vez
aquí. Ahí no vas a tener que instalar ni configurar nada, basta con editar un solo archivo.