Witam ponownie! Już jutro ruszają zajęcia w nowej grupie kursowej
W poprzednim samouczku powiedzieliśmy Ci, jak używać pam_cracklib
aby hasła w systemach były bardziej złożone pam_pwquality
zastąpiony cracklib
jak pam
domyślny moduł do sprawdzania haseł. Moduł pam_pwquality
obsługiwane również w Ubuntu i CentOS, a także wielu innych systemach operacyjnych. Moduł ten ułatwia tworzenie zasad haseł, aby mieć pewność, że użytkownicy akceptują Twoje standardy siły haseł.
Przez długi czas powszechnym podejściem do haseł było zmuszanie użytkownika do używania wielkich i małych liter, cyfr lub innych symboli. Te podstawowe zasady dotyczące złożoności haseł były szeroko promowane w ciągu ostatnich dziesięciu lat. Odbyło się wiele dyskusji na temat tego, czy jest to dobra praktyka, czy nie. Głównym argumentem przeciwko ustalaniu tak skomplikowanych warunków było to, że użytkownicy zapisują hasła na kartkach papieru i przechowują je w sposób niepewny.
Inna polityka, która została ostatnio zakwestionowana, zmusza użytkowników do zmiany haseł co x dni. Przeprowadzono badania, które wykazały, że ma to również szkodliwy wpływ na bezpieczeństwo.
Na temat tych dyskusji napisano wiele artykułów, które uzasadniają ten czy inny punkt widzenia. Ale nie o tym będziemy rozmawiać w tym artykule. W tym artykule omówimy, jak poprawnie ustawić złożoność hasła, zamiast zarządzać polityką bezpieczeństwa.
Ustawienia zasad haseł
Poniżej zobaczysz opcje polityki haseł i krótki opis każdej z nich. Wiele z nich ma parametry zbliżone do parametrów modułu cracklib
. Takie podejście ułatwia przenoszenie zasad ze starszego systemu.
- Przykro mi – Liczba znaków w nowym haśle, które NIE powinny znajdować się w starym haśle. (Domyślnie 5)
- Minlen – Minimalna długość hasła. (Domyślnie 9)
- ukredytować – Maksymalna liczba kredytów za użycie wielkich liter (jeśli parametr > 0) lub minimalna wymagana liczba wielkich liter (jeśli parametr < 0). Wartość domyślna to 1.
- l kredyt — Maksymalna liczba kredytów za użycie małych liter (jeśli parametr > 0) lub minimalna wymagana liczba małych znaków (jeśli parametr < 0). Wartość domyślna to 1.
- kredyt — Maksymalna liczba punktów za użycie cyfr (jeśli parametr > 0) lub minimalna wymagana liczba cyfr (jeśli parametr < 0). Wartość domyślna to 1.
- on wierzy — Maksymalna liczba kredytów za użycie innych symboli (jeśli parametr > 0) lub minimalna wymagana liczba pozostałych symboli (jeśli parametr < 0). Wartość domyślna to 1.
- minklasa – Ustawia wymaganą liczbę zajęć. Klasy zawierają powyższe parametry (duże i małe litery, cyfry, inne znaki). Wartość domyślna to 0.
- maks.powtórz – Maksymalna liczba powtórzeń znaku w haśle. Wartość domyślna to 0.
- maksymalne powtórzenie klasy — Maksymalna liczba kolejnych znaków w jednej klasie. Wartość domyślna to 0.
- gecoscheck – Sprawdza, czy hasło zawiera jakieś słowa z ciągów GECOS użytkownika. (Informacje o użytkowniku, tj. prawdziwe imię i nazwisko, lokalizacja itp.) Wartość domyślna to 0 (wyłączone).
- dykt – Przejdźmy do słowników cracklib.
- BADWORDS – Słowa oddzielone spacjami, które są zabronione w hasłach (nazwa firmy, słowo „hasło” itp.).
Jeśli koncepcja pożyczek brzmi dziwnie, to jest w porządku, jest to normalne. Porozmawiamy o tym więcej w kolejnych sekcjach.
Konfiguracja zasad haseł
Przed rozpoczęciem edycji plików konfiguracyjnych dobrą praktyką jest wcześniejsze zapisanie podstawowej polityki haseł. Na przykład zastosujemy następujące reguły trudności:
- Hasło musi mieć minimalną długość 15 znaków.
- Ten sam znak nie powinien powtarzać się w haśle więcej niż dwa razy.
- Klasy znaków mogą powtarzać się maksymalnie cztery razy w haśle.
- Hasło musi zawierać znaki z każdej klasy.
- Nowe hasło musi mieć 5 nowych znaków w porównaniu do starego.
- Włącz sprawdzanie GECOS.
- Zabroń słów „hasło, hasło, słowo, putorius”
Teraz, gdy ustaliliśmy zasady, możemy edytować plik /etc/security/pwquality.conf
w celu zwiększenia wymagań dotyczących złożoności haseł. Poniżej znajduje się przykładowy plik z komentarzami dla lepszego zrozumienia.
# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putorius
Jak zapewne zauważyłeś, niektóre parametry w naszym pliku są zbędne. Na przykład parametr minclass
jest zbędne, ponieważ używamy już co najmniej dwóch znaków z klasy za pomocą pól [u,l,d,o]credit
. Nasza lista słów, których nie można użyć, jest również zbędna, ponieważ zabraniamy powtarzania dowolnej klasy 4 razy (wszystkie słowa na naszej liście są pisane małymi literami). Uwzględniłem te opcje tylko po to, aby zademonstrować, jak ich używać do konfigurowania polityki haseł.
Po utworzeniu zasad możesz zmusić użytkowników do zmiany haseł przy następnym logowaniu.
Kolejną dziwną rzeczą, którą mogłeś zauważyć, są pola [u,l,d,o]credit
zawierać liczbę ujemną. Dzieje się tak dlatego, że liczby większe lub równe 0 uznają użycie znaku w haśle. Jeżeli w polu znajduje się liczba ujemna oznacza to, że wymagana jest określona ilość.
Co to są pożyczki?
Nazywam je pożyczkami, ponieważ to możliwie najdokładniej oddaje ich cel. Jeżeli wartość parametru jest większa niż 0, do długości hasła dodawana jest liczba „znaków” równa „x”. Na przykład, jeśli wszystkie parametry (u,l,d,o)credit
ustaw na 1, a wymagana długość hasła wynosiła 6, będziesz potrzebować 6 znaków, aby spełnić wymagania dotyczące długości, ponieważ każda wielka, mała litera, cyfra lub inny znak zapewni Ci jeden kredyt.
Jeśli zainstalujesz dcredit
przy 2 teoretycznie możesz użyć hasła o długości 9 znaków i uzyskać 2 znaki za cyfry, a wtedy długość hasła może już wynosić 10.
Spójrz na ten przykład. Ustawiłem długość hasła na 13, ustawiłem dcredit na 2, a wszystko inne na 0.
$ pwscore
Thisistwelve
Password quality check failed:
The password is shorter than 13 characters
$ pwscore
Th1sistwelve
18
Moja pierwsza kontrola nie powiodła się, ponieważ hasło miało mniej niż 13 znaków. Następnym razem zamieniłem literę „I” na cyfrę „1” i otrzymałem dwa kredyty za cyfry, co dało hasło równe 13.
Testowanie hasła
Pakiet libpwquality
zapewnia funkcjonalność opisaną w artykule. Do zestawu dołączony jest także program pwscore
, który ma na celu sprawdzenie złożoności hasła. Użyliśmy go powyżej, aby sprawdzić pożyczki.
Użyteczność pwscore
czyta z
Wynik jakości hasła jest powiązany z parametrem minlen
w pliku konfiguracyjnym. Ogólnie rzecz biorąc, wynik mniejszy niż 50 jest uważany za „normalne hasło”, a wynik powyżej niego jest uważany za „silne hasło”. Każde hasło, które przeszło kontrolę jakości (zwłaszcza weryfikację wymuszoną cracklib
) musi wytrzymać ataki słownikowe, a hasło z wynikiem powyżej 50 z ustawieniem minlen
nawet domyślnie brute force
ataki.
wniosek
regulacja pwquality
– jest to łatwe i proste w porównaniu z niedogodnościami użytkowania cracklib
z bezpośrednią edycją plików pam
. W tym przewodniku omówiliśmy wszystko, czego potrzebujesz podczas konfigurowania zasad haseł w systemach Red Hat 7, CentOS 7, a nawet Ubuntu. Rozmawialiśmy także o pojęciu pożyczki, o którym rzadko się pisze szczegółowo, dlatego temat ten często pozostawał niejasny dla tych, którzy wcześniej się z nim nie zetknęli.
Źródła:
Przydatne linki:
Źródło: www.habr.com