Squid Autenticando em um Active Directory
Posted by: Tiago Cruz in Dicas, Linux, Scripts, Squid, Ubuntu
Dica rápida, sem muitas novidades. Apenas uma forma rápida de colocar um Squid 2.6.18 rodando em um Ubuntu 8.04 LTS para autenticar em um Windows 2003 Server, sem usar samba+winbind, dar join no domínio, usar ntp e etc.
A idéia é documentar uma árvore LDAP padrão do Windows, para servir como base para futuras implementações, visto que muitos admins de AD desconhecem esta informação
No squid.conf, ficaria mais ou menos assim (o “\” é uma quebra de linha, porém o comando deve ficar em uma linha única):
... acl diretoria src 10.10.10.9/32 http_access allow diretoria # Autenticacao AD Windows auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=dominio" -D "cn=tiago \ cruz,cn=users,dc=dominio" -w "senha" -f sAMAccountName=%s -h 10.10.10.10 auth_param basic children 5 auth_param basic realm Autenticacao auth_param basic credentialsttl 5 minutes acl ldapauth proxy_auth REQUIRED http_access allow ldapauth # White List acl liberados dstdom_regex -i "/etc/squid/unblock.txt" http_access allow liberados ... # Rede Local LAN acl rede_local src 10.10.10.0/24 http_access allow rede_local
Caso não funcione “de prima”, recomendo estes comandos para debugar o problema:
1-) Usando o LDAPSearch para ver se retorna OK:
$ ldapsearch -LLL -h 10.10.10.10 -P 3 -x -D "CN=Tiago Cruz,CN=Users,DC=Dominio" \ -W -b "DC=Dominio" "(&(&(objectClass=User)(objectCategory=Person))(sAMAccountName=tcruz))" Enter LDAP Password: dn: CN=Tiago Cruz,CN=Users,DC=dominio objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: Tiago Cruz sn: Cruz givenName: Tiago initials: ti distinguishedName: CN=Tiago Cruz,CN=Users,DC=dominio instanceType: 4 whenCreated: 20090427110042.0Z whenChanged: 20090427190603.0Z displayName: Tiago Cruz uSNCreated: 555987 ....
2-) Simulando o LDAP_AUTH do Squid na mão, passando na mesma linha usuário e senha desejado para ver se funciona bem:
$ /usr/lib/squid/ldap_auth -R -b "dc=dominio" -D "cn=tiago \ cruz,cn=users,dc=dominio" -w "senha" -f sAMAccountName=tcruz -h 10.10.10.10 tcruz senhacorreta OK tcruz senhaerrada ERR Success
Lembrando que se você estiver usando Proxy Transparente, você deverá configurar o endereço do Proxy diretamente no navegador do usuário pois a autenticação não funcionará.
Se você não sabe se usa Proxy Transparente, seria algo mais ou menos assim:
# No squid: http_port 3128 transparent # No firewall: echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -t nat -A PREROUTING -s 10.10.10.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
A idéia é pegar todo o tráfego que vem da sua rede local com destino à porta 80/tcp e encaminhar para o squid na porta 3128/tcp, de forma transparente. Funciona muito bem, mas caso você queira autenticação será necessário mexer no browser no cliente.
Para fazer uma configuração automática, sugiro a utilização de um Script de Logon mais ou menos como este arquivo “todos.bat”:
@echo off net use f: \\server\shared net use h: /home regedit /s \\server\netlogon\proxy.reg
Sendo que o proxy.reg seria algo mais ou menos assim:
REGEDIT4 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "ProxyServer"="10.10.10.1:3128" "ProxyEnable"=dword:00000001 "EnableAutodial"=dword:00000000 "NoNetAutodial"=dword:00000000 "MigrateProxy"=dword:00000001
Mais informações:
- Configuring Squid on Linux to authenticate with Active Directory
- Configuring a Squid Server to authenticate off Active Directory
- Squid autenticado no Active Directory com Winbind
- Autenticando o SQUID no Active Directory via NTLM
- SaMBa 3.x -> Tudo o que você precisa saber (e não tinha para quem perguntar
Abraços e até a próxima!

Entries (RSS)