Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

Պարզ գաղտնաբառերը անվտանգ չեն, իսկ բարդ գաղտնաբառերը անհնար է հիշել: Ահա թե ինչու նրանք հաճախ հայտնվում են ստեղնաշարի կամ մոնիտորի տակ կպչուն գրության վրա: Ապահովելու համար, որ գաղտնաբառերը մնան «մոռացող» օգտատերերի մտքում և չկորցնեն պաշտպանության հուսալիությունը, կա երկու գործոն նույնականացում (2FA):

Սարք ունենալու և դրա PIN-ի իմացության համակցության շնորհիվ PIN-ն ինքնին կարող է ավելի պարզ և հեշտ հիշվող լինել: PIN-ի երկարության կամ պատահականության թերությունները փոխհատուցվում են ֆիզիկական տիրապետման պահանջով և PIN կոպիտ ուժի սահմանափակումներով:

Բացի այդ, պետական ​​կառույցներում տեղի է ունենում, որ նրանք ցանկանում են, որ ամեն ինչ աշխատի ԳՕՍՏ-ի համաձայն: Կքննարկվի Linux մուտք գործելու այս 2FA տարբերակը: Ես կսկսեմ հեռվից.

PAM մոդուլներ

Pluggable Authentication Modules-ը (PAM) ստանդարտ API-ով և հավելվածներում նույնականացման տարբեր մեխանիզմների ներդրմամբ մոդուլներ են:
Բոլոր կոմունալ ծառայություններն ու հավելվածները, որոնք կարող են աշխատել PAM-ի հետ, վերցնում են դրանք և կարող են օգտագործել օգտատերերի նույնականացման համար:
Գործնականում այն ​​աշխատում է այսպես. մուտքի հրամանը կանչում է PAM-ը, որը կատարում է բոլոր անհրաժեշտ ստուգումները՝ օգտագործելով կազմաձևման ֆայլում նշված մոդուլները և արդյունքը վերադարձնում է մուտքի հրամանին:

librtpam

Aktiv ընկերության կողմից մշակված մոդուլը ավելացնում է խելացի քարտերի կամ USB նշանների օգտագործող օգտատերերի երկգործոն նույնականացումը՝ օգտագործելով ասիմետրիկ բանալիներ՝ կենցաղային գաղտնագրության վերջին չափանիշներին համապատասխան:

Դիտարկենք դրա գործողության սկզբունքը.

  • Նշանը պահպանում է օգտատիրոջ վկայականը և նրա անձնական բանալին.
  • Վկայագիրը պահվում է օգտագործողի գլխավոր գրացուցակում՝ որպես վստահելի:

Նույնականացման գործընթացը տեղի է ունենում հետևյալ կերպ.

  1. Rutoken-ը որոնում է օգտատիրոջ անձնական վկայականը:
  2. Պահանջվում է նշանային PIN կոդը:
  3. Պատահական տվյալները ստորագրվում են անձնական բանալիով անմիջապես Rutoken չիպի մեջ:
  4. Ստացված ստորագրությունը ստուգվում է՝ օգտագործելով օգտագործողի վկայականի հանրային բանալին:
  5. Մոդուլը ստորագրության ստուգման արդյունքը վերադարձնում է զանգահարող հավելվածին:

Դուք կարող եք նույնականացնել՝ օգտագործելով ԳՕՍՏ Ռ 34.10-2012 ստեղները (երկարությունը՝ 256 կամ 512 բիթ) կամ հնացած ԳՕՍՏ Ռ 34.10-2001:

Դուք չպետք է անհանգստանաք բանալիների անվտանգության մասին. դրանք ստեղծվում են անմիջապես Rutoken-ում և երբեք չեն թողնում հիշողությունը ծածկագրման գործողությունների ժամանակ:

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները 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 մոդուլ ԳՕՍՏ աջակցությամբ

Գրադարանը բեռնվում է https://download.rutoken.ru/Rutoken/PAM/
Պատճենեք PAM թղթապանակի բովանդակությունը librtpam.so.1.0.0 համակարգի թղթապանակում
/usr/lib/ կամ /usr/lib/x86_64-linux-gnu/կամ /usr/lib64

