De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Samba + Openldap - Sincronização de senhas
Colaboração: Fabiano Caixeta Duarte
Data de Publicação: 23 de março de 2008
Já é bastante comum encontrar empresas públicas e privadas utilizando um
servidor Unix-like (1) como controlador de domínio
(Samba)
de um parque de estações com MS Windows. Uma porcentagem ainda não tão alta
utiliza Openldap como backend (2) do Samba.
Por questões de projeto, o conjunto de informações mantidas pelo Samba depende
de uma base Unix pré-existente. Por exemplo, só é possível criar um usuário
Samba que já exista no repositório de usuários Unix do sistema. Quando o LDAP é
utilizado como backend, a regra não muda. Então cada conta de usuário do Samba
possui atributos relativos à conta Unix, inclusive, claro, um atributo contendo
a senha.
Assim, cada entrada (usuário) LDAP de um usuário Samba possui três atributos de
senha: sambaLMPassword, sambaNTPassword e unixPassord.
O atributo unixPassword só é utilizado quando o LDAP funciona como repositório
de outra aplicação que não seja o Samba. Por exemplo você pode configurar um
servidor de e-mail (MTA - Mail Transfer Agent) para usar o LDAP como backend.
Ou ainda desenvolver um sistema administrativo da empresa que use o LDAP como
repositório de dados de autenticação.
Nestes casos, é interessante que as senhas sejam sincronizadas, de forma que o
usuário tenha apenas uma conta de usuário, com uma só senha pra se autenticar
em diversos sistemas da empresa.
Quando o usuário deseja mudar a senha através da interface disponível nos
clientes Windows, por padrão o Samba só altera o valor dos seus atributos
(samba??Password). Até a versão 2.2 do Openldap e alguma versão anterior do
Samba (não documentado nos changeLogs), bastava inserir o seguinte parâmetro de
configuração no smb.conf para que o Samba providenciasse a sincronização:
ldap passwd sync = Yes
O problema
Ocorre que a versão 2.3 do Openldap trouxe a implementação de várias
funcionalidades sob a forma de overlays (camadas). Uma delas nos interessa
neste texto. Trata-se da ppolicy, ou password policy, assimilada pelas versões
mais novas do Samba. Esta camada se propõe a fornecer um conjunto de controles
existentes a muito em sistemas Unix e Windows, como tempo de validade de uma
senha, tamanho mínimo de senha, etc.
Esta mudança deixou alguns administradores de cabelo em pé, pois após a
atualização do Samba e do Openldap para versões mais novas a sincronização de
senhas simplesmente parou de funcionar. Na verdade o maior problema acabou
sendo a falta de documentação a respeito.
A solução
A solução é simples (o ovo de colombo). Basta introduzir o suporte à overlay
ppolicy ao servidor Openldap que o Samba utiliza como backend. Isto é feito em
dois passos. Primeiro, acrescente a opção enable-ppolicy à configuração de
compilação do servidor Openldap:
./configure --enable-ppolicy --[demais-opções]
Depois, insira as duas linhas abaixo no arquivo de configuração do servidor
Openldap (slapd.conf):
include /usr/local/etc/openldap/schema/ppolicy.schema
overlay ppolicy
Agora que seu servidor já tem suporte a políticas de senhas, que tal estudar o
assunto mais a fundo e aumentar a segurança de seu ambiente?
Até a próxima dica!
(1) - Unix-like representa todos os sistemas baseados em Unix, como por
exemplo o Linux e o FreeBSD. Doravante toda vez que vir a palavra Unix, pense
em seu sistema Unix-like favorito ;)
(2) - Backend, neste contexto, representa o repositório de informações sobre
configurações, usuários, grupos e computadores do domínio.
Fabiano Caixeta Duarte é Especialista em Redes de Computadores, com foco no gerenciamento de serviços de rede em sistems operacionais Unix-like e desenvolvimento de soluções em shell-script e perl.