Como autenticar serviços no LDAP da MS (Active Directory)
Posted by: Tiago Cruz in Dicas, LDAP, Linux, Segurança, Squid, UbuntuImagine 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.



Entries (RSS)