Squid y las listas de control de acceso. Configuración básica en Ubuntu
Imagina que eres el administrador de una red de área local y no deseas que los usuarios de la red se conecten a Internet a partir de cierta hora, o que no que no puedan hacer uso de Internet los fines de semana, no se puedan descargar archivos .exe o acceder a ciertas páginas de Internet. Todo eso y más lo podemos controlar con Squid, el servidor proxy más popular y extendido entre las diferentes distribuciones basadas en GNU/Linux. Un proxy es un servidor cuyo objetivo es la centralización del tráfico entre Internet y una red local, de esa forma, cada uno de los ordenadores de la red local no tiene necesidad de disponer de una conexión directa a Internet. Además, también se utiliza para controlar los accesos no permitidos desde Internet hacia la red local o viceversa.
A continuación mostraré como instalar y configurar Squid en Ubuntu. A través de varios ejemplos también mostraré algunos archivos de configuración básicos para comprender mejor como funciona.
Instalación y arranque de Squid
Para instalar squid tan sólo tendremos que abrir el terminal y escribir:
- sudo apt-get install squid.
Para arrancar squid escribimos:
- /etc/init.d/squid start
Para pararlo:
- /etc/init.d/squid stop
Y para reiniciarlo:
- /etc/init.d/squid restart
Configuración básica de Squid
El archivo de configuración se encuentra en /etc/squid/ y se llama squid.conf. 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 (más adelante veremos que son las acl).
Otros parámetros importantes son:
- cache_dir. Establece la localización y el tamaño de la caché en el disco duro.
Ejemplo: cache_dir ufs /var/spool/squid 100 16 256
ufs es el sistema de almacenamiento que utiliza squid. 100 el tamaño en megas de la caché, 16 el nivel de subdirectorios de primer nivel y 256 el segundo nivel de subdirectorios por cada directorio de primer nivel.
Las listas de control de acceso o ACL
Las listas de control de acceso nos permitirán designar qué máquinas o redes tienen permitido, o no, acceder al servidor. A continuación, a cada ACL creada se le hace corresponder una regla de control de acceso (http_access) que es la que permite o deniega las acciones definidas en la ACL.
El siguiente ejemplo muestra una lista de control de acceso que identifica a nuestra red de área local (suponiendo que tiene la dirección de red 192.168.1.0 y máscara 255.255.255.0).
- acl red_local src 192.168.1.0/255.255.255.0
Si queremos permitir el acceso al servidor proxy a todos los ordenadores de la red, tendríamos que escribir la siguiente línea en el archivo de configuración de squid (/etc/squid/squid.conf)
- http_access allow red_local
Y si queremos denegar el acceso:
- http_access deny red_local
Tras acl se pone el nombre que se le asigna a la lista de control de acceso. Las listas de control de acceso emplean algunos parámetros como los siguientes:
- src hace referencia a la IP de un ordenador o a una dirección de red
- time permite denegar conexiones dentro de un rango horario.
- srcdomain y dstdomain permiten denegar conexiones a un determinado dominio web.
- url_regex permite definir una ACL que identifica sitios web dependiendo que la URL contenga ciertos caracteres o palabras.
Configuración de los clientes
Para que cada uno de los clientes de la red puedan comunicarse con Squid, debemos configurar el navegador en cada uno de ellos para que salgan a Internet a través del proxy. En Mozilla Firefox, por ejemplo, debemos ir a Editar/Preferencias/Avanzado/Red/Configuración. Seleccionamos a continuación “Configuración manual del proxy” e introducimos la IP y puerto de escucha del proxy.
Modificación de los mensajes de error de Squid
Por lo general Squid viene preconfigurado con mensajes en inglés, podemos modificarlo para que estos mensajes de error salgan en español o poner los nuestros propios. Si queremos que aparezcan en español en el archivo de configuración de squid pondremos:
- error_directory /usr/share/squid/errors/Spanish
Si queremos modificar por ejemplo el mensaje de error que aparece al impedir el acceso a una determinada página editaremos el archivo ERR_ACCESS_DENIED.
Veamos a continuación algunos ejemplos de archivos de configuración
Ejemplo 1
Crear un archivo de configuración para denegar el acceso a todos los equipos a la dirección www.google.es
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl no_permitido1 dstdomain www.google.es
acl localhost src 127.0.0.1
http_access deny no_permitido1 !localhost
En este ejemplo construimos la acl llamada localhost que representa el servidor proxy (dirección loopback). Observa que en http_access se ha puesto !localhost para denegar el acceso a todos los ordenadores de la red menos al ordenador local. De esta manera el ordenador en el que está instalado squid puede acceder a la página www.google.es
Ejemplo 2
Crear un archivo de configuración que deniegue el acceso a las direcciones www.google.es y www.alejandrox.com
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl localhost localhost src 127.0.0.1
acl no_permitido1 dstdomain www.google.es www.alejandrox.com
http_access deny no_permitido1 !localhost
En este caso el fichero de configuración es similar al caso anterior. Tan sólo hay que poner www.alejandrox.com después de www.google.es en la acl no_permitido1.
Ejemplo 3
Crea en tu carpeta personal un archivo llamado no_permitidos que contenga las direcciones de los tres siguientes dominios:
www.google.es
http://es.yahoo.com/
http://es.msn.com/
Para crear este archivo puedes abrir el terminal (Aplicaciones/Accesorios/Terminal) y escribir:
gedit /home/nombre_de_usuario/no_permitidos.
A continuación crea un archivo de configuración squid.conf que deniegue las conexiones a las direcciones que se encuentran en el archivo no_permitidos.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl no_permitido1 url_regex “/home/alex/no_permitidos”
http_access deny no_permitido1 !localhost
Ejemplo 4
Se dispone de una red local con dirección 192.168.1.0 y máscara 255.255.255.0. Crear un archivo de configuración squid.conf que permita el acceso a Squid a todos los ordenadores de la red y no lo permita a los restantes.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl todalared src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1
http_access allow todalared
http_access deny all !localhost
Ejemplo 5
Se dispone de una red de área local con dirección 192.168.1.0 y máscara 255.255.255.0. Se desea permitir el acceso a Squid a los ordenadores con las IP que están comprendidas en el rango 192.168.1.1 y 192.168.1.10 (ambas incluidas). Crea en tu directorio personal un fichero llamado ip_permitidas que tenga estas direcciones (cada dirección en una línea diferente). A continuación indica que fichero de configuración para Squid crearías para permitir el acceso a Squid a todas estas direcciones y denegar el acceso a las restantes.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl red_local src “home/nombre_usuario/ip_permitidas”
acl localhost src 127.0.0.1
http_access allow red_local
http_access deny all !localhost
Ejemplo 6
Impide la conexión a Internet a todos los equipos en horario de 18:00 a 21:00 horas.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl horario time 18:00-21:00
http_access deny horario !localhost
Ejemplo 7
Deniega las conexiones a todos los equipos en horario de 18:00 a 21:00 horas, pero sólo los lunes, martes y miércoles.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl horario time MTW 18:00-21:00
http_access deny horario !localhost
Ejemplo 8
Deniega el acceso a Squid al equipo con IP 192.168.1.5. Permite el resto de accesos a Squid.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl equipo5 src 192.168.1.5
http_access deny equipo5
Ejemplo 9
Deniega el acceso a Squid al equipo con IP 192.168.1.5 en horario de 18:00 a 21:00 horas. Permite el resto de accesos a Squid.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl equipo5 src 192.168.1.5
acl horario 18:00-21:00
http_access deny equipo5 horario
Ejemplo 10
Deniega el acceso a Squid al equipo con IP 192.168.1.5 en horario de 18:00 a 21:00 horas. Para el resto de equipos permitir el acceso sólo en horario de 10:00 a 14:00 horas. Se supone que los equipos pertenecen a la red 192.168.1.0 con máscara 255.255.255.0.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl red_local src 192.168.1.0/255.255.255.0.
acl equipo5 src 192.168.1.5
acl horario1 18:00-21:00
acl horario2 10:00-14:00
http_access deny equipo5 horario1
http_access allow red_local horario2
http_access allow equipo5
Ejemplo 11
En el archivo /etc/squid/permitidos se tiene una lista de todas las direcciones IP de la red local. El equipo10 tiene la dirección IP 192.168.1.10. Se permite el acceso a Internet al equipo10 de lunes a miércoles de 9:00 a 14:00 horas. También se permite el acceso a los equipos de la red local de lunes a miércoles. Se prohíbe el acceso en el resto de casos.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl redlocal src “/etc/squid/permitidos”
acl equipo10 src 192.168.1.10
acl horario time MTWHF 9:00-14:00
acl horario2 time MTW
http_access allow equipo10 horario
http_access allow redlocal horario2
http_access allow localhost
http_access deny all
Ejemplo 12
Restringe el acceso a todo el contenido con extensión .mp3 a los ordenadores de la red.
visible_hostname alex-laptop
http_port 8080
acl all src 0.0.0.0/0.0.0.0
acl redlocal src 192.168.1.0/255.255.255.0
acl musica urlpath_regex \.mp3
http_access allow redlocal !musica
http_access deny all
Popularity: 11% [?]
Otras entradas que te pueden interesar
- Ejercicios Squid y soluciones
- Ejercicios de filtrado de paquetes con IPTABLES
- Ejercicios servicio HTTP
- Ejercicios servicio FTP
- Filtra contenidos de páginas web con Squid y Squidguard
- 15 comandos útiles para Linux
- Ejercicios de informática




