Պարզ գաղտնաբառերը անվտանգ չեն, իսկ բարդ գաղտնաբառերը անհնար է հիշել: Ահա թե ինչու նրանք հաճախ հայտնվում են ստեղնաշարի կամ մոնիտորի տակ կպչուն գրության վրա: Ապահովելու համար, որ գաղտնաբառերը մնան «մոռացող» օգտատերերի մտքում և չկորցնեն պաշտպանության հուսալիությունը, կա երկու գործոն նույնականացում (2FA):
Սարք ունենալու և դրա PIN-ի իմացության համակցության շնորհիվ PIN-ն ինքնին կարող է ավելի պարզ և հեշտ հիշվող լինել: PIN-ի երկարության կամ պատահականության թերությունները փոխհատուցվում են ֆիզիկական տիրապետման պահանջով և PIN կոպիտ ուժի սահմանափակումներով:
Բացի այդ, պետական կառույցներում տեղի է ունենում, որ նրանք ցանկանում են, որ ամեն ինչ աշխատի ԳՕՍՏ-ի համաձայն: Կքննարկվի Linux մուտք գործելու այս 2FA տարբերակը: Ես կսկսեմ հեռվից.
PAM մոդուլներ
Pluggable Authentication Modules-ը (PAM) ստանդարտ API-ով և հավելվածներում նույնականացման տարբեր մեխանիզմների ներդրմամբ մոդուլներ են:
Բոլոր կոմունալ ծառայություններն ու հավելվածները, որոնք կարող են աշխատել PAM-ի հետ, վերցնում են դրանք և կարող են օգտագործել օգտատերերի նույնականացման համար:
Գործնականում այն աշխատում է այսպես. մուտքի հրամանը կանչում է PAM-ը, որը կատարում է բոլոր անհրաժեշտ ստուգումները՝ օգտագործելով կազմաձևման ֆայլում նշված մոդուլները և արդյունքը վերադարձնում է մուտքի հրամանին:
librtpam
Aktiv ընկերության կողմից մշակված մոդուլը ավելացնում է խելացի քարտերի կամ USB նշանների օգտագործող օգտատերերի երկգործոն նույնականացումը՝ օգտագործելով ասիմետրիկ բանալիներ՝ կենցաղային գաղտնագրության վերջին չափանիշներին համապատասխան:
Դիտարկենք դրա գործողության սկզբունքը.
- Նշանը պահպանում է օգտատիրոջ վկայականը և նրա անձնական բանալին.
- Վկայագիրը պահվում է օգտագործողի գլխավոր գրացուցակում՝ որպես վստահելի:
Նույնականացման գործընթացը տեղի է ունենում հետևյալ կերպ.
- Rutoken-ը որոնում է օգտատիրոջ անձնական վկայականը:
- Պահանջվում է նշանային PIN կոդը:
- Պատահական տվյալները ստորագրվում են անձնական բանալիով անմիջապես Rutoken չիպի մեջ:
- Ստացված ստորագրությունը ստուգվում է՝ օգտագործելով օգտագործողի վկայականի հանրային բանալին:
- Մոդուլը ստորագրության ստուգման արդյունքը վերադարձնում է զանգահարող հավելվածին:
Դուք կարող եք նույնականացնել՝ օգտագործելով ԳՕՍՏ Ռ 34.10-2012 ստեղները (երկարությունը՝ 256 կամ 512 բիթ) կամ հնացած ԳՕՍՏ Ռ 34.10-2001:
Դուք չպետք է անհանգստանաք բանալիների անվտանգության մասին. դրանք ստեղծվում են անմիջապես Rutoken-ում և երբեք չեն թողնում հիշողությունը ծածկագրման գործողությունների ժամանակ:
Rutoken EDS 2.0-ը հավաստագրված է FSB-ի և FSTEC-ի կողմից՝ համաձայն NDV 4-ի, հետևաբար այն կարող է օգտագործվել տեղեկատվական համակարգերում, որոնք մշակում են գաղտնի տեղեկատվություն:
Գործնական օգտագործումը
Գրեթե ցանկացած ժամանակակից Linux կարող է անել, օրինակ մենք կօգտագործենք xUbuntu 18.10:
1) Տեղադրեք անհրաժեշտ փաթեթները
sudo apt-get install libccid pcscd opensc
Եթե ցանկանում եք ավելացնել աշխատասեղանի կողպեք էկրանապահով, տեղադրեք փաթեթը լրացուցիչ libpam-pkcs11
.
2) Ավելացնել PAM մոդուլ ԳՕՍՏ աջակցությամբ
Գրադարանը բեռնվում է
Պատճենեք PAM թղթապանակի բովանդակությունը librtpam.so.1.0.0 համակարգի թղթապանակում
/usr/lib/
կամ /usr/lib/x86_64-linux-gnu/
կամ /usr/lib64
3) Տեղադրեք փաթեթը librtpkcs11ecp.so-ով
Ներբեռնեք և տեղադրեք DEB կամ RPM փաթեթը հղումից.
4) Ստուգեք, որ Rutoken EDS 2.0-ն աշխատում է համակարգում
Տերմինալում մենք կատարում ենք
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Եթե տեսնեք գիծը Rutoken ECP <no label>
- դա նշանակում է, որ ամեն ինչ կարգին է:
5) Կարդացեք վկայականը
Ստուգում, որ սարքն ունի վկայական
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Եթե տողից հետո.
Using slot 0 with a present token (0x0)
- տեղեկատվությունը ցուցադրվում է բանալիների և վկայագրերի մասին, դուք պետք է կարդացեք վկայագիրը և պահեք այն սկավառակի վրա: Դա անելու համար գործարկեք հետևյալ հրամանը, որտեղ {id}-ի փոխարեն պետք է փոխարինեք վկայագրի ID-ն, որը տեսաք նախորդ հրամանի ելքում.
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Եթե cert.crt ֆայլը ստեղծվել է, անցեք քայլ 6): - ոչինչ չկա, ապա սարքը դատարկ է: Կապվեք ձեր ադմինիստրատորի հետ կամ ինքներդ ստեղծեք բանալիներն ու վկայականը՝ հետևելով հաջորդ քայլին:
5.1) Ստեղծել թեստային վկայագիր
Ուշադրություն. Բանալիների և վկայագրերի ստեղծման նկարագրված մեթոդները հարմար են փորձարկման համար և նախատեսված չեն մարտական ռեժիմում օգտագործելու համար: Դա անելու համար դուք պետք է օգտագործեք ձեր կազմակերպության վստահելի հավաստագրման մարմնի կամ հավատարմագրված հավաստագրման մարմնի կողմից տրված բանալիներ և վկայագրեր:
PAM մոդուլը նախատեսված է տեղական համակարգիչները պաշտպանելու համար և նախատեսված է փոքր կազմակերպություններում աշխատելու համար: Քանի որ օգտատերերը քիչ են, ադմինիստրատորը կարող է վերահսկել վկայականների չեղարկումը և ձեռքով արգելափակել հաշիվները, ինչպես նաև վկայականների վավերականության ժամկետը: PAM մոդուլը դեռ չգիտի, թե ինչպես ստուգել վկայագրերը CRL-ների միջոցով և կառուցել վստահության շղթաներ:
Հեշտ ճանապարհ (բրաուզերի միջոցով)
Թեստի վկայական ստանալու համար օգտագործեք
The geek's way (վահանակի և, հնարավոր է, կոմպիլյատորի միջոցով)
Ստուգեք OpenSC տարբերակը
$ opensc-tool --version
Եթե տարբերակը 0.20-ից պակաս է, ապա թարմացրեք կամ կառուցեք
Ստեղծեք բանալիների զույգ հետևյալ պարամետրերով.
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)
--id:
օբյեկտի նույնացուցիչը (CKA_ID) որպես երկնիշ վեցնիշ նիշերի համարներ ASCII աղյուսակից: Օգտագործեք միայն ASCII կոդերը տպվող նիշերի համար, քանի որ... id-ը պետք է փոխանցվի OpenSSL-ին որպես տող: Օրինակ, ASCII կոդը «3132» համապատասխանում է «12» տողին: Հարմարության համար կարող եք օգտագործել
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Հաջորդը մենք կստեղծենք վկայագիր: Ստորև կնկարագրվեն երկու եղանակներ. առաջինը CA-ի միջոցով է (մենք կօգտագործենք թեստային CA-ներ), երկրորդը ինքնստորագրված է: Դա անելու համար նախ անհրաժեշտ է տեղադրել և կարգավորել OpenSSL 1.1 կամ ավելի նոր տարբերակը Rutoken-ի հետ աշխատելու համար հատուկ rtengine մոդուլի միջոցով՝ օգտագործելով ձեռնարկը:
Օրինակ՝ «-ի համար-id 3132
«OpenSSL-ում դուք պետք է նշեք»pkcs11:id=12
»:
Դուք կարող եք օգտվել փորձնական CA-ի ծառայություններից, որոնցից շատերը կան, օրինակ.
Մեկ այլ տարբերակ է տրվել ծուլությանը և ստեղծել ինքնավստահություն
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Վկայականի վերբեռնում սարքում
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) վկայականը գրանցել համակարգում
Համոզվեք, որ ձեր վկայականը նման է base64 ֆայլի.
Եթե ձեր վկայականն այսպիսի տեսք ունի.
այնուհետև դուք պետք է վկայագիրը փոխարկեք DER ձևաչափից PEM ձևաչափի (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Կրկին ստուգում ենք, որ հիմա ամեն ինչ կարգին է։
Վկայագիրը ավելացրեք վստահելի վկայագրերի ցանկին
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Վերջին տողը պաշտպանում է վստահելի վկայագրերի ցանկը այլ օգտատերերի կողմից պատահական կամ դիտավորյալ փոփոխություններից: Սա թույլ չի տալիս որևէ մեկին ավելացնել իր վկայականն այստեղ և կարողանա մուտք գործել ձեր անունից:
7) Ստեղծեք նույնականացում
Մեր PAM մոդուլի կարգավորումը լիովին ստանդարտ է և կատարվում է ճիշտ այնպես, ինչպես այլ մոդուլների տեղադրումը: Ստեղծել ֆայլի համար /usr/share/pam-configs/rutoken-gost-pam
որը պարունակում է մոդուլի ամբողջական անվանումը, անկախ նրանից, թե արդյոք այն միացված է լռելյայն, մոդուլի առաջնահերթությունը և նույնականացման պարամետրերը:
Նույնականացման պարամետրերը պարունակում են գործողության հաջողության պահանջներ.
- պահանջվում է. Նման մոդուլները պետք է դրական պատասխան տան: Եթե մոդուլի կանչի արդյունքը պարունակում է բացասական պատասխան, դա կհանգեցնի նույնականացման սխալի: Հարցումը կհեռացվի, բայց մնացած մոդուլները կկանչվեն:
- պարտադիր: Նման է պահանջվողին, բայց անմիջապես ձախողվում է իսկությունը և անտեսում այլ մոդուլներ:
- բավարար. Եթե նման մոդուլից առաջ պահանջվող կամ բավարար մոդուլներից ոչ մեկը բացասական արդյունք չի տվել, ապա մոդուլը դրական պատասխան կտա: Մնացած մոդուլները անտեսվելու են:
- կամընտիր. Եթե փաթեթում չկան պահանջվող մոդուլներ, և բավարար մոդուլներից և ոչ մեկը դրական արդյունք չի տալիս, ապա կամընտիր մոդուլներից առնվազն մեկը պետք է դրական արդյունք տա:
Ֆայլի ամբողջական բովանդակությունը /usr/share/pam-configs/rutoken-gost-pam
:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so
պահպանել ֆայլը, այնուհետև գործարկել
$ sudo pam-auth-update
երևացող պատուհանում կողքին աստղանիշ դրեք Rutoken ՊԱՄ ԳՕՍՏ և կտտացրեք OK
8) Ստուգեք կարգավորումները
Հասկանալու համար, որ ամեն ինչ կազմաձևված է, բայց միևնույն ժամանակ չի կորցնում համակարգ մուտք գործելու ունակությունը, մուտքագրեք հրամանը.
$ sudo login
Մուտքագրեք ձեր օգտվողի անունը: Ամեն ինչ ճիշտ է կազմաձևված, եթե համակարգը պահանջում է սարքի PIN կոդ:
9) Կարգավորեք համակարգիչը, որպեսզի այն արգելափակվի, երբ նշանը հանվի
Ներառված է փաթեթում libpam-pkcs11
ներառված կոմունալ pkcs11_eventmgr,
որը թույլ է տալիս կատարել տարբեր գործողություններ, երբ տեղի են ունենում PKCS#11 իրադարձություններ:
Կարգավորումների համար pkcs11_eventmgr
ծառայում է որպես կազմաձևման ֆայլ՝ /etc/pam_pkcs11/pkcs11_eventmgr.conf
Linux-ի տարբեր բաշխումների համար հրամանը, որը հանգեցնում է հաշիվը կողպելու, երբ խելացի քարտը կամ նշանը հանվում է, տարբեր կլինի: Սմ. event card_remove
.
Կազմաձևման ֆայլի օրինակ ներկայացված է ստորև.
pkcs11_eventmgr
{
# Запуск в бэкграунде
daemon = true;
# Настройка сообщений отладки
debug = false;
# Время опроса в секундах
polling_time = 1;
# Установка тайм-аута на удаление карты
# По-умолчанию 0
expire_time = 0;
# Выбор pkcs11 библиотеки для работы с Рутокен
pkcs11_module = usr/lib/librtpkcs11ecp.so;
# Действия с картой
# Карта вставлена:
event card_insert {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore ;
action = "/bin/false";
}
# Карта извлечена
event card_remove {
on_error = ignore;
# Вызываем функцию блокировки экрана
# Для GNOME
action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
# Для XFCE
# action = "xflock4";
# Для Astra Linux (FLY)
# action = "fly-wmfunc FLYWM_LOCK";
}
# Карта долгое время извлечена
event expire_time {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore;
action = "/bin/false";
}
}
Դրանից հետո ավելացրեք հավելվածը pkcs11_eventmgr
սկսելու համար: Դա անելու համար խմբագրեք .bash_profile ֆայլը՝
$ nano /home/<имя_пользователя>/.bash_profile
Ավելացրեք pkcs11_eventmgr տողը ֆայլի վերջում և վերագործարկեք:
Օպերացիոն համակարգի ստեղծման նկարագրված քայլերը կարող են օգտագործվել որպես հրահանգներ ցանկացած ժամանակակից Linux բաշխման մեջ, ներառյալ ներքինը:
Ամփոփում
Linux ԱՀ-ները գնալով ավելի տարածված են դառնում Ռուսաստանի պետական կառույցներում, և այս ՕՀ-ում հուսալի երկգործոն նույնականացում հաստատելը միշտ չէ, որ հեշտ է: Մենք ուրախ կլինենք օգնել ձեզ լուծել «գաղտնաբառի խնդիրը» այս ուղեցույցով և հուսալիորեն պաշտպանել մուտքը դեպի ձեր համակարգիչ՝ առանց դրա վրա շատ ժամանակ ծախսելու:
Source: www.habr.com