Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Чалавек, як вядома, істота лянівая.
А тым больш калі тычыцца пытання выбару ўстойлівага пароля.

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

У маёй практыцы быў выпадак, калі ў дамене Active Directory з уключанай парольнай палітыкай людзі бухгалтары самастойна дайшлі да ідэі таго, што пароль выгляду "Pas$w0rd1234" выдатна пракатвае пад патрабаванні палітыкі. Следствам стала паўсюднае выкарыстанне дадзенага пароля ўсюды і ўсюды. Адрозніваўся ён часам толькі наборам лічбаў.

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

Кампанія Microsoft ласкава паведамляе нам па спасылцы, што кожны, хто ўмее трымаць правільна ў руках кампілятар, IDE і ўмее правільна прамаўляць C++, здольны сам сабе бібліятэку патрэбную скампіляваць і выкарыстаць па сваім разуменні. Ваш пакорны слуга на такое не здольны, вось і прыйшлося шукаць гатовае рашэнне.

Пасля доўгай гадзіны пошуку погляду былі з'яўлены два варыянты рашэння праблемы. Я, вядома, кажу пра OpenSource рашэнні. Бо платных варыянтаў - ад і да.

Варыянт №1. OpenPasswordFilter

Коммітаў няма ўжо як гады 2. Родны ўсталёўнік працуе праз раз, прыходзіцца падпраўляць рукамі. Стварае сваю асобную службу. Пры абнаўленні файла пароляў DLL-ка аўтаматычна не падхапляе змененае змесціва, трэба спыняць службу, чакаць таймаўт, рэдагаваць файл, запускаць службу.

Ня айс!

Варыянт №2. PassFiltEx

Праект актыўны, жывы і нават не трэба штурхаць халоднае цела.
Ўстаноўка фільтра заключаецца ў капіяванні двух файлаў і стварэнні некалькіх запісаў рэестра. Файл пароляў не ў локу, гэта значыць – даступны для рэдагавання і, паводле задумы аўтара праекту, ён проста вычытваецца раз у хвіліну. Таксама пры дапамозе дадатковых запісаў рэестра можна зрабіць дадатковую настройку як самога фільтра, так і нават нюансаў парольнай палітыкі.

Такім чынам.
Дадзена: дамен Active Directory test.local
тэставая працоўная станцыя Windows 8.1 (для ўмовы задачы - неістотна)
фільтр пароляў PassFiltEx

  • Спампоўваем па спасылцы апошні рэліз PassFiltEx
  • Капіюем PassFiltEx.dll в C: WindowsSystem32 (Або %SystemRoot%System32).
    Капіюем PassFiltExBlacklist.txt в C: WindowsSystem32 (Або %SystemRoot%System32). Пры неабходнасці дапаўняем яго сваімі шаблонамі
    Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець
  • Рэдагуем галінку рэестра: HKLMSYSTEMCurrentControlSetControlLsa => Notification Packages
    Дадаем PassFiltEx у канец спісу. (Пашырэнне ўказваць не трэба.) Поўны спіс пакетаў, якія выкарыстоўваюцца для праверкі, будзе выглядаць вось так.rassfm scecli PassFiltEx«.
    Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець
  • Перазагружаем кантролер дамена.
  • Паўтараем вышэйпаказаную працэдуру для ўсіх кантролераў дамена.

Таксама можна дадаць наступныя запісы рэестра, што дае вялікую гнуткасць у выкарыстанні дадзенага фільтра:

