Стварэнне палітыкі пароляў у Linux

І зноў добры дзень! Ужо заўтра пачынаюцца заняткі ў новай групе курса "Адміністратар Linux", у сувязі з гэтым публікуем карысны артыкул па тэме.

Стварэнне палітыкі пароляў у Linux

У мінулым тутарыяле мы расказвалі, як выкарыстоўваць pam_cracklib, каб ускладніць паролі ў сістэмах Чырвоная шапка 6 ці CentOS. У Red Hat 7 pam_pwquality замяніла cracklib у якасці pam модуля па змаўчанні для праверкі пароляў. Модуль pam_pwquality таксама падтрымліваецца ў Ubuntu і CentOS, а таксама ў многіх іншых АС. Гэты модуль спрашчае стварэнне палітык пароляў, каб пераканацца, што карыстачы прымаюць вашыя стандарты складанасці пароляў.

Доўгі час звычайным падыходам да пароляў было прымусіць карыстальніка выкарыстоўваць у іх сімвалы верхняга і ніжняга рэгістра, лічбы ці іншыя сімвалы. Гэтыя базавыя правілы складанасці пароляў актыўна прапагандуюцца апошнія дзесяць гадоў. Было мноства дыскусій аб тым, з'яўляецца гэта добрай практыкай ці не. Асноўным аргументам супраць усталёўкі такіх складаных умоў было тое, што карыстачы запісваюць паролі на паперках і небяспечна захоўваюць.

Іншая палітыка, якая нядаўна была пастаўлена пад сумнеў, прымушае карыстальнікаў мяняць свае паролі кожныя x дзён. Былі праведзены некаторыя даследаванні, якія паказалі, што гэта таксама наносіць шкоду бяспецы.

На тэму гэтых дыскусій было напісана мноства артыкулаў, якія абгрунтоўвалі той ці іншы пункт гледжання. Але гэта ня тое, што мы будзем абмяркоўваць у гэтым артыкуле. Гэты артыкул раскажа аб тым, як карэктна задаць складанасць пароля, а не кіраваць палітыкай бяспекі.

Параметры палітыкі пароляў

Ніжэй вы ўбачыце параметры палітыкі пароляў і кароткае апісанне кожнага з іх. Многія з іх падобныя з параметрамі ў модулі cracklib. Такі падыход спрашчае партаванне вашых палітык са старой сістэмы.

  • мне шкада – Колькасць сімвалаў у вашым новым паролі, якія не павінны прысутнічаць у вашым старым паролі. (Па змаўчанні 5)
  • мінлен - Мінімальная даўжыня пароля. (Па змаўчанні 9)
  • ucredit – Максімальная колькасць крэдытаў за выкарыстанне сімвалаў верхняга рэгістра (калі параметр > 0), або мінімальная патрабаваная колькасць сімвалаў верхняга рэгістра (калі параметр < 0). Па змаўчанні 1.
  • крэдыт - Максімальная колькасць крэдытаў за выкарыстанне сімвалаў ніжняга рэгістра (калі параметр > 0), або мінімальная патрабаваная колькасць сімвалаў ніжняга рэгістра (калі параметр < 0). Па змаўчанні 1.
  • крэдыт - Максімальная колькасць крэдытаў за выкарыстанне лічбаў (калі параметр > 0), або мінімальная патрабаваная колькасць лічбаў (калі параметр <0). Па змаўчанні 1.
  • ён лічыць - Максімальная колькасць крэдытаў за выкарыстанне іншых сімвалаў (калі параметр > 0), або мінімальная патрабаваная колькасць іншых сімвалаў (калі параметр <0). Па змаўчанні 1.
  • minclass - Усталёўвае колькасць патрабаваных класаў. Класы складаюцца з вышэйпералічаныя параметры (знакі верхняга рэгістра, ніжняга рэгістра, лічбы, іншыя знакі). Па змаўчанні 0.
  • maxrepeat – Максімальная колькасць паўтораў сімвала ў паролі. Па змаўчанні 0.
  • maxclassrepeat - Максімальная колькасць паслядоўных сімвалаў у адным класе. Па змаўчанні 0.
  • gecoscheck - Правярае, ці ўтрымоўвае паролі якія-небудзь словы з радкоў GECOS карыстальніка. ( Інфармацыя аб карыстальніку, г.зн. сапраўднае імя, месцазнаходжанне і г.д.) Па змаўчанні 0 (выключана).
  • dictpath - Хай да слоўнікаў cracklib.
  • badwords – Падзеленыя прабелам словы, якія забароненыя ў паролях (Назва кампаніі, слова "пароль" і г. д.).

Калі паняцце крэдытаў гучыць дзіўна, нічога страшнага, гэта нармальна. Мы пагаворым пра гэта падрабязней у наступных раздзелах.

Канфігурацыя палітыкі пароляў

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

  • Пароль павінен мець мінімальную даўжыню 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 дадуць крэдыт на выкарыстанне сімвала ў вашым паролі. Калі поле ўтрымоўвае адмоўны лік, гэта значыць, што патрабуецца вызначаная колькасць.

Што такое крэдыты (credit)?

Я называю іх крэдытамі, бо гэта максімальна дакладна перадае іх прызначэнне. Калі значэнне параметра больш 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 на Entropy

Крыніца: habr.com

Дадаць каментар