Przejście z MD5 na SHA512 w systemach RedHat/CentOS 5.x (Fedora 9)
Napisał: Patryk Krawaczyński
16/03/2013 w Bezpieczeństwo Brak komentarzy. (artykuł nr 401, ilość słów: 217)
S
ystemy z rodziny RHEL w wersji 5‘tej korzystają z kryptograficznej funkcji skrótu MD5 do przechowywania haseł systemowych. Nie jest to zły algorytm, ale nie na tyle dobry i trudny do złamania – aby obecnie korzystać z jego możliwości. W celu zmiany metody szyfrowania z MD5 na SHA512, która jest o wiele bezpieczniejsza (i używana standardowo w wersji 6.x) wystarczy wydać polecenie:
authconfig --passalgo=sha512 --update
Spowoduje to wprowadzenie zmian w plikach: /etc/login.defs
oraz /etc/pam.d/system-auth
:
--- /etc/login.defs --- # Use MD5 or DES to encrypt password? Red Hat use MD5 by default. MD5_CRYPT_ENAB no ENCRYPT_METHOD SHA512 --- /etc/pam.d/system-auth --- password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
Od tego momentu wszystkie hasła zaszyfrowane w MD5 w pliku /etc/shadow
z postaci:
root:$1$emxykVlN$wjTIYL1ZAAI.qj6PSOEYT.:15780:0:99999:7:::
zostaną zamienione na:
root:$6$rounds=95000$Il6J8/w3$f5uUXoyBIOtEoy3Y3dsA53f6FYccKXJVfsFFx aiFBNb94GhbvPx.ggTxcydbXYDLaJZxq7Ng9NovtHa.RhzTf1:15780:0:99999:7:::
Ciekawą opcją przy używaniu SHA512 jest opcja rounds – określa ona ilość “przebiegów” szyfrowania (standardowo 5000), czyli od strony technicznej wygląda to następująco:
klucz = szyfruj(hasło) dla od 1 do 5000 wykonaj klucz = szyfruj(klucz)
Jeśli chcemy zaimplementować większą liczbę rund szyfrowania (co znacznie utrudnia złamanie hasła) wystarczy w pliku /etc/pam.d/system-auth
do w/w linii dodać kolejny parametr rounds=95000. W wersji 6.x możemy dodać zakres rund do pliku /etc/login.defs
:
SHA_CRYPT_MIN_ROUNDS 95000 SHA_CRYPT_MAX_ROUNDS 105000
Więcej informacji: Support for SHA-256 and SHA-512 passwords