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.
Error: No domain found