3) Տեղադրեք փաթեթը librtpkcs11ecp.so-ով

Ներբեռնեք և տեղադրեք DEB կամ RPM փաթեթը հղումից. https://www.rutoken.ru/support/download/pkcs/

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-ների միջոցով և կառուցել վստահության շղթաներ:

Հեշտ ճանապարհ (բրաուզերի միջոցով)

Թեստի վկայական ստանալու համար օգտագործեք վեբ ծառայություն «Ռուտոկեն գրանցման կենտրոն». Գործընթացը կտևի ոչ ավելի, քան 5 րոպե:

The geek's way (վահանակի և, հնարավոր է, կոմպիլյատորի միջոցով)

Ստուգեք OpenSC տարբերակը
$ opensc-tool --version
Եթե ​​տարբերակը 0.20-ից պակաս է, ապա թարմացրեք կամ կառուցեք pkcs11-գործիքների մասնաճյուղ ԳՕՍՏ-2012 աջակցությամբ մեր GitHub-ից (այս հոդվածի հրապարակման պահին 0.20 թողարկումը դեռ չի թողարկվել) կամ գլխավոր OpenSC նախագծի գլխավոր մասնաճյուղից ոչ ուշ: կատարել 8cf1e6f

Ստեղծեք բանալիների զույգ հետևյալ պարամետրերով.
--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» տողին: Հարմարության համար կարող եք օգտագործել առցանց ծառայություն՝ տողերը ASCII կոդերի փոխարկելու համար.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

Հաջորդը մենք կստեղծենք վկայագիր: Ստորև կնկարագրվեն երկու եղանակներ. առաջինը CA-ի միջոցով է (մենք կօգտագործենք թեստային CA-ներ), երկրորդը ինքնստորագրված է: Դա անելու համար նախ անհրաժեշտ է տեղադրել և կարգավորել OpenSSL 1.1 կամ ավելի նոր տարբերակը Rutoken-ի հետ աշխատելու համար հատուկ rtengine մոդուլի միջոցով՝ օգտագործելով ձեռնարկը: OpenSSL-ի տեղադրում և կարգավորում.
Օրինակ՝ «-ի համար-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 ֆայլի.

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

Եթե ​​ձեր վկայականն այսպիսի տեսք ունի.

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

այնուհետև դուք պետք է վկայագիրը փոխարկեք 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

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

պահպանել ֆայլը, այնուհետև գործարկել
$ sudo pam-auth-update
երևացող պատուհանում կողքին աստղանիշ դրեք Rutoken ՊԱՄ ԳՕՍՏ և կտտացրեք OK

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

8) Ստուգեք կարգավորումները

Հասկանալու համար, որ ամեն ինչ կազմաձևված է, բայց միևնույն ժամանակ չի կորցնում համակարգ մուտք գործելու ունակությունը, մուտքագրեք հրամանը.
$ sudo login
Մուտքագրեք ձեր օգտվողի անունը: Ամեն ինչ ճիշտ է կազմաձևված, եթե համակարգը պահանջում է սարքի PIN կոդ:

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

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 բաշխման մեջ, ներառյալ ներքինը:

Ինչպես օգտագործել PAM մոդուլները Linux-ում տեղական նույնականացման համար՝ օգտագործելով ԳՕՍՏ-2012 ստեղները Rutoken-ում

Ամփոփում

Linux ԱՀ-ները գնալով ավելի տարածված են դառնում Ռուսաստանի պետական ​​կառույցներում, և այս ՕՀ-ում հուսալի երկգործոն նույնականացում հաստատելը միշտ չէ, որ հեշտ է: Մենք ուրախ կլինենք օգնել ձեզ լուծել «գաղտնաբառի խնդիրը» այս ուղեցույցով և հուսալիորեն պաշտպանել մուտքը դեպի ձեր համակարգիչ՝ առանց դրա վրա շատ ժամանակ ծախսելու:

Source: www.habr.com

Добавить комментарий