Раздзел: HKLMSOFTWAREPassFiltEx - Ствараецца аўтаматычна.

  • HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Default: PassFiltExBlacklist.txt

    BlacklistFileName - дазваляе паказаць кастамны шлях да файла з шаблонамі пароляў. Калі ў гэтым запісе рэестра пустое значэнне або яна не існуе, то выкарыстоўваецца шлях па змаўчанні, а менавіта - %SystemRoot%System32. Можна паказаць нават сеткавы шлях, АЛЕ трэба памятаць, што ў файла шаблонаў павінны быць выстаўленыя выразныя дазволы на чытанне, запіс, выдаленне, змена.

  • HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Default: 60

    TokenPercentageOfPassword - дазваляе паказаць працэнтнае ўваходжанне маскі ў новы пароль. Па змаўчанні значэнне роўна 60%. Напрыклад, калі пазначана працэнтнае ўваходжанне 60 і ў файле шаблонаў ёсць радок starwars, тады пароль Starwars1! будзе адхілены, у той час, як пароль starwars1!DarthVader88 будзе прыняты, паколькі працэнтнае ўваходжанне радка ў пароль менш за 60%

  • HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Default: 0

    RequireCharClasses - дазваляе пашырыць патрабаванні да пароляў у параўнанні са стандартнымі патрабаваннямі складанасці пароляў ActiveDirectory. Убудаваныя патрабаванні складанасці патрабуюць 3 з 5 магчымых розных відаў сімвалаў: Верхні рэгістр, Ніжні рэгістр, Лічба, Спецыяльны і Unicode. Пры дапамозе дадзенага запісу рэестра можна ўсталяваць свае патрабаванні да складанасці пароляў. Значэнне, якое можна паказаць, - гэта набор бітаў, кожны з якіх - адпаведная ступень двойкі.
    Гэта значыць - 1 = ніжні рэгістр, 2 = верхні рэгістр, 4 = лічба, 8 = спец сімвал, and 16 = сімвал Unicode.
    Такім чынам, пры значэнні 7 патрабаванні будуць “Верхні рэгістр І ніжні рэгістра І лічба ”, а пры значэнні 31 – “Верхні рэгістр І ніжні рэгістр І лічба І спец сімвал І сімвал Unicode”.
    Можна нават камбінаваць – 19 = “Верхні рэгістр І ніжні рэгістр І сімвал Unicode”.

  • Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Шэраг правілаў пры складанні файла шаблонаў:

  • Шаблоны рэгістранезалежныя. Такім чынам, запіс у файле зорныя войны и StarWarS будзе вызначацца як аднолькавае значэнне.
  • Файл блякліста перачытваецца кожныя 60 секунд, такім чынам можна спакойна яго рэдагаваць, праз хвіліну новыя дадзеныя ўжо будуць выкарыстоўвацца фільтрам.
  • На дадзены момант няма падтрымкі Unicode для праверкі па шаблоне. Гэта значыць, выкарыстоўваць Unicode знакі ў паролях можна, але фільтр не спрацуе. Гэта не ёсць крытычна, таму што не бачыў я карыстальнікаў, якія паролі ў юнікадзе выкарыстоўваюць.
  • Пажадана не дапушчаць пустых радкоў у файле шаблонаў. У дэбазе потым відаць памылку, калі адбываецца падгрузка дадзеных з файла. Фільтр працуе, але навошта лішнія эксэпшэны?

Для дэбагу ў архіве ідуць батнікі, якія дазваляюць стварыць лог і потым яго разабраць пры дапамозе, напрыклад, Microsoft Message Analyzer.
Гэты фільтр пароляў выкарыстоўвае Event Tracing for Windows.

ETW правайдэр для гэтага фільтра пароляў 07d83223-7594-4852-babc-784803fdf6c5. Так, напрыклад, можна наладзіць трасіроўку падзей пасля наступнай перазгрузкі:
logman create trace autosessionPassFiltEx -o %SystemRoot%DebugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets

Трасіроўка будзе запушчана пасля наступнай перазагрузкі сістэмы. Каб спыніць:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Усе гэтыя каманды пазначаны ў скрыптах StartTracingAtBoot.cmd и StopTracingAtBoot.cmd.

Для разавай праверкі працы фільтра можна выкарыстоўваць StartTracing.cmd и StopTracing.cmd.
Для таго, каб зручна чытаць выхлап дэбагу дадзенага фільтра ў Аналізатар паведамленняў Microsoft рэкамендуецца выкарыстоўваць наступныя наладкі:

Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Пры прыпынку лога і разбору ў Аналізатар паведамленняў Microsoft выглядае ўсё прыкладна вось такім чынам:

Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Тут відаць, што была спроба ўсталяваць пароль для карыстальніка - пра гэта нам кажа чароўнае слова SET у дэбазе. І пароль быў адхілены з прычыны наяўнасці яго ў файле шаблонаў і больш за 30% адпаведнасці ва ўводзімым тэксце.

Пры ўдалай спробе змены пароля бачым наступнае:

Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

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

Як забараніць стандартныя паролі і прымусіць усіх цябе ненавідзець

Таму будзьце гатовыя да званкоў і крыкаў: "Я ўвяла пароль як трэба, а яно не працуе."

Вынік.

Дадзеная бібліятэка дазваляе забараніць выкарыстанне простых ці стандартных пароляў у дамене Active Directory. Скажам "Не!" паролям выгляду: "P@ssw0rd", "Qwerty123", "ADm1n098".
Так, безумоўна, карыстачы пакахаюць вас яшчэ больш за такі клопат аб іх бяспецы і неабходнасці прыдумляць зубаскрышальныя паролі. І, магчыма, колькасць званкоў і просьбаў дапамагчы з паролем у Вас дадасца. Але за бяспеку даводзіцца плаціць.

Спасылкі на выкарыстаныя рэсурсы:
Артыкул на Microsoft адносна кастамнай бібліятэкі фільтра пароляў: Password Filters
PassFiltEx: PassFiltEx
Спасылка на рэліз: апошні рэліз
Спісы пароляў:
DanielMiessler lists: Спасылка.
Wordlist from weakpass.com: Спасылка.
Wordlist ад berzerk0 repo: Спасылка.
Аналізатар паведамленняў Microsoft: Microsoft Message Analyzer.

Крыніца: habr.com

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