Створення політики паролів у Linux

І знову здрастуйте! Вже завтра розпочинаються заняття у новій групі курсу «Адміністратор Linux», у зв'язку з цим публікуємо корисну статтю на тему.

Створення політики паролів у Linux

Минулого туторіалу ми розповідали, як використовувати pam_cracklib, щоб ускладнити паролі в системах Червоний Капелюх 6 або CentOS. У Red Hat 7 pam_pwquality замінила cracklib як pam модуля за промовчанням для перевірки паролів. Модуль pam_pwquality також підтримується в Ubuntu та CentOS, а також у багатьох інших ОС. Цей модуль спрощує створення політик паролів, щоб переконатися, що користувачі приймають стандарти складності паролів.

Довгий час звичайним підходом до паролів було змусити користувача використовувати символи верхнього і нижнього регістру, цифри чи інші символи. Ці базові правила складності паролів активно пропагуються останні десять років. Було багато дискусій про те, є це гарною практикою чи ні. Основним аргументом проти встановлення таких складних умов було те, що користувачі записують паролі на папірцях та небезпечно зберігають.

Інша політика, яка нещодавно була поставлена ​​під сумнів, змушує користувачів змінювати свої паролі кожні x днів. Було проведено деякі дослідження, які показали, що це також завдає шкоди безпеці.

На тему цих дискусій було написано безліч статей, які обґрунтовували той чи інший погляд. Але це не те, що ми обговорюватимемо в цій статті. Ця стаття розповість про те, як коректно встановити складність пароля, а не керувати політикою безпеки.

Параметри політики паролів

