Radius + ldap a šifrovaná hesla

vojta

Radius + ldap a šifrovaná hesla
« kdy: 27. 07. 2017, 11:21:56 »
Je možný radiusu nařídit, aby cleartext heslo z peap zašifroval nebo udělal z něho hash a až poté porovnal s ldapem?

Mám veliký odpor držet hesla v ldape v cleartextu.

Znáte nějakou implementaci nt hashe v php nebo pythonu?


Re:Radius + ldap a šifrovaná hesla
« Odpověď #1 kdy: 27. 07. 2017, 12:50:50 »
Je možný radiusu nařídit, aby cleartext heslo z peap zašifroval nebo udělal z něho hash a až poté porovnal s ldapem?

Mám veliký odpor držet hesla v ldape v cleartextu.

Znáte nějakou implementaci nt hashe v php nebo pythonu?
Řešil jsem to kdysi dávno, takže si už úplně nepamatuju detaily, tak mě pls úplně neber za slovo (a kolegové kdyžtak snad případný omyly opraví).

Za prvé: je to všechno děsně překombinovanej bordel a je opruz to řešit.

Za druhé: PEAP sám o sobě IIRC definuje jenom "obálku" a protokol uvnitř může být všelijaký. V MS světě je/byl myslím nejobvyklejší EAP/MSCHAPv2. Takže pokud bys chtěl nějak porovnávat hashe, musel bys mít v LDAPu uložený ten konkrétní hash, který klient použije (a to ještě za předpokladu, že to není protokol challenge-response). A když daný protokol přetane být bezpečný (což už třeba ten MSCHAPv2 není), tak klienty nijak na nový protokol nepřeklopíš (pokud by ten hash nebyl natolik nebezpečný, že by sis ho louskl sám).

Za třetí: kdybys od klienta dostal cleartext passwdord, tak to neimplikuje, že bys musel mít cleartext v LDAPu. Pro přihlašování do systému přes normální login se taky používá cleartext heslo a podle toho, co je v LDAPu za hash, se heslo zahashuje stejně a pak teprve porovnává.

Za čtvrté: co si tak matně pamatuju, tak se mi ale nedařilo Windows klienty donutit, aby posílali cleartext heslo. Možná to ale bylo daný nějakými dalšími omezeními, co jsem tam měl. Takže neříkám, že to je úplně nemožný, jenom, že mně se to z nějakýho důvodu tenkrát nepodařilo rozjet. Detaily už nevím.

Kdyby se ti podařilo nějaký řešení vymyslet a zprovoznit a byl bys ochotný se o něj podělit, byl bych ti extrémně vděčný, protože tuhle věc bych rád rozchodil taky.
« Poslední změna: 27. 07. 2017, 12:54:21 od Mirek Prýmek »

Re:Radius + ldap a šifrovaná hesla
« Odpověď #2 kdy: 27. 07. 2017, 12:52:37 »
Jo a ještě k tomuhle:
Znáte nějakou implementaci nt hashe v php nebo pythonu?
Jestli myslíš NTLM, tak ano. Stačí do googlu zadat "python NTLM".

Ale pokud se nepletu, NTLM hashe ti stejně v tomhle případě nepomůžou.

Sten

Re:Radius + ldap a šifrovaná hesla
« Odpověď #3 kdy: 27. 07. 2017, 13:30:22 »
Neumí ten váš RADIUS server používat LDAP bind pro ověření uživatele? Tím by se hashování hesel přesunulo na stranu LDAP serveru a vyhnete se obrovskému opruzu.

David1234

Re:Radius + ldap a šifrovaná hesla
« Odpověď #4 kdy: 27. 07. 2017, 13:31:33 »
A nestačilo by to heslo vzít a provést s ním LDAP bind přes ldaps? Heslo nemusí být uloženo v LDAPu v cleartextu, může tam být klidně saltovaný hash.


vojta

Re:Radius + ldap a šifrovaná hesla
« Odpověď #5 kdy: 27. 07. 2017, 13:54:41 »
Umi ldap bind autentifikace jiny nez userPassword atributem?
Pouzivatele maji v ldape vice hesel ulozenych v ruznych custom atributech.
userPassword se pouziva pro jiny system.

