Imagine o seguinte cenário: Empresa de pequeno porte, com um AD instalado às pressas sem muitos cuidados e um servidor Linux lá no meio servindo de proxy. Se você tiver vontade de autenticar os serviços no AD, aqui vão alguns exemplos práticos e rápidos.

Tome como base um Windows 2003, com o domínio chamado “EverLinux” e um usuário rosca lá chamado “tcruz” somente para fazer as buscas no diretório da Microsoft. O Linux seria um Ubuntu ou Debian da vida.

Autenticando o Apache no AD

cd /etc/apache2/mods-enabled
ln -s ../mods-available/ldap.load .
ln -s ../mods-available/authnz_ldap.load .
 
<Directory "/var/www/protegido">
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative off
        AuthName "Entre com a senha do AD"
        AuthType Basic
        AuthLDAPBindDN tcruz@everlinux
        AuthLDAPBindPassword senha_do_tcruz
        AuthLDAPURL ldap://10.10.20.20:3268/cn=users,dc=everlinux?sAMAccountName?one
        require user tcruz cmangini
        Allow from all
</Directory>

Autenticando o Squid no AD

...
acl bloqueados dstdom_regex -i "/etc/squid/block.txt"
http_access deny bloqueados
 
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=everlinux" -D \
"cn=tiago cruz,cn=users,dc=everlinux" -w "senha_tcruz" -f sAMAccountName=%s -h 10.10.20.20
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
...

Autenticando algo em PHP no AD

O exemplo será o software OneOrZero utilizado Help Desk:

# apt-get install php5-ldap
 
cat /var/www/helpdesk/configuration/website_settings.php
auth_method = "AD"
ldap_host = "10.10.20.20"
ldap_domain = "everlinux"
ldap_binddn = "CN=Tiago Cruz,CN=Users,DC=everlinux"
ldap_bindpwd = "senha_tcruz"
ldap_rootdn = "CN=Users,DC=everlinux"
ldap_searchattr = "sAMAccountName"
ldap_fname = "givenname"
ldap_lname = "sn"
ldap_uname = "samaccountname"
ldap_email_add = "mail"
ldap_office = "physicaldeliveryofficename"
ldap_phone = "telephonenumber"
ldap_context = "sAMAccountName"

Fazendo uma busca manualmente no diretório

# ldapsearch -LLL -h 10.10.20.20 -P 3 -x -D "cn=tiago cruz,cn=users,dc=everlinux" -W \
-b "cn=users,dc=everlinux"  "(&(&(objectClass=user)(objectCategory=person)) \
(sAMAccountName=tcruz))" 
Enter LDAP Password: 
dn: CN=Tiago Cruz,CN=Users,DC=everlinux
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Tiago Cruz
sn: Cruz
physicalDeliveryOfficeName: EverLinuxs Office
telephoneNumber: 1234-4321
givenName: Tiago
initials: ti
distinguishedName: CN=Tiago Cruz,CN=Users,DC=everlinux
instanceType: 4
whenCreated: 20090427110042.0Z
whenChanged: 20100406221357.0Z
displayName: Tiago Cruz
uSNCreated: 555987
memberOf:: Q049QWRtaW5zLiBkbyBkb23DrW5pbyxDTj1Vc2VycyxEQz1kb21pbmlvMjAwNw==
memberOf: CN=Administradores,CN=Builtin,DC=everlinux
uSNChanged: 2331137
name: Tiago Cruz
objectGUID:: 39teBl62JUWwzZz36nNICw==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 129150648344589017
lastLogoff: 0
lastLogon: 129150648382871002
pwdLastSet: 128853036428004858
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAR0LCqonS5XyzPF2T+AQAAA==
adminCount: 1
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: tcruz
sAMAccountType: 80530263368
userPrincipalName: tcruz@everlinux
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=everlinux
mail: tiagocruz AT everlinux.com

Espero que com estas dicas fique mais fácil para você centralizar a autenticação de seus serviços, caso seja necessário integrar com um LDAP proprietário.

One Response to “Como autenticar serviços no LDAP da MS (Active Directory)”

  1. Tweets that mention Everlinux’s Blog » Blog Archive » Como autenticar serviços no LDAP da MS (Active Directory) -- Topsy.com says:

    [...] This post was mentioned on Twitter by Tiago Cruz. Tiago Cruz said: Como autenticar serviços do Linux no LDAP da MS (Active Directory) http://bit.ly/dw7c3i [...]

Leave a Reply