Witaj ponownie! Już jutro zaczynają się zajęcia w nowej grupie kursu , z tej okazji publikujemy przydatny artykuł na ten temat.

W poprzednim tutorialu opowiadaliśmy, jak używać pam_cracklib, aby utrudnić hasła w systemach lub CentOS. W Red Hat 7 pam_pwquality zastąpiła cracklib jako pam jako moduł domyślny do sprawdzania haseł. Moduł pam_pwquality jest również wspierany w Ubuntu i CentOS, a także w wielu innych systemach operacyjnych. Moduł ten ułatwia tworzenie polityk haseł, aby upewnić się, że użytkownicy akceptują Twoje standardy złożoności haseł.
Przez długi czas powszechnym podejściem do haseł było zmuszanie użytkownika do używania w nich dużych i małych liter, cyfr lub innych symboli. Te podstawowe zasady złożoności haseł były aktywnie propagowane przez ostatnie dziesięć lat. Toczyło się wiele dyskusji na temat, czy jest to dobre praktyka, czy nie. Głównym argumentem przeciwko wprowadzaniu takich skomplikowanych wymagań było to, że użytkownicy zapisują hasła na kartkach i przechowują je w sposób niebezpieczny.
Inna polityka, która niedawno została poddana wątpliwość, zmusza użytkowników do zmiany ich haseł co x dni. Przeprowadzono kilka badań, które wykazały, że to również szkodzi bezpieczeństwu.
Na temat tych dyskusji napisano wiele artykułów, które uzasadniały jedną lub drugą opinię. Ale to nie jest to, co będziemy omawiać w tym artykule. Artykuł ten opowie, jak poprawnie określić stopień trudności hasła, a nie zarządzać polityką bezpieczeństwa.
Parametry polityki haseł
Poniżej zobaczysz parametry polityki haseł oraz krótkie opisy każdego z nich. Wiele z nich jest podobnych do parametrów w module cracklib. Takie podejście ułatwia przenoszenie Twoich polityk z starego systemu.
- difok – Liczba znaków w Twoim nowym haśle, które NIE powinny występować w Twoim starym haśle. (Domyślnie 5)
- minlen – Minimalna długość hasła. (Domyślnie 9)
- ucredit – Maksymalna liczba kredytów za użycie znaków wielkiej litery (jeśli parametr > 0), lub minimalna wymagana liczba znaków wielkiej litery (jeśli parametr < 0). Domyślnie 1.
- lcredit — Maksymalna liczba kredytów za użycie małych liter (jeśli parametr > 0), lub minimalna wymagana liczba małych liter (jeśli parametr < 0). Domyślnie 1.
- dcredit — Maksymalna liczba kredytów za użycie cyfr (jeśli parametr > 0), lub minimalna wymagana liczba cyfr (jeśli parametr < 0). Domyślnie 1.
- ocredit — Maksymalna liczba kredytów za użycie innych znaków (jeśli parametr > 0), lub minimalna wymagana liczba innych znaków (jeśli parametr < 0). Domyślnie 1.
- minclass – Ustawia wymaganą liczbę klas. Klasy obejmują powyższe parametry (duże litery, małe litery, cyfry, inne znaki). Domyślnie 0.
- maxrepeat – Maksymalna liczba powtórzeń znaku w haśle. Domyślnie 0.
- maxclassrepeat — Maksymalna liczba kolejnych znaków w jednej klasie. Domyślnie 0.
- gecoscheck – Sprawdza, czy hasło zawiera jakiekolwiek słowa z ciągów GECOS użytkownika. (Informacje o użytkowniku, tj. prawdziwe imię, lokalizacja, itp.) Domyślnie 0 (wyłączone).
- dictpath – Ścieżka 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 pojęcie kredytów brzmi dziwnie, nie ma w tym nic strasznego, to normalne. Porozmawiamy o tym bardziej szczegółowo w następnych rozdziałach.
Konfiguracja polityki haseł
Zanim zaczniemy edytować pliki konfiguracyjne, dobrym zwyczajem jest z góry zapisać podstawową politykę haseł. Na przykład, będziemy używać następujących reguł dotyczących złożoności:
- Hasło musi mieć minimalną długość 15 znaków.
- W haśle ten sam znak nie może powtarzać się więcej niż dwa razy.
- W haśle klasy znaków mogą powtarzać się do czterech razy.
- Hasło musi zawierać znaki z każdej klasy.
- Nowe hasło musi mieć 5 nowych znaków w porównaniu do starego.
- Włączyć sprawdzanie GECOS.
- Zabronić słów „password, pass, word, putorius”
Teraz, gdy przedstawiliśmy politykę, możemy edytować plik /etc/security/pwquality.conf, aby wzmocnić wymagania dotyczące złożoności hasła. Poniżej znajduje się przykład pliku 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 putoriusJak mogliście zauważyć, niektóre parametry w naszym pliku są zbędne. Na przykład parametr minclass jest nadmierny, ponieważ już używamy co najmniej dwóch znaków z klasy, korzystając z pól [u,l,d,o]credit. Nasza lista słów, których nie można używać, jest również nadmierna, ponieważ zabroniliśmy powtarzania jakiejkolwiek klasy 4 razy (wszystkie słowa na naszej liście są zapisane małymi literami). Włączyłem te parametry tylko po to, aby pokazać, jak używać ich do dostosowania polityki haseł.
Gdy tylko stworzysz swoją politykę, możesz zmusić użytkowników do zmiany haseł przy następnym logowaniu do .
Inną dziwną rzeczą, którą być może zauważyłeś, jest to, że pola [u,l,d,o]credit zawierają liczbę ujemną. Dzieje się tak, ponieważ liczby równe lub większe od 0 przyznają kredyt za użycie znaku w twoim haśle. Jeśli pole zawiera liczbę ujemną, oznacza to, że wymagana jest określona ilość.
Czym są kredyty (credit)?
Nazywam je kredytami, ponieważ najdokładniej oddają ich przeznaczenie. Jeśli wartość parametru jest większa od 0, dodajesz ilość „kredytów za znaki” równą „x” do długości hasła. Na przykład, jeśli wszystkie parametry (u,l,d,o)credit ustawisz na 1, a wymagana długość hasła wynosiła 6, to będziesz potrzebować 6 znaków, aby spełnić to wymaganie długości, ponieważ każdy znak dużej litery, małej litery, cyfra lub inny znak dają ci jeden kredyt.
Jeśli ustawisz dcredit na 2, teoretycznie możesz używać hasła o długości 9 znaków i uzyskać 2 kredyty za znaki dla cyfr, a wtedy długość hasła może wynosić 10.
Zobacz ten przykład. Ustawiłem długość hasła na 13, ustawiłem dcredit na 2, a wszystko inne na 0.
$ pwscore
Thisistwelve
Sprawdzenie jakości hasła nie powiodło się:
Hasło jest krótsze niż 13 znaków
$ pwscore
Th1sistwelve
18Moja pierwsza próba się nie udała, ponieważ długość hasła była krótsza niż 13 znaków. Następnym razem zmieniłem literę „I” na cyfrę „1” i otrzymałem dwa kredyty za cyfry, co sprawiło, że hasło miało długość 13.
Testowanie hasła
Pakiet libpwquality zapewnia funkcjonalność opisaną w artykule. Dostarczany jest również program pwscore, który ma służyć do sprawdzania złożoności hasła. Użyliśmy go powyżej, aby sprawdzić kredyty.
Narzędzie pwscore czyta z . Po prostu uruchom narzędzie i wpisz swoje hasło, a ono wyświetli błąd lub wartość od 0 do 100.
Wskaźnik jakości hasła odnosi się do parametru minlen w pliku konfiguracyjnym. Ogólnie wskaźnik poniżej 50 jest uważany za „normalne hasło”, a powyżej – za „silne hasło”. Każde hasło, które przechodzi testy jakości (szczególnie przymusowy test cracklib) powinno wytrzymać ataki słownikowe, a hasło z wskaźnikiem powyżej 50 w ustawieniach minlen domyślnie nawet atakom brute force .
Podsumowanie
Konfiguracja pwquality – to łatwe i proste w porównaniu z niedogodnościami przy korzystaniu z cracklib bezpośredniej edycji plików pam. W tym przewodniku omówiliśmy wszystko, co będzie potrzebne przy konfigurowaniu polityk haseł w Red Hat 7, CentOS 7, a nawet systemach Ubuntu. Poruszyliśmy również temat kredytów, o których rzadko pisze się szczegółowo, dlatego ten temat często pozostawał niejasny dla tych, którzy wcześniej się z nim nie zetknęli.
Źródła:
Przydatne linki:
Źródło: habr.com
