Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
La restricción del acceso a ciertos Sitios de Red es fundamental para garantizar un uso racional del ancho de banda, aumentar la productividad y mantener la seguridad de la red corporativa. Squid permite implementar estas restricciones de manera granular y eficiente mediante listas de control de acceso (ACLs) basadas en patrones de URL y nombres de dominio.
Este documento presupone la lectura y configuración exitosa descrita en el manual «Configuración de Squid: Opciones básicas».
Este método es potente y flexible, permitiendo bloquear sitios que contengan ciertas palabras o patrones dentro de su URL completa. Es ideal para categorías amplias de contenido.
Primero, cree un archivo que contendrá las expresiones regulares o palabras clave a bloquear. Cada patrón se escribe en una línea nueva.
vim /etc/squid/listas/expreg-denegadas
El contenido del archivo puede incluir términos relacionados con categorías de contenido que una organización desee restringir, como ocio, descargas o temas sensibles. Por ejemplo:
descargas
derechoslaborales
foros
nsfw
p2p
pirateria
plataformas_video
redes_sociales
streaming
videojuegos
ejemplo-bloqueado.com
🔧 Nota: Esta lista debe ser completada y adaptada según las políticas de uso aceptable de la red de cada organización. Los términos como nsfw (Not Safe For Work) sirven para categorizar contenido para adultos de forma discreta.
Con el archivo creado, se define una nueva Lista de Control de Acceso (ACL) en la configuración principal de Squid.
Edite el archivo de configuración:
vim /etc/squid/squid.conf
Dentro de la sección de ACLs, añada una línea que defina una ACL de tipo url_regex que apunte al archivo creado:
acl expreg-denegadas url_regex "/etc/squid/listas/expreg-denegadas"
Ejemplo de sección de ACLs resultante (usando el bloque de red coherente 192.168.100.0/24):
#
# Recommended minimum configuration:
acl all src 0.0.0.0/0
acl manager proto cache_object
acl localhost src 127.0.0.1/8
acl localnet src 192.168.100.0/24
acl expreg-denegadas url_regex "/etc/squid/listas/expreg-denegadas"
La potencia de las ACLs reside en combinarlas en las reglas de acceso (http_access). Para denegar el acceso a los sitios que coincidan con la lista, se utiliza el operador de negación !.
Modifique la regla que permite el acceso a la red local (localnet) para que excluya lo definido en expreg-denegadas:
http_access allow localnet !expreg-denegadas
Esta regla se lee como: «Permitir el acceso a la red localnet, excepto a aquello que coincida con la ACL expreg-denegadas».
Puede combinarse esta restricción con otros controles, como la autenticación explicada en el manual Configuración de Squid: Acceso por Autenticación:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow localnet usuarios_autenticados !expreg-denegadas
http_access deny all
Este método es más específico y se utiliza para bloquear el acceso a dominios completos o subdominios particulares, ofreciendo un control preciso sobre sitios web concretos.
Cree un archivo para listar los dominios a restringir:
vim /etc/squid/listas/dominios-denegados
El archivo puede contener dominios específicos o el uso del punto (.) para bloquear el dominio y todos sus subdominios.
Ejemplos de formato:
.redsocial-corporativa.com
.microblog-ejemplo.com
.plataforma-video.com
.foros-derechos.com
.dominio-geo.jp
.dominio-geo.cn
.dominio-stream.tv
🔧 Nota importante: Si se define .dominio.com, se bloquean automáticamente www.dominio.com, mail.dominio.com, ftp.dominio.com y cualquier otro subdominio. Carece de necesidad definirlos individualmente.
Edite nuevamente squid.conf y añada una ACL de tipo dstdomain:
acl dominios-denegados dstdomain "/etc/squid/listas/dominios-denegados"
Luego, actualice la regla de acceso para incorporar esta nueva restricción. La regla final podría ser:
http_access allow localnet !expreg-denegadas !dominios-denegados
A veces, una expresión regular genérica puede bloquear incidentalmente el acceso a un sitio legítimo y necesario. Para estos casos, se crea una lista blanca (whitelist) de dominios que estarán exentos de las restricciones.
Cree un archivo con los dominios que siempre deben ser accesibles:
vim /etc/squid/dominios-permitidos
Contenido de ejemplo (ilustrativo):
.dominio-permitido.org
.edu
.gob.mx
.gov
.org
www.google.com
Defina la ACL correspondiente en squid.conf:
acl dominios-permitidos dstdomain "/etc/squid/dominios-permitidos"
Para implementar la excepción, se añade una regla antes de las reglas restrictivas. Esta regla especial permite el acceso a los dominios de la lista blanca sin importar otras restricciones:
http_access allow dominios-permitidos
⚠️ Orden crucial: Las reglas en Squid se evalúan en orden. Esta regla de permiso debe colocarse antes de reglas como http_access allow localnet !expreg-denegadas. Si un dominio coincide con dominios-permitidos, Squid otorga el acceso y deja de evaluar el resto de las reglas para esa petición.
Una vez completada la configuración, es necesario recargar Squid para que los cambios surtan efecto.
Para sistemas con SystemD (AlmaLinux, Rocky Linux, RHEL 8+):
systemctl reload squid
Para sistemas con SysVinit (ALDOS):
service squid reload
Para probar la configuración:
192.168.100.0/24, intente acceder a un sitio cuyo dominio o URL coincida con un patrón en sus listas de denegación.dominios-permitidos). El acceso debe ser exitoso./var/log/squid/access.log para ver las peticiones denegadas (TCP_DENIED) y comprender qué regla se está aplicando.url_regex para evitar bloqueos excesivos. Por ejemplo, videojuegos bloqueará cualquier URL que contenga esa cadena.El filtrado por URL y dominio se combina de manera poderosa con otros mecanismos de control de Squid. Considere implementar un sistema de defensa en profundidad utilizando también:
Estos controles, combinados con las listas de expresiones regulares y dominios aquí descritas, permiten construir una política de acceso a Internet robusta, granular y adaptada a las necesidades específicas de cualquier organización.