Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

Les contrasenyes senzilles no són segures i les complexes són impossibles de recordar. És per això que sovint acaben en una nota adhesiva sota el teclat o al monitor. Per garantir que les contrasenyes romanguin a la ment dels usuaris "oblidatius" i que no es perdi la fiabilitat de la protecció, hi ha una autenticació de dos factors (2FA).

A causa de la combinació de tenir un dispositiu i conèixer-ne el PIN, el PIN en si pot ser més senzill i més fàcil de recordar. Els desavantatges en la longitud o l'aleatorietat del PIN es compensen amb el requisit de possessió física i les restriccions a la força bruta del PIN.

A més, passa a les agències governamentals que volen que tot funcioni segons GOST. Es comentarà aquesta opció 2FA per iniciar sessió a Linux. Començaré de lluny.

Mòduls PAM

Els mòduls d'autenticació connectables (PAM) són mòduls amb una API estàndard i implementacions de diversos mecanismes d'autenticació a les aplicacions.
Totes les utilitats i aplicacions que poden funcionar amb PAM les recullen i les poden utilitzar per a l'autenticació dels usuaris.
A la pràctica, funciona una cosa així: l'ordre d'inici de sessió crida a PAM, que realitza totes les comprovacions necessàries utilitzant els mòduls especificats al fitxer de configuració i torna el resultat a l'ordre d'inici de sessió.

librtpam

El mòdul desenvolupat per l'empresa Aktiv afegeix l'autenticació de dos factors dels usuaris mitjançant targetes intel·ligents o fitxes USB mitjançant claus asimètriques segons els últims estàndards de criptografia domèstica.

Vegem el principi del seu funcionament:

  • El testimoni emmagatzema el certificat de l'usuari i la seva clau privada;
  • El certificat es desa al directori inicial de l'usuari com a de confiança.

El procés d'autenticació es produeix de la següent manera:

  1. Rutoken cerca el certificat personal de l'usuari.
  2. Es demana el PIN del testimoni.
  3. Les dades aleatòries es signen a la clau privada directament al xip Rutoken.
  4. La signatura resultant es verifica mitjançant la clau pública del certificat de l'usuari.
  5. El mòdul retorna el resultat de la verificació de la signatura a l'aplicació de trucada.

Podeu autenticar-vos amb les claus GOST R 34.10-2012 (256 o 512 bits de longitud) o la GOST R 34.10-2001 obsoleta.

No us haureu de preocupar per la seguretat de les claus: es generen directament a Rutoken i mai deixen la seva memòria durant les operacions criptogràfiques.

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

Rutoken EDS 2.0 està certificat per l'FSB i FSTEC segons NDV 4, per tant es pot utilitzar en sistemes d'informació que processen informació confidencial.

Ús pràctic

Gairebé qualsevol Linux modern ho farà, per exemple utilitzarem xUbuntu 18.10.

1) Instal·leu els paquets necessaris

sudo apt-get install libccid pcscd opensc
Si voleu afegir un bloqueig d'escriptori amb un salvapantalles, instal·leu el paquet addicionalment libpam-pkcs11.

2) Afegiu un mòdul PAM amb suport GOST

S'està carregant la biblioteca des de https://download.rutoken.ru/Rutoken/PAM/
Copieu el contingut de la carpeta PAM librtpam.so.1.0.0 a la carpeta del sistema
/usr/lib/ o /usr/lib/x86_64-linux-gnu/o /usr/lib64

3) Instal·leu el paquet amb librtpkcs11ecp.so

Baixeu i instal·leu el paquet DEB o RPM des de l'enllaç: https://www.rutoken.ru/support/download/pkcs/

4) Comproveu que Rutoken EDS 2.0 funciona al sistema

Al terminal executem
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Si veus la línia Rutoken ECP <no label> - vol dir que tot està bé.

5) Llegeix el certificat

Comprovació que el dispositiu té un certificat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Si després de la línia:
Using slot 0 with a present token (0x0)

  • es mostra informació sobre claus i certificats, heu de llegir el certificat i desar-lo al disc. Per fer-ho, executeu l'ordre següent, on en comptes de {id} heu de substituir l'ID de certificat que heu vist a la sortida de l'ordre anterior:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Si s'ha creat el fitxer cert.crt, aneu al pas 6).
  • no hi ha res, aleshores el dispositiu està buit. Poseu-vos en contacte amb el vostre administrador o creeu les claus i el certificat vosaltres mateixos seguint el pas següent.

5.1) Crear un certificat de prova

Atenció! Els mètodes descrits per crear claus i certificats són adequats per a proves i no estan pensats per utilitzar-los en mode combat. Per fer-ho, heu d'utilitzar claus i certificats emesos per l'autoritat de certificació de confiança de la vostra organització o una autoritat de certificació acreditada.
El mòdul PAM està dissenyat per protegir els ordinadors locals i està dissenyat per treballar en organitzacions petites. Com que hi ha pocs usuaris, l'Administrador pot controlar la revocació de certificats i bloquejar manualment els comptes, així com el període de validesa dels certificats. El mòdul PAM encara no sap com verificar els certificats mitjançant CRL i crear cadenes de confiança.

La manera fàcil (a través del navegador)

Per obtenir un certificat de prova, utilitzeu servei web "Centre de registre de Rutoken". El procés no durarà més de 5 minuts.

El camí del friki (mitjançant la consola i possiblement el compilador)

