Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

Os contrasinais sinxelos non son seguros e os complexos son imposibles de lembrar. É por iso que moitas veces acaban nunha nota adhesiva debaixo do teclado ou no monitor. Para garantir que os contrasinais permanezan na mente dos usuarios "esquecedores" e que non se perda a fiabilidade da protección, existe a autenticación de dous factores (2FA).

Debido á combinación de ter un dispositivo e coñecer o seu PIN, o propio PIN pode ser máis sinxelo e máis fácil de lembrar. As desvantaxes na lonxitude do PIN ou a aleatoriedade vense compensadas polo requisito de posesión física e as restricións á forza bruta do PIN.

Ademais, ocorre nas axencias gobernamentais que queren que todo funcione segundo GOST. Esta opción 2FA para iniciar sesión en Linux será discutida. Vou comezar de lonxe.

Módulos PAM

Os módulos de autenticación conectables (PAM) son módulos cunha API estándar e implementacións de varios mecanismos de autenticación nas aplicacións.
Todas as utilidades e aplicacións que poden funcionar con PAM recóllenas e poden usalas para a autenticación do usuario.
Na práctica, funciona algo así: o comando de inicio de sesión chama a PAM, que realiza todas as comprobacións necesarias utilizando os módulos especificados no ficheiro de configuración e devolve o resultado ao comando de inicio de sesión.

librtpam

O módulo desenvolvido pola empresa Aktiv engade a autenticación de dous factores dos usuarios mediante tarxetas intelixentes ou tokens USB mediante chaves asimétricas segundo os últimos estándares de criptografía doméstica.

Vexamos o principio do seu funcionamento:

  • O token almacena o certificado do usuario e a súa clave privada;
  • O certificado gárdase no directorio persoal do usuario como de confianza.

O proceso de autenticación ocorre do seguinte xeito:

  1. Rutoken busca o certificado persoal do usuario.
  2. Solicítase o PIN do token.
  3. Os datos aleatorios asinan na clave privada directamente no chip Rutoken.
  4. A sinatura resultante verifícase mediante a clave pública do certificado do usuario.
  5. O módulo devolve o resultado da verificación da sinatura á aplicación de chamada.

Podes autenticarte usando claves GOST R 34.10-2012 (longitude 256 ou 512 bits) ou GOST R 34.10-2001 obsoleta.

Non tes que preocuparte pola seguridade das claves: xéranse directamente en Rutoken e nunca deixan a súa memoria durante as operacións criptográficas.

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

Rutoken EDS 2.0 está certificado polo FSB e FSTEC segundo NDV 4, polo que se pode usar en sistemas de información que procesan información confidencial.

Uso práctico

Case calquera Linux moderno servirá, por exemplo, utilizaremos xUbuntu 18.10.

1) Instala os paquetes necesarios

sudo apt-get install libccid pcscd opensc
Se queres engadir un bloqueo do escritorio cun salvapantallas, instala o paquete adicionalmente libpam-pkcs11.

2) Engade un módulo PAM con soporte GOST

Cargando a biblioteca desde https://download.rutoken.ru/Rutoken/PAM/
Copie o contido do cartafol PAM librtpam.so.1.0.0 no cartafol do sistema
/usr/lib/ ou /usr/lib/x86_64-linux-gnu/ou /usr/lib64

3) Instale o paquete con librtpkcs11ecp.so

Descarga e instala o paquete DEB ou RPM dende a ligazón: https://www.rutoken.ru/support/download/pkcs/

4) Comprobe que Rutoken EDS 2.0 funciona no sistema

No terminal executamos
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Se ves a liña Rutoken ECP <no label> - significa que todo está ben.

5) Le o certificado

Comprobando que o dispositivo ten un certificado
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Se despois da liña:
Using slot 0 with a present token (0x0)

  • se mostra información sobre claves e certificados, cómpre ler o certificado e gardalo no disco. Para iso, execute o seguinte comando, onde en lugar de {id} cómpre substituír o ID de certificado que viu na saída do comando anterior:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Se se creou o ficheiro cert.crt, vaia ao paso 6).
  • Non hai nada, entón o dispositivo está baleiro. Ponte en contacto co teu administrador ou crea as claves e certifica ti mesmo seguindo o seguinte paso.

5.1) Crear un certificado de proba

Atención! Os métodos descritos para crear claves e certificados son axeitados para probar e non están pensados ​​para o seu uso no modo de combate. Para iso, debes utilizar claves e certificados emitidos pola autoridade de certificación de confianza da túa organización ou unha autoridade de certificación acreditada.
O módulo PAM está deseñado para protexer os ordenadores locais e está deseñado para funcionar en pequenas organizacións. Dado que hai poucos usuarios, o administrador pode supervisar a revogación de certificados e bloquear manualmente as contas, así como o período de validez dos certificados. O módulo PAM aínda non sabe como verificar certificados mediante CRL e construír cadeas de confianza.

O xeito doado (a través do navegador)

Para obter un certificado de proba, use servizo web "Centro de rexistro de Rutoken". O proceso non levará máis de 5 minutos.

O xeito do friki (a través da consola e posiblemente do compilador)