Muy bueno. Gracias.
Rafa
Rafa
22 Ene 08 at 3:00 pm
Muy bueno el informe del Squid, yo ya estuve trabajando un poco con el squid y la verdad esta bastante completo.
Me gusto mucho lo del error..lo voy a implementar
Gabriela
23 Ene 08 at 3:11 am
Te quiero felicitar ampliamente Alex (es la manera como le llamamos de manera general a Alejandro), me parece excelente el tutorial, aun no lo he hecho pero siempre he querido hacer uso de Squid, y leyendo de manera general y por los comentarios de otros usuarios esta muy completo, espero poder hacerlo y darte mis comentarios de manera mas especifica, saludos y mis mejores deseos.
Abigail
23 Ene 08 at 9:46 pm
hola, estuve checando pero al instalar squid me marca que no puede autentificar squid y squid-common y de ahi no se que hacer, te agradeceria demasiado si me pudieras ayudar gracias
flocamoes
2 Abr 08 at 8:02 am
[…] Las soluciones de los ejercicios las puedes encontrar al final del siguiente artículo: Squid y las listas de control de acceso. Configuración básica […]
Ejercicios Squid y soluciones | Alejandrox
15 Abr 08 at 7:00 pm
Esta muy bueno el tutorial.
Para complementarlo, como podriamos hacer para que no sea necesario configurar los clientes, ya que deseo implementarlo pero seria muy engorroso configurar cliente por cliente.??
Fox
4 May 08 at 4:17 pm
[…] 98) Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
Mis 100 aplicaciones imprescindibles para Ubuntu | Alejandrox
11 May 08 at 8:13 pm
[…] escribí hace unos meses un pequeño artículo sobre Squid: Squid y las listas de control de acceso. En él hablaba de Squid, de las listas de control de acceso, y mostraba varios ejemplos de […]
Filtra contenidos de páginas web con Squid y Squidguard | Alejandrox
17 May 08 at 11:48 am
[…] 98) Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
100 aplicaciones imprescindibles para Ubuntu at Valverde a Tope
20 May 08 at 4:54 pm
[…] 98) Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
La marciandad » 100 programas imprescindibles para Ubuntu
20 May 08 at 7:07 pm
[…] 9 Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
Mis 100 aplicaciones imprescindibles para Ubuntu « G@LloLiNuX
21 May 08 at 1:01 am
[…] 9 Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
Charliec114 Blog’s » Blog Archive » Buena recopilación de las mejores aplicaciones para Ubuntu
22 May 08 at 6:47 pm
[…] 9 Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
Vaya lista… « La fragua del Tic
22 Jul 08 at 7:17 am
Hola que tal. ¿Como están?
bueno… excelente la información. ahora quiero hacerte una pregunta.
Resulta que estoy aprendiendo a usar todas las funciones de squid y cuando creo el archivo con la lista de direcciones ip que quiero permitir… el proxy me larga
strtokFile: /etc/squid/permitidosr2 not found
Warning: empty ACL: acl permitidosr2 src “/etc/squid/permitidosr2″
me podés ayudar… muchas gracias!!!
Gabriel
13 Sep 08 at 9:01 pm
Muy bueno el informe, aprovecho el comentario para hecerte una pregunta respecto del squid. Tengo dificultades para inicializar la cache del squid aparentemente no la esta creando, ya probe con con cambiar de usuario y grupo en el squid.conf y no pasa nada, el squid inicia, pero en los clientes me muestra una paguina diciendome que el squid esta bloqueando la conexion. El squid esta montado sobre un debian 4.0
andres
12 Oct 08 at 4:59 pm
Te felicito excelente tutorial, pero una pregunta al restringir paginas web con diferentes condiciones se tiene que colocar varios gedit, es decir, crear varios archivos en la carpeta de SQUID
adalberto
21 Oct 08 at 7:57 am
[…] 98) Squid: implementa un servidor proxy y un demonio de páginas web. 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. Manual […]
Comunidad Linux Oriente » Archivo del weblog » 100 aplicaciones para ubuntu
5 Ene 09 at 6:10 pm
no entendi nada, ayudame porfavor, a mi me explicaron por synaptic, pero no pude.
Diego Aviles Hernandez
7 Abr 09 at 9:33 pm
Gracias por tu ayuda. esta super bien explicado y nos ha ayudado mucho en la programación del servidor de nuestra institución…
sólo me gustaría que me ayudes como autentificar usuarios via http con squid. Para terminar de instalar bien este servidor.
He leido mucho y he intentado, pero cuando me pide el nombre del ususario y la contraseña yo la pongo y me lo vuelve a pedir y luego otra y otra vez y nunca me deja ingresar al proxy. si me puedes ayudar cómo acerlo bien o que estoy yo haciendo mal…. Gracias
Profesor Gerardo Alfaro
28 Abr 09 at 4:55 pm
Este contenido está bastante interesante. Sigue publicando y gracias por la ayuda que ofrece.
Wilson
5 May 09 at 1:57 pm
Suuper! adivina cuales fueron las primeras URLs que bloquee?? … las que generan los banners de GoogleAds y de Yahoo, sin esto algunas páginas se cargan más rápido, gracias por la información.
Roger
18 Jul 09 at 10:17 pm
Super Alx creeme no enciontre otra pagina mas completa y con muuchos ejemplos de verdad gracias y muchas feliidades por tu blog.
saludos
Adal
2 Oct 09 at 9:39 pm
[…] http://www.alejandrox.com/2008/01/squid-y-las-listas-de-control-de-acceso-configuracion-basica-en-ub… […]
CONFIGURACION DE SQUID « Arquitectura de Sistemas y administracion.
19 Oct 09 at 4:20 pm
Hola me parece muy claro tu articulo, yo necesito configurar squid en freebsd lo eh instalado pero no tenia muy claro como configurarlo, gracias a tu explicacion y ejemplos creo tener una mejor vison de como hacerlo.
Voy a ponerme a trabajar en eso, gracias!!!
Carlos
18 Nov 09 at 4:53 am
Me parece muy buena la informacion, voy a tratar de implementarlo.
Oscar
19 Nov 09 at 4:33 am
Como puedo hacer para configurar una base de datos SqlServer, que esta en un equipo publicado en internet y tiene como firewall intermedio Squid?
Jaime Peña
25 Nov 09 at 3:43 pm
Esta muy bueno el tutorial, yo lo kiero implementar en windows, tengo una duda, la ip que se le pone en el firefox junto con el puerto es la ip de la pc que tiene instalado el squid?
Eric
31 Dic 09 at 2:49 am
Muuuuy bueno el tutorial, te pasaste, muy bien explicado y los ejemplos que pusiste dejan aun mas claro todo el asunto.
estaba probando a ver si se podia filtrar paginas por expresiones regulares y funcionó.
jose
4 Feb 10 at 2:12 pm
Estupendo amigo, tu pedagogía es admirable, por favor amplia hacia otros temas, gracias
Enrique García
25 Feb 10 at 10:46 pm
pana mira te pago si quieres porfa
mira instale el ultimo squid 2.7 pero esta muy diferente dime porfa cuanto me cobras y configuras segun mis parametros copias todo lo q esta en el archivo de editar y remplazo todo y listoooo
porfa dime cuanto no puedo trate pero a hora ni el servidor coje internet estoy locooo tengo ubunutu 9.1
soy de ecuador
CESAR FLORES
19 Mar 10 at 7:58 pm
Muy buen articulo man! saludos desde MExico
Luis Lamas
9 May 10 at 4:41 pm