Comproveu la versió d'OpenSC
$ opensc-tool --version
Si la versió és inferior a 0.20, actualitzeu-lo o creeu-lo branca pkcs11-tool amb suport GOST-2012 des del nostre GitHub (en el moment de la publicació d'aquest article, encara no s'ha publicat la versió 0.20) o des de la branca mestra del projecte principal OpenSC no més tard compromet 8cf1e6f

Genereu un parell de claus amb els paràmetres següents:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identificador d'objecte (CKA_ID) com a números de caràcters hexadecimals de dos dígits de la taula ASCII. Utilitzeu només codis ASCII per a caràcters imprimibles, perquè... l'identificador s'haurà de passar a OpenSSL com a cadena. Per exemple, el codi ASCII "3132" correspon a la cadena "12". Per comoditat, podeu utilitzar servei en línia per convertir cadenes a codis ASCII.

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

A continuació, crearem un certificat. A continuació es descriuen dues maneres: la primera és a través d'una CA (utilitzarem CA de prova), la segona és autosignada. Per fer-ho, primer heu d'instal·lar i configurar OpenSSL versió 1.1 o posterior per treballar amb Rutoken mitjançant un mòdul de rtengine especial mitjançant el manual. Instal·lació i configuració d'OpenSSL.
Per exemple: per '--id 3132' a OpenSSL heu d'especificar "pkcs11:id=12".

Podeu utilitzar els serveis d'una CA de prova, de la qual n'hi ha molts, per exemple, aquí, aquí и aquí, per a això crearem una sol·licitud de certificat

Una altra opció és cedir a la mandra i crear un autosignat
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Carregant el certificat al dispositiu
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registre el certificat al sistema

Assegureu-vos que el vostre certificat sembli un fitxer base64:

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

Si el vostre certificat té aquest aspecte:

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

llavors heu de convertir el certificat del format DER al format PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Tornem a comprovar que tot està en ordre ara.

Afegiu el certificat a la llista de certificats de confiança
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

L'última línia protegeix la llista de certificats de confiança per evitar que altres usuaris canviïn accidentalment o intencionadament. Això impedeix que algú afegeixi el seu certificat aquí i pugui iniciar sessió en nom vostre.

7) Configura l'autenticació

La configuració del nostre mòdul PAM és completament estàndard i es fa exactament de la mateixa manera que la configuració d'altres mòduls. Crear per arxivar /usr/share/pam-configs/rutoken-gost-pam que conté el nom complet del mòdul, si està habilitat per defecte, la prioritat del mòdul i els paràmetres d'autenticació.
Els paràmetres d'autenticació contenen requisits per a l'èxit de l'operació:

  • requerit: aquests mòduls han de retornar una resposta positiva. Si el resultat d'una trucada de mòdul conté una resposta negativa, això donarà lloc a un error d'autenticació. La sol·licitud s'eliminarà, però es trucaran els mòduls restants.
  • requisit: semblant al requerit, però immediatament falla l'autenticació i ignora altres mòduls.
  • suficient: si cap dels mòduls necessaris o suficients abans d'aquest mòdul retornava un resultat negatiu, llavors el mòdul retornarà una resposta positiva. Els mòduls restants seran ignorats.
  • opcional: si no hi ha mòduls necessaris a la pila i cap dels mòduls suficients retorna un resultat positiu, almenys un dels mòduls opcionals ha de retornar un resultat positiu.

Contingut complet del fitxer /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

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

deseu el fitxer i, a continuació, executeu-lo
$ sudo pam-auth-update
a la finestra que apareix, posa un asterisc al costat Rutoken PAM GOST i feu clic OK

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

8) Comproveu la configuració

Per entendre que tot està configurat, però al mateix temps no perdre la capacitat d'iniciar sessió al sistema, introduïu l'ordre
$ sudo login
Introdueix el teu nom d'usuari. Tot està configurat correctament si el sistema requereix un codi PIN del dispositiu.

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

9) Configureu l'ordinador perquè es bloquegi quan s'extregui el testimoni

Inclòs en el paquet libpam-pkcs11 utilitat inclosa pkcs11_eventmgr, que us permet realitzar diverses accions quan es produeixen esdeveniments PKCS#11.
Per a la configuració pkcs11_eventmgr serveix com a fitxer de configuració: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Per a diferents distribucions de Linux, l'ordre que provoca el bloqueig d'un compte quan s'elimina una targeta intel·ligent o un testimoni serà diferent. Cm. event card_remove.
A continuació es mostra un exemple de fitxer de configuració:

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";
    }
}

Després d'això, afegiu l'aplicació pkcs11_eventmgr per posar en marxa. Per fer-ho, editeu el fitxer .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Afegiu la línia pkcs11_eventmgr al final del fitxer i reinicieu.

Els passos descrits per configurar el sistema operatiu es poden utilitzar com a instruccions en qualsevol distribució de Linux moderna, incloses les domèstiques.

Com utilitzar els mòduls PAM per a l'autenticació local a Linux mitjançant les claus GOST-2012 a Rutoken

Conclusió

Els ordinadors Linux són cada cop més populars a les agències governamentals russes i no sempre és fàcil configurar una autenticació fiable de dos factors en aquest sistema operatiu. Estarem encantats d'ajudar-vos a resoldre el "problema de la contrasenya" amb aquesta guia i protegir de manera fiable l'accés al vostre ordinador sense dedicar-hi molt de temps.

Font: www.habr.com

Afegeix comentari