Нижче ви побачите параметри політики паролів та короткий опис кожного з них. Багато з них схожі з параметрами в модулі cracklib. Такий підхід спрощує портування ваших політик зі старої системи.

  • difok – Кількість символів у вашому новому паролі, які не повинні бути присутніми у вашому старому паролі. (За замовчуванням 5)
  • мінлен - Мінімальна довжина пароля. (За замовчуванням 9)
  • ucredit – Максимальна кількість кредитів за використання символів верхнього регістру (якщо параметр > 0), або мінімальна кількість символів верхнього регістра (якщо параметр < 0). За замовчуванням 1.
  • lcredit — Максимальна кількість кредитів за використання символів нижнього регістру (якщо параметр > 0), або мінімальна кількість символів нижнього регістру (якщо параметр < 0). За замовчуванням 1.
  • dcredit — Максимальна кількість кредитів за використання цифр (якщо параметр > 0), або мінімальна кількість цифр (якщо параметр < 0). За замовчуванням 1.
  • ocredit — Максимальна кількість кредитів за використання інших символів (якщо параметр > 0), або мінімальна кількість інших символів (якщо параметр < 0). За замовчуванням 1.
  • minclass – Встановлює кількість потрібних класів. Класи включають вищеперелічені параметри (символи верхнього регістру, нижнього регістру, цифри, інші символи). Типово 0.
  • maxrepeat – Максимальна кількість повторень символу у паролі. Типово 0.
  • maxclassrepeat - Максимальна кількість послідовних символів в одному класі. Типово 0.
  • gecoscheck – Перевіряє, чи містить пароль будь-які слова з рядків GECOS користувача. ( Інформація про користувача, тобто справжнє ім'я, місцезнаходження тощо) За замовчуванням 0 (вимкнено).
  • dictpath - Нехай до словників cracklib.
  • погані слова – Розділені пропуском слова, які заборонені в паролях (Назва компанії, слово «пароль» тощо).

Якщо поняття кредитів звучить дивно, то нічого страшного, це нормально. Ми поговоримо про це докладніше у наступних розділах.

Конфігурація політики паролів

Перед тим, як починати редагувати файли конфігурації, гарною практикою вважається заздалегідь записати базову політику паролів. Наприклад, ми будемо використовувати такі правила складності:

  • Пароль має мати мінімальну довжину 15 символів.
  • У паролі той самий символ не повинен повторюватися більше двох разів.
  • У паролі класи символів можуть повторюватися чотири рази.
  • Пароль повинен містити символи кожного класу.
  • Новий пароль повинен мати 5 нових символів у порівнянні зі старим.
  • Увімкнути перевірку GECOS.
  • Заборонити слова «password, pass, word, putorius»

Тепер, як тільки ми виклали політику, ми можемо відредагувати файл /etc/security/pwquality.conf, щоб посилити вимоги до складності пароля Нижче наведено приклад файлу з коментарями для кращого розуміння.

# 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

Як ви могли помітити, деякі параметри в нашому файлі є надмірними. Наприклад, параметр minclass надмірний, оскільки ми вже задіємо як мінімум два символи з класу, використовуючи поля [u,l,d,o]credit. Наш список слів, які не можна використовувати також надмірний, оскільки ми заборонили повторення будь-якого класу 4 рази (всі слова у нашому списку написані символами нижнього регістру). Я ввімкнув ці параметри, щоб продемонструвати, як використовувати їх для налаштування політики паролів.
Як тільки ви створили свою політику, ви можете змусити користувачів змінити свої паролі при наступному їх вході в систему.

Ще одна дивна річ, яку ви, можливо, помітили, полягає в тому, що поля [u,l,d,o]credit містять від'ємне число. Це тому, що числа більші або рівні 0 дадуть кредит на використання символу у вашому паролі. Якщо поле містить від'ємне число, це означає, що потрібна певна кількість.

Що таке кредити?

Я називаю їх кредитами, оскільки це максимально точно передає їхнє призначення. Якщо значення параметра більше 0, ви додаєте кількість «кредитів на символи», що дорівнює «х» до довжини пароля. Наприклад, якщо всі параметри (u,l,d,o)credit встановити в 1, а потрібна довжина пароля була 6, то вам знадобиться 6 символів для задоволення вимоги довжини, тому що кожен символ верхнього регістру, нижнього регістру, цифра або інший символ дасть вам один кредит.

Якщо ви встановите dcredit в 2, ви теоретично зможете використовувати пароль завдовжки 9 символів і отримати 2 кредити на символи для цифр і тоді довжина пароля вже може бути 10.

Подивіться цей приклад. Я встановив довжину пароля 13, встановив dcredit у 2, а все інше у 0.

$ pwscore
 Thisistwelve
 Password quality check failed:
  The password is shorter than 13 characters

$ pwscore
 Th1sistwelve
 18

Моя перша перевірка провалилася, оскільки довжина пароля була меншою за 13 символів. Наступного разу я змінив букву "I" на цифру "1" і отримав два кредити за цифри, що прирівнювало пароль до 13.

Тестування пароля

Пакет libpwquality забезпечує функціонал, описаний у статті. Також з ним постачається програма pwscoreяка призначена для перевірки пароля на складність. Ми використовували її вище для перевірки кредитів.
Утиліта pwscore читає з stdin. Просто запустіть утиліту та напишіть свій пароль, вона видасть помилку або значення від 0 до 100.

Показник якості пароля співвідноситься з параметром minlen у файлі конфігурації. У цілому нині показник менше 50 сприймається як «нормальний пароль», а вище – як «сильний пароль». Будь-який пароль, який проходить перевірки на якість (особливо примусову перевірку cracklib) повинен витримати атаки словника, а пароль з показником вище 50 з налаштуванням minlen за замовчуванням навіть brute force атаки.

Висновок

Налаштування pwquality – це легко та просто в порівнянні з незручностями при використанні cracklib з прямим редагуванням файлів pam. У цьому посібнику ми розглянули все, що вам знадобиться при налаштуванні політик паролів Red Hat 7, CentOS 7 і навіть систем Ubuntu. Також ми поговорили про концепцію кредитів, про які рідко пишуть докладно, тому ця тема часто залишалася незрозумілою для тих, хто з нею раніше не стикався.

Джерела:

pwquality man page
pam_pwquality man page
pwscore man page

Корисні посилання:

Choosing Secure Passwords – Bruce Schneier
Lorrie Faith Cranor розмовляє про свої пісні в CMU
The Infamous xkcd cartoon on Entropy

Джерело: habr.com

Додати коментар або відгук