Olá a todos.
Nesses dias, eu recebi a tarefa de configurar um proxy (não, esse não é um tutorial de como integrar o
Squid ao AD), que entre as funcionalidades mais comuns (bloqueio de sites por domínio, palavra-chave, que fosse integrado ao AD etc.), tivesse controle de banda por login de usuário.
Dentre as várias opções disponíveis, optei pelo
delay_pools do Squid e achei bastante documentação sobre sua implementação, com exceção de uma coisa: a limitação por login foi implementada a partir do Squid 3 (class 4) e sobre isso não tem muita documentação. Aliás, quase nada, apenas sintaxe de parâmetros no geral.
Depois de finalmente entender a class 4, tive dificuldade de integrar à solução que eu havia configurado. Tudo o que o site do Squid informa sobre essa classe, é:
class 4 - Tudo como a classe 3 de delay_pool, com um limite adicional baseado em usuário. Isto só tem efeito se o username foi estabelecido previamente - forçando uma autenticação em suas regras de http_access.
E também sobre os delay_parameters:
Para um delay_pool class 4:
delay_class pool 4
delay_parameters pool agregado rede individual usuário
E, por mais que eu procurasse, tudo o que eu encontrava era isso. Estava quase desistindo e fazendo as limitações por IP (class 3), quando me ocorreu uma ideia: conforme a documentação do site do Squid, a classe 4 funciona com usuários previamente autenticados nas ACLs, mas eu uso usuários do AD, então eu tentei usar um proxy_auth REQUIRED nas ACLs que buscavam os grupos do AD e funcionou perfeitamente! Então, a linha da ACL ficou assim:
external_acl_type ad_Group ttl=60 %LOGIN /usr/lib/squid3/wbinfo_group.pl # Helper que busca grupos do AD (em versões mais recentes do Squid3 o nome do helper é ext_wbinfo_group_acl
...
acl acesso_100KB external grupo Internet-100KB proxy_auth REQUIRED
E então, nas regras "http_access" eu fiz:
http_access allow rede_local acesso_100KB acesso_padrao !sites_proibidos !palavras_proibidas !libera_skype
Isso significa que o acesso será liberado para máquinas da rede local, que tenham usuários no grupo "acesso_100KB" que também estejam no grupo "acesso_padrao" aos sites que não estejam nas listas sites_proibidos, palavras_proibidas e acesso_skype.
Você pode criar uma linha dessa para cada limite que você quiser, daí pessoas que estão no grupo padrão, podem ter várias opções de velocidades.
Depois de fazer isso, então eu criei o "delay_pool":
delay_pool 1 # Quantidade de pools.
delay_class 1 4 # Classe do pool nº 1.
delay_access 1 allow acesso_100KB # Libera acesso ao grupo acesso_100KB que já foi previamente autenticado.
delay_access 1 deny # Nega acesso ao pool para todos os outros.
delay_parameters 1 1 -1/-1 -1/1 102400/102400 102400/102400 # Os parâmetros do pool 1 informam que não há limite da banda total, não há limite da banda por rede, limite individual de 1 mbps e limite por username de 1 mbps.
Dependendo da sua banda, você deve alterar esses parâmetros.
Para mim, está funcionando perfeitamente da forma que está, as páginas estão sendo bloqueadas por domínio e por palavra e a banda sendo limitada de acordo com o usuário logado.
Pronto, agora na internet já tem uma ajuda para quem quiser utilizar o delay_class 4 integrado ao AD.
Espero ter ajudado e até a próxima.