Rutoken жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

Rutoken жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

Қарапайым құпия сөздер қауіпсіз емес, ал күрделілерін есте сақтау мүмкін емес. Сондықтан олар жиі пернетақтаның немесе монитордың астындағы жабысқақ қағазға түседі. Құпия сөздер «ұмытшақ» пайдаланушылардың санасында сақталуын және қорғаныс сенімділігінің жоғалмауын қамтамасыз ету үшін екі факторлы аутентификация (2FA) бар.

Құрылғыны иелену және оның PIN кодын білу үйлесімінің арқасында PIN кодтың өзі оңайырақ және есте сақтау оңайырақ болуы мүмкін. PIN коды ұзындығының немесе кездейсоқтығындағы кемшіліктер физикалық иелену талабымен және PIN дөрекі күшіндегі шектеулермен өтеледі.

Сонымен қатар, мемлекеттік органдарда барлығының ГОСТ бойынша жұмыс істегенін қалайтыны орын алады. Linux жүйесіне кіруге арналған бұл 2FA опциясы талқыланады. Мен алыстан бастаймын.

PAM модульдері

Қосылатын аутентификация модульдері (PAM) стандартты API және қолданбаларда әртүрлі аутентификация механизмдерінің іске асырылуы бар модульдер болып табылады.
PAM-мен жұмыс істей алатын барлық утилиталар мен қолданбалар оларды таңдайды және оларды пайдаланушы аутентификациясы үшін пайдалана алады.
Іс жүзінде ол келесідей жұмыс істейді: кіру пәрмені конфигурация файлында көрсетілген модульдер арқылы барлық қажетті тексерулерді орындайтын және нәтижені кіру пәрменіне қайтаратын PAM шақырады.

librtpam

Aktiv компаниясы әзірлеген модуль отандық криптографияның соңғы стандарттарына сәйкес асимметриялық кілттерді пайдалана отырып, смарт-карталарды немесе USB токендерін пайдаланып пайдаланушылардың екі факторлы аутентификациясын қосады.

Оның жұмыс істеу принципін қарастырайық:

  • Токен пайдаланушы сертификатын және оның жеке кілтін сақтайды;
  • Куәлік пайдаланушының үй каталогында сенімді ретінде сақталады.

Аутентификация процесі келесідей жүреді:

  1. Rutoken пайдаланушының жеке куәлігін іздейді.
  2. Токен PIN коды сұралады.
  3. Кездейсоқ деректер жеке кілтте тікелей Rutoken чипінде қол қойылады.
  4. Алынған қолтаңба пайдаланушы сертификатындағы ашық кілт арқылы тексеріледі.
  5. Модуль қоңырау шалушы қолданбаға қолтаңбаны тексеру нәтижесін қайтарады.

Сіз GOST R 34.10-2012 кілттерін (ұзындығы 256 немесе 512 бит) немесе ескірген ГОСТ R 34.10-2001 көмегімен аутентификациялауға болады.

Кілттердің қауіпсіздігі туралы алаңдамаудың қажеті жоқ - олар тікелей Rutoken-де жасалады және криптографиялық операциялар кезінде оның жадынан ешқашан кетпейді.

Rutoken жүйесінде GOST-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 арқылы сертификаттарды тексеруді және сенім тізбегін құруды әлі білмейді.

Жеңіл жол (браузер арқылы)

Сынақ сертификатын алу үшін пайдаланыңыз «Rutoken тіркеу орталығы» веб-қызметі. Процесс 5 минуттан аспайды.

Геек жолы (консоль және мүмкін компилятор арқылы)

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 кодтарын пайдаланыңыз, себебі... идентификатор OpenSSL жүйесіне жол ретінде берілуі керек. Мысалы, «3132» ASCII коды «12» жолына сәйкес келеді. Ыңғайлы болу үшін пайдалануға болады жолдарды ASCII кодтарына түрлендіруге арналған онлайн қызметі.

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

Әрі қарай біз сертификат жасаймыз. Төменде екі жол сипатталатын болады: біріншісі - CA арқылы (біз сынақ CA-ларын қолданамыз), екіншісі - өздігінен қол қою. Мұны істеу үшін алдымен нұсқаулықты пайдаланып, арнайы rtengine модулі арқылы Rutoken-пен жұмыс істеу үшін OpenSSL 1.1 немесе одан кейінгі нұсқасын орнату және конфигурациялау қажет. 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 жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

Егер сіздің сертификатыңыз келесідей болса:

Rutoken жүйесінде GOST-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 модульдің толық атауын, оның әдепкі бойынша қосылғанын, модульдің басымдылығын және аутентификация параметрлерін қамтиды.
Аутентификация параметрлері операцияның сәттілігіне қойылатын талаптарды қамтиды:

  • қажет: Мұндай модульдер оң жауап қайтаруы керек. Модуль шақыруының нәтижесі теріс жауап болса, бұл аутентификация қатесіне әкеледі. Сұраныс жойылады, бірақ қалған модульдер шақырылады.
  • requisite: Қажеттіге ұқсас, бірақ аутентификацияны бірден орындамайды және басқа модульдерді елемейді.
  • жеткілікті: Егер мұндай модуль алдында қажетті немесе жеткілікті модульдердің ешқайсысы теріс нәтиже бермесе, онда модуль оң жауап қайтарады. Қалған модульдер еленбейді.
  • қосымша: Стекте қажетті модульдер болмаса және жеткілікті модульдердің ешқайсысы оң нәтиже бермесе, қосымша модульдердің кем дегенде біреуі оң нәтижені қайтаруы керек.

Толық файл мазмұны /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 жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

файлды сақтаңыз, содан кейін орындаңыз
$ sudo pam-auth-update
пайда болған терезеде оның жанына жұлдызша қойыңыз Rutoken PAM ГОСТ және нұқыңыз OK

Rutoken жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

8) Параметрлерді тексеріңіз

Барлығы конфигурацияланған, бірақ сонымен бірге жүйеге кіру мүмкіндігін жоғалтпау үшін пәрменді енгізіңіз.
$ sudo login
Пайдаланушы атыңызды енгізіңіз. Жүйе құрылғының PIN кодын талап етсе, барлығы дұрыс конфигурацияланады.

Rutoken жүйесінде GOST-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 жүйесінде GOST-2012 кілттері арқылы Linux жүйесінде жергілікті аутентификация үшін PAM модульдерін қалай пайдалануға болады

қорытынды

Linux компьютерлері Ресейдің мемлекеттік мекемелерінде барған сайын танымал бола бастады және осы ОЖ-да сенімді екі факторлы аутентификацияны орнату әрқашан оңай емес. Біз сізге осы нұсқаулықтың көмегімен «құпия сөз мәселесін» шешуге көмектесуге және оған көп уақыт жұмсамай, ДК-ге кіруді сенімді қорғауға қуаныштымыз.

Ақпарат көзі: www.habr.com

пікір қалдыру