Servidor proxy Squid en Linux
Un proxy es un ordenador que recibe peticiones de páginas web de otros ordenadores de la red, las busca en su caché o en Internet y devuelve cada página al ordenador que la ha pedido. De esta manera, sólo este ordenador se conecta a Internet.
Los proxys se emplean principalmente para tres cosas:
- reducir el consumo de ancho de banda y acelerar la navegación web, ya que las páginas cacheadas no tiene que volver a bajarlas.
- controlar el acceso a determinadas direcciones web o IPs.
- proxy inverso: se pone una máquina con un proxy inverso delante del servidor web para servir las peticiones externas de páginas más rápidamente por tenerlas en caché.
El proxy más extendido es Squid (squid-cache.org, paquete squid).
Equivalencias en Windows: MS-ISA.
Veamos algunas de las principales directivas de su archivo de configuración, /etc/squid.conf:
- por defecto Squid escucha en el puerto 3128, pero usaremos la directiva
http_port para que escuche además en el puerto 8080, ya que
muchos navegadores buscan los proxys en ese puerto:
http_port 3128 http_port 8080
- dirección de correo del administrador que aparecerá en los mensajes de error:
cache_mgr [email protected]
- nombre de host mostrado en los mensajes de error:
visible_hostname proxy.dominio.es
- idioma de los mensajes de error:
error_directory /usr/lib/squid/errors/Spanish
- podemos hacer que nuestro proxy trabaje de forma coordinada con otros proxys. Nuestro proxy
buscará las peticiones en su propia caché, y si no están cacheadas,
pasará la petición al proxy padre; si éste tampoco la
encuentra en su caché, la buscará en Internet. La sintaxis es:
cache_peer <hostname> <type> <http_port> <icp_port> <options>
Por ejemplo, para coordinar nuestro proxy con la caché de xtec.es haremos:
cache_peer proxy.xtec.es parent 8080 3130 no-digest no-query default
- para configurar los permisos de acceso a Squid, lo haremos en dos pasos:
- primero definiremos las listas de control de acceso
ACL (Access Control List):
- nuestra red local:
acl red_local src 192.168.1.0/255.255.255.0
- dominios a los que no se puede acceder:
acl dominios_chungos dstdom_regex -i playboy.com marca.es
- palabras que no pueden figurar en una URL:
acl palabras_chungas url_regex -i sex porno
- excepciones a la regla anterior:
acl palabras_no_chungas url_regex -i sexualidad
- tipos de archivo a los que no se permite acceder:
acl archivos_chungos url_regex -i \.mp3$ \.avi$
- horas a las que no se permite navegar:
acl horas_chungas time 8:00-10:00
- al gerente no se le restringe nada:
acl ip_gerente src 192.168.100.3/32
- nuestra red local:
- a continuación, estableceremos los permisos de cada lista ACL. Es muy
importante el orden en que establecemos los permisos, ya que las comprobaciones
comienzan por el principio y cuando una de las condiciones se cumple ya no sigue leyendo:
- si no es de la red local, denegar el acceso:
http_access deny !red_local
- si es el gerente, permitir el acceso:
http_access allow ip_gerente
- si quiere entrar a un dominio prohibido, denegar el acceso:
http_access deny dominios_chungos
- si la URL contiene una palabra permitida (una palabra que parece
prohibida pero que puede ser utilizada), permitir el acceso:
http_access allow palabras_no_chungas
- si la URL contiene una palabra prohibida, denegar el acceso:
http_access deny palabras_chungas
- si quiere bajarse un tipo de archivo prohibido, denegar el acceso:
http_access deny archivos_chungos
- si quiere navegar a una hora prohibida, denegar el acceso:
http_access deny horas_chungas
- todas las demás peticiones pueden acceder al proxy:
http_access allow all
- si no es de la red local, denegar el acceso:
- primero definiremos las listas de control de acceso
ACL (Access Control List):
Grabamos los cambios y reiniciamos Squid:
# /etc/init.d/squid restart
Test de proxy
Para comprobar si estamos navegando a través de un proxy (local o implementado por nuestro ISP), tenemos test de proxy en la página de la Asociación de Internautas internautas.org/w-testproxy.php y en la página lagado.com/tools/cache-test/
Si el resultado es afirmativo, saldrá un mensaje como éste:
Tu conexión está pasando a través de un PROXY IP del PROXY: 200.35.164.1T Tu IP: 127.0.0.1, 192.168.1.80
Si el resultado es negativo, el mensaje será:
No detectamos ningún PROXY Tu IP: 88.1.206.68
Analizador de logs de Squid
Para analizar los logs de Squid tenemos varias aplicaciones:
- Calamaris (cord.de/tools/squid/calamaris/, paquete calamaris): escrito en Perl y con interfaz web.
- SARG (Squid Analysis Report Generator, sarg.sourceforge.net, paquete sarg).
6 Comentarios en “Servidor proxy Squid en Linux”
Deja un comentario
nesecito un manual o una guias para implementar proxy con linux
seria bueno que apoyaran a persona que quieren saber sobre los usus de proxy con linux
dime que necesitas saber y podemos hablar, agregame [email protected] (por msn messenger)
Gracias por el aporte y tu tiempo en hacerlo, se encuentra muy interesante.
Una pregunta, actualmente doy permisos al squid para la navegacion, colocando las ips fijas (mi red es windows 2003), hay alguna manera de integrarlo para que resuelva los ips a traves de mi dns y los permisos los de por nombre host?
Una Pregunta: Quisiera modificar o realizar mi propio mensaje de error, para sustituir el que esta por defecto del “http_access deny” para las paginas, mas que nada es posible y si lo es como seria.