Comprobe a versión de OpenSC
$ opensc-tool --version
Se a versión é inferior a 0.20, actualiza ou compila rama pkcs11-tool con compatibilidade con GOST-2012 dende o noso GitHub (no momento da publicación deste artigo, a versión 0.20 aínda non se publicou) ou desde a rama mestra do proxecto principal OpenSC non máis tarde cometer 8cf1e6f

Xera un par de claves cos seguintes parámetros:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identificador de obxecto (CKA_ID) como números de carácter hexadecimal de dous díxitos da táboa ASCII. Use só códigos ASCII para caracteres imprimibles, porque... id terá que pasarse a OpenSSL como unha cadea. Por exemplo, o código ASCII "3132" corresponde á cadea "12". Para comodidade, podes usar servizo en liña para converter cadeas a códigos ASCII.

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

A continuación, crearemos un certificado. A continuación describiranse dúas formas: a primeira é a través dunha CA (utilizaremos as CA de proba), a segunda é asinada por si mesmo. Para iso, primeiro cómpre instalar e configurar OpenSSL versión 1.1 ou posterior para traballar con Rutoken a través dun módulo especial de rtengine usando o manual. Instalación e configuración de OpenSSL.
Por exemplo: para '--id 3132' en OpenSSL cómpre especificar "pkcs11:id=12«.

Podes usar os servizos dunha CA de proba, das que hai moitas, por exemplo, velaquí, velaquí и velaquí, para iso crearemos unha solicitude de certificado

Outra opción é ceder á preguiza e crear un auto asinado
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Cargando o certificado ao dispositivo
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Rexistrar o certificado no sistema

Asegúrate de que o teu certificado semella un ficheiro base64:

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

Se o teu certificado ten este aspecto:

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

entón cómpre converter o certificado do formato DER ao formato PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Comprobamos de novo que todo está en orde agora.

Engade o certificado á lista de certificados de confianza
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

A última liña protexe a lista de certificados de confianza de que outros usuarios modifiquen accidentalmente ou intencionadamente. Isto impide que alguén engada o seu certificado aquí e poida iniciar sesión no teu nome.

7) Configurar a autenticación

A configuración do noso módulo PAM é completamente estándar e faise exactamente do mesmo xeito que a configuración doutros módulos. Crear para arquivo /usr/share/pam-configs/rutoken-gost-pam contén o nome completo do módulo, se está activado por defecto, a prioridade do módulo e os parámetros de autenticación.
Os parámetros de autenticación conteñen requisitos para o éxito da operación:

  • requirido: estes módulos deben devolver unha resposta positiva. Se o resultado dunha chamada de módulo contén unha resposta negativa, isto producirá un erro de autenticación. A solicitude abandonarase, pero chamaranse os módulos restantes.
  • requisito: similar ao requirido, pero falla inmediatamente a autenticación e ignora outros módulos.
  • suficiente: se ningún dos módulos necesarios ou suficientes antes de tal módulo devolveu un resultado negativo, entón o módulo devolverá unha resposta positiva. Os módulos restantes serán ignorados.
  • opcional: se non hai módulos necesarios na pila e ningún dos módulos suficientes devolve un resultado positivo, polo menos un dos módulos opcionais debe devolver un resultado positivo.

Contido completo do ficheiro /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

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

gardar o ficheiro e, a continuación, executalo
$ sudo pam-auth-update
na xanela que aparece, pon un asterisco ao seu carón Rutoken PAM GOST e empuxa OK

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

8) Comprobe a configuración

Para entender que todo está configurado, pero ao mesmo tempo non perder a capacidade de iniciar sesión no sistema, introduza o comando
$ sudo login
Introduce o teu nome de usuario. Todo está configurado correctamente se o sistema require un código PIN do dispositivo.

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

9) Configure o ordenador para que se bloquee cando se extraia o token

Incluído no paquete libpam-pkcs11 utilidade incluída pkcs11_eventmgr, que lle permite realizar varias accións cando ocorren eventos PKCS#11.
Para axustes pkcs11_eventmgr serve como ficheiro de configuración: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Para diferentes distribucións de Linux, o comando que fai que se bloquee unha conta cando se elimina unha tarxeta intelixente ou un token será diferente. Cm. event card_remove.
A continuación móstrase un exemplo de ficheiro de configuración:

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

Despois diso, engade a aplicación pkcs11_eventmgr para iniciar. Para iso, edite o ficheiro .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Engade a liña pkcs11_eventmgr ao final do ficheiro e reinicia.

Os pasos descritos para configurar o sistema operativo pódense usar como instrucións en calquera distribución de Linux moderna, incluídas as domésticas.

Como usar os módulos PAM para a autenticación local en Linux usando as claves GOST-2012 en Rutoken

Conclusión

Os ordenadores Linux son cada vez máis populares nas axencias gobernamentais rusas e non sempre é fácil configurar unha autenticación fiable de dous factores neste sistema operativo. Estaremos encantados de axudarche a resolver o "problema do contrasinal" con esta guía e protexer de forma fiable o acceso ao teu PC sen gastar moito tempo nel.

Fonte: www.habr.com

Engadir un comentario