Linux-ում պասվերդների քաղաքականության ստեղծում

Բարի գալուստ կրկին! Հաջորդ օրն արդեն սկսվում են դասերը նոր խմբում։ Linux-ի ադմինիստրատոր, դրա կապակցությամբ հրապարակում ենք օգտակար հոդված այս թեմայի վերաբերյալ։

Linux-ում պասվերդների քաղաքականության ստեղծում

Վերջին դասընթացում մենք պատմել ենք, թե ինչպես օգտագործել pam_cracklib, որպեսզի դժվարացնենք գաղտնահատյուները համակարգերում Red Hat 6 կամ CentOS-ում։ Red Hat 7-ում pam_pwquality փոխարինել է cracklib որպես pam տարածքային չափորոշիչ մոդուլ միլիոններից։ Մոդուլը pam_pwquality այնպես էլ աջակցում է Ubuntu և CentOS-ում, ինչպես նաև բազմաթիվ այլ օպերացիոն համակարգերում։ Այս մոդուլը հեշտացնում է գաղտնաբառերի քաղաքականությունների մշակումը, որպեսզի վստահ լինեք, որ օգտվողները համապատասխանում են ձեր գաղտնաբառերի բարդության ստանդարտներին։

Երկար ժամանակ սովորական կեցվածքը գաղտնաբառերի նկատմամբ եղել է ստիպելը օգտվողներին օգտագործել մեջ նրանց մեծ և փոքր տառեր, թվեր կամ այլ խորհուրդներ։ Այս հիմք եղած գաղտնաբառերի բարդության կանոնները ակտիվորեն մասշտաբավորվում են վերջին տասը տարում։ Չկա ինֆորմացիա, թե արդյոք սա լավ պրակտիկա է։ Դրա դեմ հիմնական արգումենտը եղել է, որ օգտվողները գրառում են գաղտնաբառերը թղթով և անապահով պահում։

Մյուս քաղաքականությունը, որը վերջերս կասկածի տակ է դրվեց, ստիպում է օգտվողներին փոխել իրենց գաղտնաբառերը յուրաքանչյուր x օրում։ Բազմաթիվ հետազոտություններ են իրականացվել, որոնք ցույց են տվել, որ սա նույնպես վնասում է անվտանգության։

Այս բանավիճությունների շուրջ բազմաթիվ հոդվածներ են գրվել, որոնք հիմնավորում են այդ կամ այն ​​տարածված կետը։ Բայց սա այն չէ, որ մենք քննարկելու ենք այս հոդվածում։ Այս հոդվածը կպատմի, թե ինչպես ճիշտ սահմանել գաղտնաբառերի բարդությունը, այլ ոչ թե կառավարել անվտանգության քաղաքականությունը։

Գաղտնաբառերի քաղաքականության պարամետրերը

