Páginas

quinta-feira, 21 de maio de 2015

Utilizando a Class 4 do Squid3 Integrado ao AD

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 Squid3 (class 4) e sobre isso não tem muita documentação, aliás quase nada, apenas syntaxe 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.

http://www.squid-cache.org/Doc/config/delay_class/

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

http://www.squid-cache.org/Doc/config/delay_parameters/

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 idéia: 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 criei um http_access permitindo acesso aos grupos das velocidades 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

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!!!