Squid com autenticação em um RADIUS
-
Boa tarde pessoal,
Estou tentando configurar a autenticação dos usuários do meu Squid em um RADIUS externo, rodando em um servidor Windows (NPS), mas estou enfrentando alguns problemas…
A autenticação do RADIUS aparentemente está funcionando corretamente, se eu digito credenciais válidas o acesso é completado, do contrário o navegador repete a solicitação, o problema ocorre se eu cancelo a autenticação, nesse caso, ao invés de um erro de autenticação como seria o esperado, o acesso se completa e a página é acessada normalmente.
A princípio apenas configurei os campos Authentication Method, Authentication Server e RADIUS Secret da aba Authentication do Squid, está faltando alguma coisa?
-
Depois de muita briga com o Squid acho que consegui avançar, embora o comportamento dele ainda me pareça estranho…
Alternei várias configurações aqui e cheguei à conclusão que o meu Squid não aceita o uso da Whitelist padrão com autenticação. Se eu uso a Whitelist padrão o comportamento dele fica como descrito no meu primeiro post, pior que isso ainda foi constatar que utilizando a Whitelist padrão, se eu não colocar nada no campo Allowed Subnets, o Squid sequer solicita a autenticação do usuário, a janela nem é exibida no navegador.
Decidi então partir para uma solução de contorno, usar as Custom options (aba General do Squid, botão Show Advanced Options) para fazer as liberações que preciso, mas acrescentei a ACL password, que é criada automaticamente pelo Squid quando configuro a autenticação, na mesma linha em que permito o acesso ao meu arquivo de domínios permitidos, da seguinte forma:acl DOMINIOS_PERMITIDOS dstdom_regex -i "/var/squid/acl/domains.acl"
http_access allow password DOMINIOS_PERMITIDOSCom essa alteração tudo mudou, a autenticação passou a funcionar conforme o esperado, permitindo o acesso quando as credenciais são válidas, solicitando nova autenticação quando as credenciais não são válidas e negando quando o usuário cancela.
Outra coisa que me intriga é que mesmo que meu IP não pertença à rede configurada em Allowed Subnets ou que não seja configurada nenhuma rede ali (a opção Allow Users on Interface está desabilitada também) o Squid me permite navegar, é como já comentaram em outro tópico por aqui, o campo Allowed Subnets parece estar lá apenas como enfeite…
Um detalhe menos importante é a mensagem configurada em Authentication Prompt (aba Authentication), preenchi o campo com o texto "Teste" (sem as aspas) e notei que no Google Chrome esse texto é ignorado, a mensagem exibida na janela de autenticação fica assim:
Autenticação necessária
O proxy http://x.x.x.x exige um nome de usuário e uma senha.
Sua conexão a este site não é particularJá no Internet Explorer e no Edge o texto aparece na janela de autenticação, mas a redação fica até cômica:
O servidor x.x.x.x está solicitando seu nome de usuário e sua senha. O servidor indica que é proveniente de
Teste.Seguem alguns cenários que testei para chegar a essas conclusões:
Teste 1: Com whitelist padrão e Allowed Subnets vazia
Resultado: Navegador nem sequer exibe a janela de autenticação >:( e o acesso é bem sucedido para os domínios listados na Whitelist :-\squid.conf:
Custom options before auth
Always allow access to whitelist domains
http_access allow whitelist
auth_param basic program /usr/local/libexec/squid/basic_radius_auth -w 123 -h x.x.x.x -p 1812
auth_param basic children 5
auth_param basic realm Teste
auth_param basic credentialsttl 5 minutes
acl password proxy_auth REQUIREDCustom options after auth
Default block all to be sure
http_access deny allsrc
Teste 2: Com whitelist padrão e Allowed Subnets configurada
Resultado: Navegador exibe janela de autenticação :), se o usuário e senha estiverem corretos o acesso é permitido :), se estiverem errados solicita novamente :), no entanto, se a janela de autenticação é cancelada o acesso é permitido :osquid.conf:
Custom options before auth
Always allow access to whitelist domains
http_access allow whitelist
auth_param basic program /usr/local/libexec/squid/basic_radius_auth -w 123 -h x.x.x.x -p 1812
auth_param basic children 5
auth_param basic realm Teste
auth_param basic credentialsttl 5 minutes
acl password proxy_auth REQUIREDCustom options after auth
http_access allow password allowed_subnets
Default block all to be sure
http_access deny allsrc
Teste 3: Sem whitelist padrão, com Allowed Subnets configurada e com as Custom Options mencionadas lá em cima.
Resultado: Tudo ok como esperado :D, permite o acesso quando as credenciais são válidas :), solicita nova autenticação quando as credenciais não são válidas :) e nega o acesso quando o usuário cancela :)squid.conf:
Custom options before auth
auth_param basic program /usr/local/libexec/squid/basic_radius_auth -w 123 -h x.x.x.x -p 1812
auth_param basic children 5
auth_param basic realm Teste
auth_param basic credentialsttl 5 minutes
acl password proxy_auth REQUIREDCustom options after auth
acl DOMINIOS_PERMITIDOS dstdom_regex -i "/var/squid/acl/domains.acl"
http_access allow password DOMINIOS_PERMITIDOShttp_access allow password allowed_subnets
Default block all to be sure
http_access deny allsrc
Teste 4: Sem whitelist, com as Custom Options mencionadas lá em cima e Allowed Subnets vazia
Resultado: Tudo ok com a autenticação :D, permite o acesso quando as credenciais são válidas :), solicita nova autenticação quando as credenciais não são válidas :) e nega o acesso quando o usuário cancela :), mas eu deveria conseguir navegar sem ter nenhuma rede permitida? ??? respondam essa ateus! :P :P :Psquid.conf:
Custom options before auth
auth_param basic program /usr/local/libexec/squid/basic_radius_auth -w 123 -h x.x.x.x -p 1812
auth_param basic children 5
auth_param basic realm Teste
auth_param basic credentialsttl 5 minutes
acl password proxy_auth REQUIREDCustom options after auth
acl DOMINIOS_PERMITIDOS dstdom_regex -i "/var/squid/acl/domains.acl"
http_access allow password DOMINIOS_PERMITIDOSDefault block all to be sure
http_access deny allsrc