Երեկ ձեզ կցուցադրենք գաղտնաբառերի քաղաքականության պարամետրերը և յուրաքանչյուրի կարճ նկարագիր։ Նրանք շատ նման են cracklibմոդուլի պարամետրերին։ Այս մոտեցումը հեշտացնում է ձեր քաղաքականությունները հին համակարգից տեղափոխել։

  • difok – Ձեր նոր գաղտնաբառի մեջ առկա չպետք լինի ձեր հին գաղտնաբառի նշանները։ (Բաժանեք 5)
  • minlen – Գաղտնաբառի նվազագույն երկարությունը։ (Բաժանեք 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 բառարանների ուղի.
  • badwords – Մասնակի espacios-ով բաժանված արգելված բառեր գաղտնաբառերում (ընկերության անուն, «գաղտնաբառ» բառ և այլն):

Եթե վարկերի հասկացությունը ձեզ համար անհանգիստ է, ոչինչ: Դա նորմալ է: Մենք այս թեմայով ավելի մանրամասն խոսելու ենք հաջորդ բաժիններում:

Գաղտնաբառերի քաղաքականության կարգավորումը

Նախքան կարգավորող ֆայլերը խմբագրելը, լավ պրակտիկա է հաշվի առնել գաղտնաբառերի հիմնական քաղաքականությունը: Օրինակ, մենք կիրառում ենք հետևյալ դժվարության կանոնները:

  • Գաղտնաբառը պետք է ունենա առնվազն 15 սիմվոլ:
  • Գաղտնաբառում նույն սիմվոլը չպետք է կրկնվի 2-ից ավելի անգամ:
  • Գաղտնաբառում դասերի սիմվոլները կարող են կրկնվել մինչև 4 անգամ:
  • Գաղտնաբառը պետք է պարանի յուրաքանչյուր դասի սիմվոլներ:
  • Նոր գաղտնաբառը պետք է ունենա 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 ավելորդ է, քանի որ մենք արդեն օգտագործում ենք առնվազն 2 սիմվոլ որևէ դասից, օգտագործելով դաշտերը [u,l,d,o]credit. Մեր արգելված բառերի ցուցակը նույնպես ավելորդ է, քանի որ մենք արգելել ենք կրկնություններ 4 անգամ (մեր ցուցակներում բոլորը թույլատրվում են փոքրատառերով): Ես ներառում եմ այս պարամետրերը միայն, որպեսզի ցույց տամ, թե ինչպես դրանք օգտագործել գաղտնաբառերի քաղաքականության կարգավորման համար:
Երբ դուք ստեղծել եք ձեր քաղաքականությունը, կարող եք պարտադիր սահմանել օգտագործողների գաղտնաբառերը փոխել հաջորդ անգամ, երբ նրանք մուտք են գործում համակարգ.

Մյուս սովորական բաներից, որոնք դուք, միգուցե, նկատել եք, այն է, որ դաշտերը [u,l,d,o]credit բովանդակություն են պարունակում բացասական թիվ: Սա այն պատճառով է, որ 0-ի կամ ավել թվերը կբերեն վարկի օգտագործման համար սիմվոլի, որ դեպքում, եթե դաշտը բացասական թիվ ունի, դա նշում է, որ պահանջվում է որոշակի քանակություն:

Ինչպես են տրամադրվում վարկերը (credit)?

Ես դրանք անվանում եմ կրեդիտներ, քանի որ դա առավելագույնս ճշգրտորեն արտահայտում է դրանց նշանակությունը: Եթե պարամետի արժեքը մեծ է 0, ապա դուք ավելացնում եք "սիմվոլների համար կրեդիտ" հավասար "x" պասվորդի երկարությանը: օրինակ, եթե բոլոր պարամետրերը (u,l,d,o)credit դրեք 1, իսկ պահանջվող պարգևի երկարությունը 6 էր, ապա պետք է ունենալ 6 սիմվոլ, որպեսզի բավարարեք երկարության պահանջը, քանի որ յուրաքանչյուր մեծատառ, փոքրատառ, թիվ կամ այլ սիմվոլ ձեզ կտա մեկ կրեդիտ:

Եթե դուք դնելով dcredit 2, ապա դուք տեսականորեն կարող եք օգտագործել 9 սիմվոլ երկարությամբ պարգև և ստանալ 2 կրեդիտ սիմվոլի համար թվերի, այնպես որ պարգևի երկարությունը կարող է արդեն լինել 10:

Դիտեք այս օրինակը: Ես սահմանեցի պարգևի երկարությունը 13, տեղադրեցի dcredit-ը 2, իսկ մյուս ամեն ինչը 0:

$ pwscore
 Thisistwelve
 Պարգևի որակի ստուգումը ձախողվեց:
  Պարգևը կարճ է 13 սիմվոլից

$ pwscore
 Th1sistwelve
 18

Իմ առաջին ստուգումը ձախողվեց, քանի որ պարգևի երկարությունը եղել էր 13 սիմվոլից պակաս: Վերջին անգամ ես փոխեցի "I" տառը "1" թվով և ստացա երկու կրեդիտ թվերի համար, ինչը հավասարեցրեց պարգևը 13-ի:

Պարգևի թեստավորում

Պակետ libpwquality ներդաշնակացնում է այն ֆունկցիոնալը, որը նկարագրված է հոդվածում: Այնուհետև գրվում է ծրագիր pwscore, որը նախատեսված է պարգևը բարդության համար ստուգելու: Մենք օգտագործել ենք այն վերևում, կրեդիտների ստուգման համար.
Տրոն pwscore կարդում է stdin. Պարզապես գործարկեք գործիքը և գրեք ձեր պարգևը, այն կներկայացնի սխալ կամ արժեք 0-ից 100:

Պարգևի որակի ցուցանիշը համապատասխանվում է minlen կոնֆիգուրացիայի ֆայլի պարամետրը: Ընդհանուր առմամբ, որակյալ ցուցանիշը, որը փոքր է 50, դիտվում է որպես «սովորական պարգև», իսկ ավելի բարձր՝ որպես «ուժեղ պարգև»: Յուրաքանչյուր պարգև, որը անցնում է որակի ստուգումները (特别是在 ստիպողական ստուգումը cracklib) պետք է դիմանա բառարանային հարձակումներին, իսկ 50-ից բարձր ցուցանիշ ունեցող պարգևը `ա լծային միջավայրի կարգավորումներով, նույնիսկ minlen brute force հարձակման դեմ: pwquality

Ավարտ

Հավելված ասել է, որ դա հեշտ է և պարզ, համեմատաբար ֆայլերի ուղիղ խմբագրման դժվարությունների հետ: Այս ձեռնարկում մենք քննարկել ենք ամենը, ինչ ձեզ հարկավոր է Red Hat 7, CentOS 7 և նույնիսկ Ubuntu համակարգերում պարգևների քաղաքականությունը կարգավորելու համար: Նույնպես, մենք խոսեցինք կրեդիտների երևույթի մասին, որի մասին հազվադեպ են մանրամասն գրում, հետևաբար, այս թեման հաճախ մնում էր անբացատրելի նրանց համար, ովքեր նախկինում դրան չեն հանդիպել: cracklib pwquality man page pampam_pwquality man page

Աղբյուրներ:

pwscore man page
Ընտրելով անվտանգ պարգևներ – Բրյուս Շնայեր
Լորի Ֆեյթ Կրականը քննարկում է իր պարգևների ուսումնասիրությունները CMU-ում

Օգտակար հղումներ:

Հռչակավոր xkcd խումբը Երաժշտության մասին
Օպերացիոն համակարգեր: Երեք հեշտ կտորներ: Ա մասը 4:Փոխադրիչի համաներում (թարգմանություն)
Եվ կրկին բարև!

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster