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

Leave a Reply