Como você define hash de senha para o OpenLDAP?

4

Eu tenho a seguinte versão no Ubuntu 12.04:

OpenLDAP: slapd  (Sep 19 2013 22:49:31) $
buildd@batsu:/build/buildd/openldap-2.4.28/debian/build/servers/slapd

Agora, o OpenLDAP oferece o SSHA como o hash padrão. Eu quero usar um hash diferente. No entanto, tutoriais antigos são baseados na edição /etc/ldap/slapd.conf , que desapareceu na versão mais nova do OpenLDAP. Qual arquivo devo mudar?

    
por CppLearner 03.02.2014 / 22:12

1 resposta

7

Ok. Eu percebi isso com ajuda do IRC e lendo manpage.

Supondo que você não queira recriar nada além de adicionar hash de senha em um back-end existente do LDAP e estiver executando o Ubuntu (isso é testado apenas em máquinas Ubuntu, mas o método deve ser independente de SO):

Usaremos ldapmodify para adicionar, modificar e remover entradas.

Etapa 1: crie o test.conf

Nós criaremos um arquivo chamado test.conf e adicionaremos os seguintes:

dn: olcDatabase={-1}frontend,cn=config
add: olcPasswordHash
olcPasswordHash: {CRYPT}

O dn é diferente se você tiver um banco de dados diferente. Eu comecei sabendo nada onde colocar, então eu simulei:

sudo su            # do this as root
cd /etc/ldap/
mkdir test.d
slaptest -f test.conf -F test.d

O último comando irá converter o test.conf existente (meu nome para o famoso slapd.conf ) para o novo formato cn=config .

Se você tree o diretório test.d e você ler cada um dos arquivos ldif, você encontrará exatamente o arquivo que deseja modificar. No meu caso (possivelmente para todos os usuários do Ubunut por aí), seria olcDatabase={-1}frontend.ldif .

A outra coisa é cn=config . Isso ocorre porque o arquivo ldif existe no diretório cn=config .

Esta é uma boa maneira de descobrir onde o atributo deve pertencer.

Etapa 2: executar o ldapmodify

root@test32giab:/etc/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f test.conf

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={-1}frontend,cn=config"

Se você agora verificar o arquivo ldif, ele deverá ter olcPasswordHash attribute.

Se você quiser especificar o formato do hash, você pode fazer isso. Supondo que você esteja seguindo as duas etapas anteriores, você comente tudo ou comece com um novo arquivo. O arquivo precisa conter as seguintes linhas:

dn: cn=config
add: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$rounds=8000$%.16s

Execute isso usando o mesmo comando ldapmodify . Agora a conta LDAP será dividida usando SHA-256 ( $6$ é SHA-512) mais 16-char long salt e hash 8000 vezes.

A entrada dn é cn=config porque esse valor (com base na minha simulação usando a etapa 1) está no arquivo cn=config.ldif .

Para saber mais sobre o formato, consulte link

Se você estiver experimentando um formato diferente, tente usar o método replace . Então o arquivo ficaria assim.

dn: cn=config
replace: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$%.16s

Agora eu removi 8000 vezes a iteração. Eu acho que, por padrão, o SHA5-256-CRYPT é hash 5000 vezes.

Você pode ler mais sobre isso fazendo man ldapmodify e scrolldown perto da parte inferior da página do manual.

    
por 04.02.2014 / 02:29

Tags