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.
Implementar restricciones de acceso a Internet según horarios específicos es una estrategia eficaz para optimizar el ancho de banda disponible, aumentar la productividad durante la jornada laboral y alinear el uso de la red con las políticas organizacionales. Squid ofrece un control granular del acceso basado en el día de la semana y la hora, permitiendo a los administradores definir períodos de acceso permisivo y restrictivo de manera clara y sencilla.
Este documento presupone la lectura y configuración exitosa descrita en el manual «Configuración de Squid: Opciones básicas».
El control de acceso por horario en Squid se logra mediante la creación de Listas de Control de Acceso (ACLs) especiales del tipo time. Estas ACLs se definen directamente en el archivo de configuración principal y no requieren de un archivo externo.
La sintaxis básica para crear una ACL de tiempo es la siguiente:
acl [nombre_del_horario] time [días_de_la_semana] [hora_inicio]-[hora_fin]
Los días se especifican utilizando la primera letra de su nombre en inglés, lo cual permite combinaciones flexibles:
Ejemplo: Definir un horario laboral de lunes a viernes, de 9:00 a 18:00 horas.
acl horario_laboral time MTWHF 09:00-18:00
Una vez definida la ACL de tiempo, se integra en una regla de acceso (http_access) para aplicar la restricción. La lógica es permitir o denegar el acceso a una entidad (como una red) únicamente durante el horario especificado.
La estructura de la regla es:
http_access [allow | deny] [nombre_del_horario] [lista_de_entidades]
Supongamos que se desea permitir el acceso a Internet a la red local 192.168.100.0/24 solo durante el horario matutino de lunes a viernes (de 09:00 a 15:00).
Definir las ACLs necesarias en /etc/squid/squid.conf:
vim /etc/squid/squid.conf
Añada las siguientes líneas en la sección correspondiente a las Listas de Control de Acceso:
acl localnet src 192.168.100.0/24
acl horario_matutino time MTWHF 09:00-15:00
Crear la regla de acceso que vincule la ACL de tiempo con la ACL de red. En la sección de reglas (http_access), añada:
http_access allow horario_matutino localnet
Esta regla se interpreta como: «Permitir el acceso a la red localnet sólo durante el horario definido en horario_matutino». Fuera de ese horario, las peticiones desde localnet no coincidirán con esta regla allow y, si no hay otra regla que las permita, serán denegadas por la regla final http_access deny all.
La verdadera potencia del control por horario se manifiesta al combinarlo con otras ACLs, como las de filtrado de contenido o autenticación, permitiendo crear políticas de acceso extremadamente granulares y adaptadas a necesidades complejas.
Imaginemos que se quiere impedir la descarga de archivos ejecutables (.exe) durante el horario laboral para la red local.
Definir las ACLs (tiempo, red y extensión):
acl localnet src 192.168.100.0/24
acl horario_laboral time MTWHF 09:00-18:00
acl archivos_exe urlpath_regex \.exe$
Crear una regla combinada que permita el acceso general en ese horario, pero excluya el contenido no deseado:
http_access allow horario_laboral localnet !archivos_exe
Esta regla establece: «Durante el horario_laboral, permitir a localnet acceder a todo excepto a lo definido en archivos_exe».
Para un control aún más estricto, puede combinarse el horario con autenticación de usuarios y listas de sitios bloqueados. Suponiendo que ya existen las ACLs usuarios_auth (para autenticación) y sitios_bloqueados (con url_regex), la regla podría ser:
http_access allow horario_laboral usuarios_auth !sitios_bloqueados
Esta política exige que, dentro del horario laboral, los usuarios primero se autentiquen y, una vez autenticados, no puedan acceder a los sitios de la lista negra.
Tras modificar el archivo squid.conf, es imperativo recargar la configuración 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
La forma más directa de probar la configuración es intentar acceder a Internet desde un cliente dentro de la red restringida (192.168.100.0/24) tanto dentro como fuera del horario definido.
http_access en orden secuencial. Asegúrese de que las reglas de horario restrictivas estén colocadas antes de reglas más genéricas que puedan anularlas.timedatectl status en SystemD)./var/log/squid/access.log. Las líneas que terminen en TCP_DENIED indicarán qué peticiones están siendo bloqueadas. Puede correlacionar la hora del registro con sus ACLs de tiempo.horario_oficina, acceso_finde) para facilitar el mantenimiento de la configuración.time.El control por horario es una capa más dentro de una estrategia de defensa en profundidad. Para un control de acceso integral, combine este método con los demás descritos en la serie de manuales de Squid:
La combinación de estos controles permite establecer políticas de uso de la red que sean a la vez seguras, productivas y ajustadas a los requerimientos operativos de cualquier organización.