sexta-feira, 17 de dezembro de 2010

Squid Autenticado no Active Directory

Para a autenticação sem a solicitação de senha devemos utilizar o protocolo NTLM disposto no diretório
/usr/bin/ntlm_auth. Este protocolor realizada a troca de desafios e autentica o usuário sem a necessidade
de informar senha, utilizando para tal o login e senha logados no Windows.

Mãos na massa. Instalação realizada com Debian 5.07 lenny

:: Ingresse a máquina no Domínio AD 
Clique Aqui para Visualizar o POST
Após realizado os testes da integração conforme descrito no POST anterior vamos instalar o squid

:: Instalando o squid
# apt-get install squid

:: Configurando o squid
# cp /etc/squid/squid.conf /etc/squid/squid.conf.ori
# vim /etc/squid/squid.conf

Encontre as linhas
[...]
#Recommended minimum configuration per scheme:
#auth_param negotiate program <uncomment and complete this line to activate>
#auth_param negotiate children 5
#auth_param negotiate keep_alive on
#auth_param ntlm program <uncomment and complete this line to activate>
#auth_param ntlm children 5
#auth_param ntlm keep_alive on
#auth_param digest program <uncomment and complete this line>
#auth_param digest children 5
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#auth_param basic program <uncomment and complete this line>
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
[...]

Copie as linhas abaixo e altere conforme segue
[...]
# Autenticacao direta sem Pop-up de Senha
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param ntlm keep_alive on

# Autenticacao direta computadores não ingressadas no dominio
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
[...]

# ACL para autenticacao
acl all proxy_auth REQUIRED

# Liberando acesso
http_access allow all

:: Reinicie o squid
# squid -k shutdown
# squid -k kill
# squid -d 2

:: Olho nos logs do squid
# tail -f /var/log/squid/access.log

Tive uma série de problemas com esta autenticação, pois o Windows 7 insistia em solicitar a senha
e não era possível realizar a navegação. Depois de uma série de testes e mudanças, descobri que
o Windows 7 vem configurado por padrão para utilizar o NTLMv2. Foi só alterar para a versão anterior
do protocolo que a autenticação/navegação ocorreu certinho.

:: Alterando a versão do NTLM
1) Iniciar > Executar > secpol.msc
2) Navegue até Diretivas Locais > Opções de Segurança
3) Encontre o Item Segurança de Rede: nível de autenticação LAN Manager
4) Altere seu valor para Enviar LM e NTLM - usar segurança da sessão NTLMv2, se negociada

Obs.: Esta configuração pode ser realizada via GPO.

:: Utilizando os Grupos do AD para permissões

Crie o diretorio acl para manter as configurações organizadas
# mkdir /etc/squid/acl

Crie o arquivo que conterá os grupos Restritos por exemplo
# touch /etc/squid/acl/Grupos_Restritos.txt
# echo "Grupo Restrito AD" >> /etc/squid/acl/Grupos_Restritos.txt

# vim /etc/squid/squid.conf
[...]
acl Usuarios_Autenticados proxy_auth REQUIRED
external_acl_type groups children=20 %LOGIN /usr/lib/squid/wbinfo_group.pl
acl Grupos_Restritos external groups "/etc/squid/acl/Grupos_Restritos.txt"
http_access allow Usuarios_Autenticados Grupos_Restritos
[...]