2012-07-31 10 views
5

Dla mojego życia nie mogę tego znaleźć nigdzie i jeśli ktoś może nawet podać mi link, byłbym bardzo wdzięczny.Jak włączyć hashowanie hasłem (SSHA) w openLDAP

Próbujemy włączyć mieszanie SSHA w openLDAP. Domyślnie przechowuje hasła w postaci zwykłego tekstu, co moim zdaniem jest kryminalne, ale hej, jestem gościem AD, więc co ja wiem. Ale można by pomyśleć, że ułatwiłoby to znalezienie informacji potrzebnych do włączenia mieszania, jeśli tak zdecydujesz. I nie wybrałbyś?

+1

Warto zauważyć tutaj dla innych: przechowywanie zaszyfrowanych haseł w bazie danych uwierzytelniania (LDAP, AD lub cokolwiek innego) nie jest w pełni panaceum bezpieczeństwa, które wydaje się być . SASL znacznie poprawia bezpieczeństwo w sieci (przez sieć), ale wymaga, aby oryginalne hasło było dostępne dla obu końców łącza. Tak więc kompromisem jest lepsze zabezpieczenie w magazynie danych (hashing) przed lepszym zabezpieczeniem przez sieć (SASL). –

+0

From 'man slapo-ppolicy': Określa, że ​​hasła jawnego tekstu występujące w żądaniach Dodaj i Modyfikuj powinny zostać zaszyfrowane przed ich zapisaniem w bazie danych. Jest to niezgodne z modelem informacyjnym X.500/LDAP, ale może być potrzebne do skompensowania klientów LDAP, którzy nie używają rozszerzonej operacji Password Modify w celu zarządzania hasłami. –

Odpowiedz

7

Możesz użyć "hash-hash", aby zmienić algorytm haszowania, domyślny to SSHA (nie jest to czysty tekst).

Należy zauważyć, że slapd używa powyższego, tylko jeśli hasło wysłane przez klientów jest w postaci zwykłego tekstu, jeśli klient wysyła zakotwiczone hasło, będzie ono przechowywane w niezmienionym stanie.

dla np: z pam_ldap użyć pam_password exop (lub jasne)

Jak to testy wytrzymałościowe hasło uruchomić na serwerze, czy hasło jest w najbliższych Hashed i wiem, że to funkcja openldap naganiacze ?

Jeśli wysłał zakodowane hasła, slapd mogę wykonać testy wytrzymałościowe, więc klienci muszą wysłany haseł w postaci zwykłego tekstu (ppolicy ma możliwość akceptowania/odrzucania zaszyfrowany hasłem).

Uwaga:

  1. upewnić się, że klienci używają SSL/TLS (tak passwds nie są przesyłane w postaci zwykłego tekstu)
  2. atrybut userPassword zawiera znaki specjalne ({}), więc trzeba zrobić base64 -d do identyfikacji używanego algorytmu mieszania.

np normalnie atrybuty są zwracane w następującym formacie (:: wskazywać wynik jest zakodowane base64)

userPassword:: e1NTSEF9QjU0VXNmQWhJN1dQZ3FvbDVSQ1l5RHUzTlVqa1luVVhYV2ljbmc9PQ= 
= 

$ echo e1NTSEF9QjU0VXNmQWhJN1dQZ3FvbDVSQ1l5RHUzTlVqa1luVVhYV2ljbmc9PQ==|openssl base64 -d 
{SSHA}B54UsfAhI7WPgqol5RCYyDu3NUjkYnUXXWicng== 
+2

Dzięki Naj. Twoje sugestie stały się częścią naszego rozwiązania. Moja wypowiedź na temat testowania siły była w rzeczywistości pytaniem innych, którzy zasugerowali, że hashowanie powinno nastąpić przed wysłaniem do LDAP w celu uzyskania autoryzacji. Powyższe stwierdzenie było dla mnie czymś, co sprawiło, że zacząłem podejrzewać komentarz. Jeszcze raz dziękuję ... Zwycięstwo idzie do ciebie, mój przyjacielu. –

1

OpenLDAP obsługuje różne schematy przechowywania, które może wybrać administrator. Narzędzie do tworzenia kont musi być skonfigurowane tak, aby wykonywało mieszanie. Serwer będzie przechowywać hasła w formacie żądanym przez klienta. W przypadku mieszania odbywa się prawidłowo, ldapsearch pokaże zakodowane hasła, takie jak to:

userPassword: {SSHA}d0Q0626PSH9VUld7yWpR0k6BlpQmtczb 

Zobacz http://www.openldap.org/doc/admin24/security.html o szczegóły.

Jeśli chodzi o narzędzia administracyjne ja osobiście polecam http://phpldapadmin.sourceforge.net

+0

Naprawdę? Tak więc mówisz, że jedynym sposobem na uzyskanie hashowania hasłem jest posiadanie klienta lub innymi słowy zewnętrznego źródła. Wydaje się to mniej optymalne i nieco niebezpieczne. W świecie AD jest centralnie zarządzany i zarządzany centralnie. Trudno mi w to uwierzyć. –

+0

Czekaj, jak testy siły hasła są uruchamiane na serwerze, jeśli hasło jest hashowane i wiem, że jest to funkcja nagrań openLDAP? –

+0

LDAP to tylko katalog. Egzekwowanie zasad haseł zależy od warstwy uwierzytelniającej, a nie od warstwy pamięci masowej. Naprawdę tak działa świat systemu UNIX, istnieje narzędzie, które robi tylko jedno i robi to dobrze. Aby wymusić zasady haseł, musisz skonfigurować narzędzie używane przez twoich użytkowników do zmiany hasła, czy to interfejsu sieciowego czy narzędzia wiersza poleceń. Rozumiem, że trudno w to uwierzyć, że nie ma "centralnej" rzeczy, która robi wszystko, ale taka jest idea modularności. – anttix

2

Spec LDAP wymaga zwykłego tekstu hasła do interoperacyjności. Powyższy link na temat bezpieczeństwa da ci opcję domyślnych typów skrótu, które serwer może wymusić, ale rozważ konsekwencje.

+0

Masz rację co do wymogu wysyłania zwykłego tekstu. Domyślam się, że właśnie dlatego openLDAP wymaga włączenia SL, zanim można go skonfigurować, aby uruchamiał hashujące hasła. Moje pytanie brzmi: dlaczego zezwala na wysyłanie haseł czysto tekstowych z wyłączonym mieszaniem. Bezpieczeństwo mądry, czy nie lepiej mieć hashing włączony od get get i wymagać od użytkownika, aby go wyłączyć. Rodzaj modelu BSD, wszystko domyślnie zamknięte, wymagające od uczonego, aby włączyć niebezpieczne rzeczy. –

1

Kiedy próbował zapisać atrybut userPassword w dodaj/modyfikować operacje LDAP userPassword wartość jest przechowywana jako zwykły tekst. Ale można zastąpić to zachowanie przy użyciu opcji ppolicy_hash_cleartext w module nakładki ppolicy w OpenLDAP. Po włączeniu, gdy klient wysyła hasło w postaci zwykłego tekstu, jest on domyślnie przechowywany jako SSHA.Więcej informacji na temat włączania hasła hash w OpenLADP od here