Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

Жөнөкөй сырсөздөр коопсуз эмес, ал эми татаал сырсөздөрдү эстеп калуу мүмкүн эмес. Ошондуктан алар көбүнчө клавиатуранын же монитордун астындагы жабышчаак кагазга түшүп калышат. Сырсөздөрдүн "унутуучу" колдонуучулардын эсинде сакталышы жана коргоонун ишенимдүүлүгү жоголбоосу үчүн эки факторлуу аутентификация (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. Модуль колтамга текшерүү жыйынтыгын чакырып жаткан колдонмого кайтарат.

Сиз GOST R 34.10-2012 ачкычтарын (узундугу 256 же 512 бит) же эскирген ГОСТ Р 34.10-2001 аркылуу ырастасаңыз болот.

Ачкычтардын коопсуздугу жөнүндө кабатырлануунун кереги жок - алар түздөн-түз Rutokenде түзүлөт жана криптографиялык операциялар учурунда анын эсинен эч качан кетпейт.

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

Rutoken EDS 2.0 NDV 4 боюнча FSB жана FSTEC тарабынан тастыкталган, ошондуктан аны купуя маалыматты иштеткен маалыматтык системаларда колдонсо болот.

Практикалык колдонуу

Дээрлик бардык заманбап 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} ордуна мурунку буйруктун жыйынтыгында көргөн сертификаттын идентификаторун алмаштыруу керек:
    $ 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 мүнөттөн ашык эмес убакытты алат.

Гектин жолу (консол жана мүмкүн компилятор аркылуу)

OpenSC версиясын текшериңиз
$ opensc-tool --version
Эгерде версия 0.20дан аз болсо, анда жаңыртыңыз же түзүңүз ГОСТ-11 колдоосу менен pkcs2012-курал тармагы биздин 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 же андан кийинки нускасын орнотуп, конфигурациялашыңыз керек, колдонмону колдонуу менен атайын rtengine модулу аркылуу Rutoken менен иштөө 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 файлына окшош экенин текшериңиз:

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

Эгерде сиздин сертификатыңыз мындай көрүнсө:

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

анда сертификатты 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

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

файлды сактап, андан кийин аткарыңыз
$ sudo pam-auth-update
пайда болгон терезеде анын жанына жылдызча коюңуз Rutoken PAM ГОСТ жана пресс-релиздер OK

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

8) орнотууларды текшерүү

Баары конфигурацияланган, бирок ошол эле учурда системага кирүү мүмкүнчүлүгүн жоготпоо үчүн, буйрукту киргизиңиз
$ sudo login
Колдонуучу атыңызды киргизиңиз. Система аппараттын PIN кодун талап кылса, баары туура конфигурацияланган.

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

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 дистрибьюторунда, анын ичинде ата мекендик дистрибуцияда нускама катары колдонулушу мүмкүн.

Rutokenдеги ГОСТ-2012 баскычтарын колдонуу менен Linux'та жергиликтүү аутентификация үчүн PAM модулдарын кантип колдонуу керек

жыйынтыктоо

Linux компьютерлери Орусиянын мамлекеттик мекемелеринде барган сайын популярдуу болуп баратат жана бул ОСто ишенимдүү эки факторлуу аутентификацияны орнотуу дайыма эле оңой боло бербейт. Биз сизге бул колдонмо менен "сырсөз маселесин" чечүүгө жардам берүүгө жана ага көп убакыт коротпостон компьютериңизге кирүү мүмкүнчүлүгүн ишенимдүү коргоого кубанычтабыз.

Source: www.habr.com

Комментарий кошуу