Password di hashing in OpenLDAP

2

Ho visto alcuni post su Internet che dicono che la maggior parte delle persone memorizza le password degli utenti in OpenLDAP utilizzando una delle numerose funzioni di hashing incorporate di OpenLDAP. Ma OpenLDAP stesso raccomanda di passare l'hashing e la decifratura della password a un servizio separato

Inoltre, RFC 4519 sezione 2.41 afferma che le password memorizzate in un sistema LDAP dovrebbero non essere sottoposto a hash, ma piuttosto memorizzato in testo non crittografato.

rabbrividire.

I documenti OpenLDAP suggeriscono di passare l'hashing della password a un altro servizio, in particolare la Cyrus SASL della libreria .

Sto vedendo un sacco di algoritmi di hashing più vecchi elencati in entrambi i documenti dei pacchetti. Roba come SHA-1 e MD5.

Nel 2015 esistono pratiche comuni per le password di hashing gestite tramite LDAP? Al giorno d'oggi, quali algoritmi di hashing sono comunemente usati? È pratica comune passare l'hashing a un servizio di hashing? In tal caso, quali pacchetti sono comuni su Red Hat Systems? Dove loro memorizzano gli hash?

    
posta StudentsTea 20.08.2015 - 21:30
fonte

3 risposte

3

Riguarda il modo in cui interpreti ciò che stanno scrivendo. Non stanno dicendo che non dovresti hash e dovresti memorizzare le password in testo normale. Quello che sta dicendo è che il valore che scrivi in LDAP non è hash o crittografato. Questo è come la situazione che hai con un normale database. Puoi definire una colonna chiamata password e puoi dire al database di crittografare quella colonna o meno. È quindi possibile attaccare i dati in quella colonna, che può essere crittografata / hash o testo normale. Se si definisce la colonna come crittografata, i dati vengono crittografati mentre vengono scritti nella colonna e decrittografati quando vengono letti da essa. Se si memorizzano gli hash di una password, tale hash verrà crittografato e richiederà la decodifica prima che possa essere utilizzato. In generale, la crittografia del database riguarda la protezione dei dati esportati nei dump di dati, ecc. È un po 'come la crittografia del disco in quanto una volta che si ha accesso alle tabelle del database, la crittografia / decrittografia viene eseguita dietro le quinte e non viene visualizzata. Tuttavia, se qualcuno riesce ad accedere a un dump dei dati o ottiene l'accesso al file di dati della tabella su disco, non sarà in grado di leggere le informazioni.

Notare la definizione degli attributi della password come memorizzati in una sintassi della stringa dell'ottetto. Questo formato è definito per supportare l'intera gamma di caratteri che incontrerai nelle password con hash. Quello che la pratica migliore sta dicendo è che LDAP memorizza il valore che gli dai 'così com'è' senza ulteriore crittografia o hashing. È compito del software che gestisce questi dati per eseguire qualsiasi operazione di hashing desiderata

La 'L' è LDAP sta per leggero. Un server LDAP in genere vede molte letture con molte meno scritture. È progettato per gestire molte richieste e cerca di garantire buone prestazioni mantenendolo semplice. L'aggiunta della crittografia crea un ulteriore sovraccarico non necessario. Se l'attributo della password è stato crittografato, tutte le query dovrebbero decodificare tali informazioni, riducendo le prestazioni.

LDAP mantiene anche le cose semplici non fornendo un'interfaccia di gestione. È essenzialmente un albero definito di attributi e valori il cui ruolo principale è quello di rispondere alle domande. Per rafforzare ulteriormente questo aspetto, spesso lo si trova in ambienti ad alta richiesta, si avrà un server LDAP principale in cui vengono inviate tutte le scritture / aggiornamenti e server slave / replicaiton in cui vengono inviate tutte le query. Quando scrivi al master, se inoltrerà le modifiche agli schiavi.

La gestione dei dati viene solitamente eseguita da qualche altro programma. Ad esempio, sul nostro sito, abbiamo un programma perl che riceve i dati dal nostro sistema IAM. Quindi prende questi dati, applica alcune regole aziendali e scrive i risultati sul master LDAP. Il programma perl esegue gli hash delle password (in pratica dovremo supportare più tipi di hash per ogni password perché non tutte le applicazioni comprendono lo stesso algoritmo di hashing.) Questo hashing aggiunge anche un salt.

Quando un client interroga il server LDAP, otterrà solo ciò che è memorizzato nell'attributo. Con le password, i dati memorizzati includono dettagli su quale tipo di hash è stato utilizzato. Naturalmente, affinché i binding funzionino, il server LDAP deve comprendere almeno uno degli hash utilizzati per eseguire il bind.

Nel nostro caso, l'hash principale che usiamo è SHA-512. I riferimenti a MD5, SHA1, Crypt ecc sono obsoleti e non dovrebbero essere usati. Questo è un altro esempio del vantaggio di questo approccio. Una volta usavamo SHA-1 e persino Crypt. Potremmo aggiornare facilmente un algoritmo di hashi più recente senza doverci preoccupare troppo di LDAP e versioni ecc.

    
risposta data 28.08.2015 - 03:39
fonte
0

Il server LDAP esegue certamente l'hash in alcune circostanze, ad esempio la verifica di un binding. Una password memorizzata appare come questa (la mia vera password, crack away;)

{sha384}QoAkviNtBCtNyjN+yAkEEL6ChjtUVFKDTKHrIlx/YqIHrDG7Tx2eJhbBPKAX0mo5

Si noti che l'algoritmo hash è incluso nell'hash. Esiste un set abbastanza standard di hash in uso con il software client, ad es. phpLDAPadmin ha: blowfish, crypt, ext_des, md5, md5crypt e alcuni altri. Mi aspetto che questo sia standardizzato da qualche parte. Gli algoritmi più recenti non sono disponibili di default, quindi mi aspetterei che md5crypt sia la migliore di queste opzioni: è salata e ha un fattore di lavoro (1000x).

Apparentemente ci sono plugin per algoritmi di hashing più recenti; vedi questa domanda . Questa è la soluzione migliore.

    
risposta data 27.09.2015 - 23:37
fonte
0

Per ulteriori dettagli sugli algoritmi di hashing accettabili, fai riferimento a Scheda cheat di archiviazione della password . Come indicato da @Neil dovresti essere in grado di utilizzare l'algoritmo di hashing raccomandato in openldap.

    
risposta data 28.09.2015 - 08:35
fonte

Leggi altre domande sui tag