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_PERMITIDOS

    Com 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 é particular

    Já 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 REQUIRED

    Custom 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 :o

    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 REQUIRED

    Custom 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 REQUIRED

    Custom options after auth

    acl DOMINIOS_PERMITIDOS dstdom_regex -i "/var/squid/acl/domains.acl"
    http_access allow password DOMINIOS_PERMITIDOS

    http_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 :P

    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 REQUIRED

    Custom options after auth

    acl DOMINIOS_PERMITIDOS dstdom_regex -i "/var/squid/acl/domains.acl"
    http_access allow password DOMINIOS_PERMITIDOS

    Default block all to be sure

    http_access deny allsrc


Log in to reply