quinta-feira, agosto 24, 2006

Autenticando o acesso ao webserver no AD

Hoje precisei fazer uma coisa interessante: implementar o controle de acesso a um diretório do nosso site departamental realizando a autenticação no Active Directory. O servidor é um Suse 10.1 e a versão do Apache é 2.2.0. Depois de perder um certo tempo pesquisando cheguei à seguinte configuração funcional:


Alterações no /etc/apache2/default-server.conf:

AuthType Basic
AuthName "LDAP Auth"
AuthBasicProvider ldap
AuthLDAPURL ldap://172.16.X.X:389/OU=XXX,OU=XXX,OU=XXX,OU=XXX,dc=XXX,dc=XXX,dc=XX,dc=br?sAMAccountName?sub?(objectClass=user)
AuthLDAPBindDN cn=usuarioparaconsulta,ou=XXX,ou=XXX,ou=XXX,dc=XXX,dc=XX,dc=XX,dc=br
AuthLDAPBindPassword minhasenha
AuthName "Acesso restrito aos usuarios do setor XXX. Informe o mesmo login/senha utilizado na rede."
AuthzLDAPAuthoritative off
require valid-user


Se quisermos usar restrição por um grupo específico, podemos fazer o seguinte:


# Ao adicionar/remover usuarios do grupo restrito do AD,
# lembre-se de executar um rcapache reload
AuthType Basic
AuthName "LDAP Auth"
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthName "Acesso restrito aos ADMINISTRADORES DE REDE. Informe o mesmo login/senha utilizado na rede."
AuthLDAPURL ldap://172.16.X.X:389/OU=XXX,OU=XXX,OU=XXX,OU=XXX,dc=XXX,dc=XXX,dc=XX,dc=br?sAMAccountName?sub?(objectClass=user)
AuthLDAPBindDN cn=usuarioparaconsulta,ou=XXX,ou=XXX,ou=XXX,dc=XXX,dc=XX,dc=XXX,dc=br
AuthLDAPBindPassword minhasenha
require ldap-group CN=usuarios_restritos_cti,OU=XXX,OU=XXX,OU=XXX,DC=XXX,DC=XXX,DC=XXX,DC=br



Algumas informações foram obfuscadas por razões óbvias.


Foi necessário incluir as duas linhas abaixo no /etc/apache2/sysconfig.d/loadmodule.conf:
LoadModule ldap_module /usr/lib/apache2-prefork/mod_ldap.so
LoadModule authnz_ldap_module /usr/lib/apache2-prefork/mod_authnz_ldap.so

Também foi preciso adicionar à variável APACHE_MODULES do /etc/sysconfig/apache2 as seguintes strings: "ldap" e "authnz_ldap", ficando assim:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl suexec userdir php5 ldap authnz_ldap"




Além