Re:Radius + ldap a šifrovaná hesla
« Odpověď #6 kdy: 27. 07. 2017, 15:46:54 »
Neumí ten váš RADIUS server používat LDAP bind pro ověření uživatele? Tím by se hashování hesel přesunulo na stranu LDAP serveru a vyhnete se obrovskému opruzu.
To by pořád vyžadovalo mít (od stanice) heslo v cleartextu. Čili odpadají všechny typy challenge-response autentizace.

Sten

Re:Radius + ldap a šifrovaná hesla
« Odpověď #7 kdy: 27. 07. 2017, 16:15:03 »
Umi ldap bind autentifikace jiny nez userPassword atributem?
Pouzivatele maji v ldape vice hesel ulozenych v ruznych custom atributech.
userPassword se pouziva pro jiny system.

To záleží na nastavení serveru. 389 Directory Server to neumí, alespoň ne u dokumentovaného simple bindu. U OpenLDAPu jsem viděl nějaké náznaky, ale je to bez dokumentace a pravděpodobně to není podporované. Možná přes vlastní backend pro SASL by to šlo.

To by pořád vyžadovalo mít (od stanice) heslo v cleartextu. Čili odpadají všechny typy challenge-response autentizace.

Většina LDAP serverů umí SASL, kde jde používat klidně i certifikáty.

Sten

Re:Radius + ldap a šifrovaná hesla
« Odpověď #8 kdy: 27. 07. 2017, 16:25:07 »
A nebo jestli je tam Active Directory, tak RADIUS lze ověřovat i oproti AD.

Re:Radius + ldap a šifrovaná hesla
« Odpověď #9 kdy: 27. 07. 2017, 17:33:53 »
Většina LDAP serverů umí SASL, kde jde používat klidně i certifikáty.
Podstatný je, že ten protokol "uvnitř" musí být kompatibilní s tím, co LDAP umí.

A nebo jestli je tam Active Directory, tak RADIUS lze ověřovat i oproti AD.
Proti AD jde ověřovat triviálně, to není podstata dotazu :)

Jym

Re:Radius + ldap a šifrovaná hesla
« Odpověď #10 kdy: 28. 07. 2017, 09:45:56 »
Je to jiz nekolik let co jsem to resil, ale realita byla takova, ze pokud alespon nejak bezpecne se mela resit autentizace s windows klienty pres 802.1x, tak jedine co to nativne podporovalo bylo TLS (je potreba mit ale postavenou celou x509 masinerii) nebo PEAP a pak mohli byt hesla v ldap backendu pokud se pouzil radius (jina moznost stejne neni) v plaintextu nebo NThash. Vzhledem k tomu, ze v userPassword atributu byly hashovana hesla pro pristup k ruznym systemum, tak jsme plaintext davali do mobilityPassword atributu. Pozdeji, jelikoz jsme pouzivali sambu a ta mela hesla v LMpassword atributu nebo jak se jmenoval ten atribut (byly tusim dva pro NTLMv1 a silnejsi pro NTLMv2 - ale stejne v dnesni dobe prolomitelny), tak ten MSCHAPv2 umel fungovat i proti tomuto hashi. Tak jsme zvolili tuhle moznost pak, protoze se reklo, ze lepsi nez to mit v plaintextu, tak alespon nejaky hashing...realne jsou ty hesla v dnesni dobe pri prumerne delce 8znaku a asi 3 skupiny prolomene v jednotkach tydnu, takze pokud se prijde na bezpecnostni incident, tak je alespon chvili cas provest obmenu hesel uzivatelu.

vojta

Re:Radius + ldap a šifrovaná hesla
« Odpověď #11 kdy: 29. 07. 2017, 18:52:21 »
Je možný radiusu nařídit, aby cleartext heslo z peap zašifroval nebo udělal z něho hash a až poté porovnal s ldapem?
https://stackoverflow.com/questions/9542268/freeradius-and-php-auth-script