Sziasztok!
Csináltam egy pure-ftpd szervert, ami Postgres-ből autentikál.
De most kiderült, hogy egy már meglévő táblából kell autentikálnia, abban viszont SHA512-ben vannak tárolva a jelszavak.
A pure-ftpd konfig fájljában nincs utalás, hogy tudná ezt a titkosítást és eddig a google sem segített.
Valaki csinált már ilyet?
Köszönöm!
- 819 megtekintés
Hozzászólások
- The user's password, hashed using argon2i, scrypt or crypt(3). SHA1 and MD5
are also supported for legacy reasons, but shouldn't be used any more.
Pure-FTPd also accepts the "any" value for the PGSQLCrypt field.
With "any", all hash functions are sequentially tried.
* RECOMMENDATION: Do not use SHA1, MD5, or, obviously, plaintext. Unless your
system provides a decent crypt() function, use a PostgreSQL function to verify
the hashed password or use argon2i/scrypt.
https://download.pureftpd.org/pub/pure-ftpd/doc/README.PGSQL
Passwords are hashed with the most secure hash function your system supports.
Hashes are tried in this order: argon2i, scrypt, bcrypt, SHA-512, MD5.
Argon2i and scrypt are the recommended functions, and require pure-ftpd to be
compiled in presence of libsodium.
https://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
Ezek alapján akár működhet is ha crypt-et adsz meg, de ha az nem megy próbáld meg az any-t.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Köszi, próbáltam tegnap crypt-tel, ma meg any-vel, de nem szereti.
Így raktam bele a jelszót a mezőbe:
SELECT ENCODE(DIGEST('AnveshPassword','sha512'),'hex');
- A hozzászóláshoz be kell jelentkezni
Ha ezzel generálok 512-es jelszót, azt megeszi:
python2.7 -c 'import sys, crypt, getpass; print(crypt.crypt(getpass.getpass("Password: "), crypt.METHOD_SHA512))'
De abban az adatbázisban, ahhonan autentikálni kéne, ott {SHA512}-vel kezdődnek a jelszavak, és azokat nem eszi meg, akkor sem, ha $6$-ra cserélem az elejét.
- A hozzászóláshoz be kell jelentkezni
Az szerintem úgy kevés, van ott még valami salt is a dologban, illetve egy 3. $ karakter ha megnézed.
Valami ilyesmi: $6${salt}${hash}
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Hmm, hát igen, ebben lehet valami.
Annak idején így készítettem sha512 jelszavakat a dovecot-tal:
uj_pwd=$(doveadm pw -s SHA512 -p $regi_pwd)
Most ezeket a jelszavakat kéne megetetnem a pure-ftpd-vel.
- A hozzászóláshoz be kell jelentkezni
Hát azt kéne kiderítened, hogy a doveadm milyen formátumot állít elő és, hogy abból tudsz-e olyat csinálni amit a crypt megeszik.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
A baj az, hogy ha még azt a plusz $ karaktert oda is teszed akkor sem lesz jó mert a crypt nem ugyanazt base64-et használja, mint a sima sha512 hash.
Itt van egy bash implementáció:
http://www.vidarholen.net/contents/blog/?p=33
http://www.vidarholen.net/contents/junk/files/sha512crypt.bash
Ebből szerintem ki tudod hámozni azt, hogy az eredetileg tárolt hash-ből tudsz-e olyan formátumot előállítani, amit megeszik a crypt.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Az igen, ehhez lehet hogy kevés vagyok, de nézegetem, köszi!
- A hozzászóláshoz be kell jelentkezni
A doveadm ezt csinálja:
https://github.com/dovecot/core/blob/master/src/auth/password-scheme.c#…
Illetve az talán még fontosabb és nagyobb segítség, hogy hogyan bontja ki:
https://github.com/dovecot/core/blob/master/src/auth/password-scheme.c#…
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Belemászok, nagyon köszönöm.
- A hozzászóláshoz be kell jelentkezni