{"id":36535,"date":"2019-10-31T22:12:11","date_gmt":"2019-10-31T19:12:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene\/"},"modified":"2019-10-31T22:12:11","modified_gmt":"2019-10-31T19:12:11","slug":"kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene","title":{"rendered":"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/e6656d4db027ab2705550726d5ab1908.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSenhas simples n\u00e3o protegem, enquanto senhas complexas s\u00e3o dif\u00edceis de lembrar. Por isso, muitas vezes, elas acabam em um adesivo embaixo do teclado ou na tela. Para que as senhas permane\u00e7am na mem\u00f3ria de usu\u00e1rios \u201cesquecidos\u201d e a seguran\u00e7a n\u00e3o seja comprometida, existe a autentica\u00e7\u00e3o de dois fatores (2FA).<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Gra\u00e7as \u00e0 combina\u00e7\u00e3o de possuir um dispositivo e conhecer seu PIN, o pr\u00f3prio PIN pode ser mais simples e f\u00e1cil de lembrar. As defici\u00eancias em comprimento ou aleatoriedade do PIN s\u00e3o compensadas pela exig\u00eancia de posse f\u00edsica e restri\u00e7\u00f5es na tentativa de adivinha\u00e7\u00e3o do PIN. <\/p>\n<p>Al\u00e9m disso, em organismos governamentais, pode haver a necessidade de que tudo funcione de acordo com as normas. Sobre essa op\u00e7\u00e3o de 2FA para acesso ao Linux \u00e9 que vamos falar. Come\u00e7arei do in\u00edcio.<\/p>\n<h1>M\u00f3dulos PAM<\/h1>\n<p>\nM\u00f3dulos de Autentica\u00e7\u00e3o Plug\u00e1veis (Pluggable Authentication Modules, PAM) s\u00e3o m\u00f3dulos com uma API padr\u00e3o e implementa\u00e7\u00f5es de v\u00e1rios mecanismos de autentica\u00e7\u00e3o em aplicativos. <br \/>\nTodas as utilidades e aplicativos que conseguem trabalhar com PAM os capturam e podem usar para autentica\u00e7\u00e3o de usu\u00e1rios.<br \/>\nNa pr\u00e1tica, funciona mais ou menos assim: o comando login solicita ao PAM, que realiza todas as verifica\u00e7\u00f5es necess\u00e1rias atrav\u00e9s dos m\u00f3dulos especificados no arquivo de configura\u00e7\u00e3o e retorna o resultado ao comando login.<\/p>\n<h2>librtpam<\/h2>\n<p>\nO m\u00f3dulo desenvolvido pela empresa \"Ativo\" adiciona a autentica\u00e7\u00e3o de dois fatores para usu\u00e1rios atrav\u00e9s de cart\u00f5es inteligentes ou tokens USB usando chaves assim\u00e9tricas de acordo com os mais recentes padr\u00f5es de criptografia nacional. <\/p>\n<p>Vamos considerar o princ\u00edpio de seu funcionamento:<\/p>\n<ul>\n<li>o token armazena o certificado do usu\u00e1rio e sua chave privada;<\/li>\n<li>o certificado \u00e9 armazenado no diret\u00f3rio pessoal do usu\u00e1rio como confi\u00e1vel.<\/li>\n<\/ul>\n<p>O processo de autentica\u00e7\u00e3o ocorre da seguinte forma:<\/p>\n<ol>\n<li>No Rutoken, \u00e9 feita a busca pelo certificado pessoal do usu\u00e1rio.<\/li>\n<li>O PIN do token \u00e9 solicitado.<\/li>\n<li>\u00c9 realizada a assinatura de dados aleat\u00f3rios na chave privada diretamente no chip do Rutoken.<\/li>\n<li>A assinatura obtida \u00e9 verificada com a chave p\u00fablica do certificado do usu\u00e1rio.<\/li>\n<li>O m\u00f3dulo retorna ao aplicativo chamador o resultado da verifica\u00e7\u00e3o da assinatura.<\/li>\n<\/ol>\n<p>\u00c9 poss\u00edvel se autenticar utilizando as chaves da norma \u0413\u041e\u0421\u0422 \u0420 34.10-2012 (com comprimentos de 256 ou 512 bits) ou da antiga \u0413\u041e\u0421\u0422 \u0420 34.10-2001. <\/p>\n<p>A seguran\u00e7a das chaves pode ficar garantida \u2013 elas s\u00e3o geradas diretamente no Rutoken e nunca deixam sua mem\u00f3ria durante opera\u00e7\u00f5es criptogr\u00e1ficas.<\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/61047962c9aee308d69553201e05203d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO Rutoken ECP 2.0 \u00e9 certificado pela FSB e FSTEK de acordo com NDV 4, portanto, pode ser usado em sistemas de informa\u00e7\u00e3o que processam dados confidenciais. <\/p>\n<h2>Utiliza\u00e7\u00e3o pr\u00e1tica<\/h2>\n<p>\nPraticamente qualquer Linux moderno servir\u00e1, por exemplo, estaremos usando xUbuntu 18.10.<\/p>\n<h3>1) Instale os pacotes necess\u00e1rios<\/h3>\n<p>\n<code>sudo apt-get install libccid pcscd opensc<\/code><br \/>\nSe voc\u00ea quiser adicionar um bloqueio da \u00e1rea de trabalho com protetor de tela \u2013 instale adicionalmente o pacote <code>libpam-pkcs11<\/code>.<\/p>\n<h3>2) Adicione um m\u00f3dulo PAM com suporte a GOSTs<\/h3>\n<p>\nCarregue a biblioteca com <noindex><a rel=\"nofollow\" href=\"https:\/\/download.rutoken.ru\/Rutoken\/PAM\/\">https:\/\/download.rutoken.ru\/Rutoken\/PAM\/<\/a><\/noindex><br \/>\nCopie o conte\u00fado da pasta PAM librtpam.so.1.0.0 para a pasta do sistema<br \/>\n<code>\/usr\/lib\/<\/code> ou <code>\/usr\/lib\/x86_64-linux-gnu\/<\/code>ou <code>\/usr\/lib64<\/code><\/p>\n<h3>3) Instale o pacote com librtpkcs11ecp.so<\/h3>\n<p>\nBaixe e instale o pacote DEB ou RPM pelo link: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rutoken.ru\/support\/download\/pkcs\/\">https:\/\/www.rutoken.ru\/support\/download\/pkcs\/<\/a><\/noindex><\/p>\n<h3>4) Verifique se o Rutoken ECP 2.0 est\u00e1 funcionando no sistema<\/h3>\n<p>\nNo terminal, execute<br \/>\n<code>$ pkcs11-tool --module \/usr\/lib\/librtpkcs11ecp.so -T<\/code><br \/>\nSe voc\u00ea vir a linha <code>Rutoken ECP<\/code> \u2013 significa que est\u00e1 tudo bem.<\/p>\n<h3>5) Leia o certificado<\/h3>\n<p>\nVerifique se o dispositivo possui um certificado<br \/>\n<code>$ pkcs11-tool --module \/usr\/lib\/librtpkcs11ecp.so -O<\/code><br \/>\nSe ap\u00f3s a linha:<br \/>\n<code>Using slot 0 with a present token (0x0)<\/code><\/p>\n<ul>\n<li><b>sair informa\u00e7\u00f5es<\/b> sobre chaves e certificados, voc\u00ea precisa ler o certificado e salv\u00e1-lo no disco. Para isso, execute o seguinte comando, onde em vez de {id} deve-se substituir pelo ID do certificado que voc\u00ea viu na sa\u00edda do comando anterior:<br \/>\n<code>$ pkcs11-tool --module \/usr\/lib\/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt<\/code><br \/>\n Se o arquivo cert.crt foi criado, vamos para o ponto 6).<\/li>\n<li><b>se n\u00e3o h\u00e1 nada<\/b>, significa que o dispositivo est\u00e1 vazio. Entre em contato com o administrador ou crie chaves e certificado por conta pr\u00f3pria, seguindo o pr\u00f3ximo ponto.<\/li>\n<\/ul>\n<h4>5.1) Crie um certificado de teste<\/h4>\n<p><\/p>\n<blockquote><p>Aten\u00e7\u00e3o! Os m\u00e9todos descritos para criar chaves e certificados s\u00e3o adequados para testes e n\u00e3o devem ser utilizados em ambientes de produ\u00e7\u00e3o. Para isso, \u00e9 necess\u00e1rio usar chaves e certificados emitidos por um centro de certifica\u00e7\u00e3o confi\u00e1vel da sua organiza\u00e7\u00e3o ou por um centro de autorizador credenciado.<br \/>\nO m\u00f3dulo PAM foi criado para proteger computadores locais e \u00e9 destinado a pequenas organiza\u00e7\u00f5es. Como h\u00e1 poucos usu\u00e1rios, o Administrador pode gerenciar a revoga\u00e7\u00e3o de certificados e bloquear contas manualmente, assim como a validade dos certificados. O m\u00f3dulo PAM ainda n\u00e3o possui a capacidade de verificar certificados via CRL e construir cadeias de confian\u00e7a.<\/p><\/blockquote>\n<h4>Caminho simples (via navegador)<\/h4>\n<p>\nPara obter um certificado de teste, utilize <noindex><a rel=\"nofollow\" href=\"https:\/\/ra.rutoken.ru\/\">o servi\u00e7o web \"Centro de Registro R\u00fatoken\"<\/a><\/noindex>. O processo levar\u00e1 no m\u00e1ximo 5 minutos.<\/p>\n<h4>Caminho geek (via console e, possivelmente, compilador)<\/h4>\n<p>\n<b>Verifique a vers\u00e3o do OpenSC <\/b><br \/>\n<code>$ opensc-tool --version<\/code><br \/>\nSe a vers\u00e3o for inferior a 0.20, atualize ou compile <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AktivCo\/OpenSC\/tree\/gostr3410-2012\/\">a ramifica\u00e7\u00e3o do pkcs11-tool que suporta GOST-2012<\/a><\/noindex> do nosso GitHub (no momento da publica\u00e7\u00e3o deste artigo, a vers\u00e3o 0.20 ainda n\u00e3o havia sido lan\u00e7ada) ou da ramifica\u00e7\u00e3o master do projeto OpenSC, n\u00e3o mais tarde que <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenSC\/OpenSC\/tree\/8cf1e6f769b36bdcadc3958574305b90e88c816d\">o commit 8cf1e6f<\/a><\/noindex><\/p>\n<p>Gerando um par de chaves com os par\u00e2metros:<br \/>\n<code>--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bits com conjunto de par\u00e2metros A), GOSTR3410-2012-256:A (GOST-2012 256 bits com conjunto de par\u00e2metros A)<\/code><\/p>\n<p><code>--id: <\/code> identificador do objeto (CKA_ID) na forma de c\u00f3digos hexadecimais de dois d\u00edgitos da tabela ASCII. Utilize apenas c\u00f3digos ASCII de caracteres imprim\u00edveis, pois o id precisar\u00e1 ser passado ao OpenSSL como uma string. Por exemplo, o c\u00f3digo ASCII \"3132\" corresponde \u00e0 string \"12\". <b> Para conveni\u00eancia, voc\u00ea pode usar <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rapidtables.com\/convert\/number\/ascii-to-hex.html\">um servi\u00e7o online de convers\u00e3o de string para c\u00f3digos ASCII<\/a><\/noindex><\/b>.<\/p>\n<p><code>$ .\/pkcs11-tool --module \/usr\/lib\/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132<\/code><\/p>\n<p>Em seguida, vamos criar o certificado. Abaixo, descreveremos dois caminhos: o primeiro atrav\u00e9s de uma CA (usaremos CAs de teste), o segundo \u2013 autoassinado. Para isso, primeiro, \u00e9 necess\u00e1rio instalar e configurar o OpenSSL vers\u00e3o 1.1 ou superior para trabalhar com o R\u00fatoken atrav\u00e9s do m\u00f3dulo especial rtengine usando o guia <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.rutoken.ru\/display\/PUB\/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+%D0%B8+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0+OpenSSL\">Instala\u00e7\u00e3o e configura\u00e7\u00e3o do OpenSSL<\/a><\/noindex>.<br \/>\nPor exemplo: para '-<code>-id 3132<\/code>\u2019 no OpenSSL deve-se especificar \u00ab<code>pkcs11:id=12<\/code>&#171;. <\/p>\n<p>Voc\u00ea pode usar os servi\u00e7os de uma CA de teste, que s\u00e3o muitas, por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cryptopro.ru\/solutions\/test-ca\">aqui<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/testcert.infotecs.ru\/\">aqui <\/a><\/noindex>e <noindex><a rel=\"nofollow\" href=\"http:\/\/soft.lissi.ru\/services\/test_ca\/\">aqui<\/a><\/noindex>, para isso, criaremos um pedido de certificado<\/p>\n<p>Outra op\u00e7\u00e3o \u2013 voc\u00ea pode ser pregui\u00e7oso e criar um autoassinado<br \/>\n<code>$ openssl req -utf8 <b>-new<\/b> -keyform engine -key \"pkcs11:id=12\" -engine rtengine -out req.csr<\/code><\/p>\n<p>Carregando o certificado no dispositivo<br \/>\n<code>$ openssl req -utf8 <b>-x509<\/b> -motor de keyform -chave \"pkcs11:id=12\" -motor rtengine -out cert.cer<\/code><\/p>\n<h3>6) Registrando o certificado no sistema<\/h3>\n<p>\nCertifique-se de que seu certificado esteja no formato de arquivo base64:<\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/83a7e25541041d02365141e682bd4635.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe seu certificado estiver assim:<\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/f385e4e288a49acfb2c54be4c24749e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00e9 necess\u00e1rio converter o certificado do formato DER para o formato PEM (base64)<\/p>\n<p><code>$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM<\/code><br \/>\nVerifique novamente se agora est\u00e1 tudo em ordem.<\/p>\n<p>Adicionando o certificado \u00e0 lista de certificados confi\u00e1veis<br \/>\n<code>$ mkdir ~\/.eid<br \/>\n$ chmod 0755 ~\/.eid<br \/>\n$ cat cert.pem &gt;&gt; ~\/.eid\/authorized_certificates<br \/>\n$ chmod 0644 ~\/.eid\/authorized_certificates<\/code><br \/>\nA \u00faltima linha protege a lista de certificados confi\u00e1veis de modifica\u00e7\u00f5es acidentais ou intencionais por outros usu\u00e1rios. Isso exclui a situa\u00e7\u00e3o em que algu\u00e9m adiciona seu pr\u00f3prio certificado e consegue acessar o sistema em seu nome.<\/p>\n<h3>7) Configurando a autentica\u00e7\u00e3o <\/h3>\n<p>\nA configura\u00e7\u00e3o do nosso m\u00f3dulo PAM \u00e9 absolutamente padr\u00e3o e \u00e9 feita da mesma forma que as configura\u00e7\u00f5es de outros m\u00f3dulos. Criamos no arquivo <code>\/usr\/share\/pam-configs\/rutoken-gost-pam<\/code> contendo o nome completo do m\u00f3dulo, se ele est\u00e1 habilitado por padr\u00e3o, a prioridade do m\u00f3dulo e os par\u00e2metros de autentica\u00e7\u00e3o.<br \/>\nNos par\u00e2metros de autentica\u00e7\u00e3o, h\u00e1 requisitos para o sucesso da opera\u00e7\u00e3o:<\/p>\n<ul>\n<li>required (obrigat\u00f3rio): m\u00f3dulos desse tipo devem retornar uma resposta positiva. Se o resultado da chamada do m\u00f3dulo contiver uma resposta negativa, isso resultar\u00e1 em erro de autentica\u00e7\u00e3o. A solicita\u00e7\u00e3o ser\u00e1 descartada, mas os demais m\u00f3dulos ser\u00e3o acionados.<\/li>\n<li>requisite (necess\u00e1rio): semelhante ao required, mas resulta imediatamente em falha de autentica\u00e7\u00e3o e ignora os demais m\u00f3dulos.<\/li>\n<li>sufficient (suficiente): se nenhum dos m\u00f3dulos required ou sufficient anterior retornar um resultado negativo, o m\u00f3dulo retornar\u00e1 uma resposta positiva. Os m\u00f3dulos restantes ser\u00e3o ignorados.<\/li>\n<li>optional (opcional): se n\u00e3o houver m\u00f3dulos required na pilha e nenhum dos m\u00f3dulos sufficient retornar uma resposta positiva, pelo menos um dos m\u00f3dulos optional deve retornar uma resposta positiva.<\/li>\n<\/ul>\n<p>\nConte\u00fado completo do arquivo <code>\/usr\/share\/pam-configs\/rutoken-gost-pam<\/code>:<br \/>\n<code>Nome: Rutoken PAM GOST<br \/>\nPadr\u00e3o: sim<br \/>\nPrioridade: 800<br \/>\nTipo de Autentica\u00e7\u00e3o: Prim\u00e1rio<br \/>\nAutentica\u00e7\u00e3o: suficiente \/usr\/lib\/librtpam.so.1.0.0 \/usr\/lib\/librtpkcs11ecp.so<\/code><\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/804bd960918413e2134617b2ce31f0af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nsalvamos o arquivo, em seguida, executamos<br \/>\n<code>$ sudo pam-auth-update<\/code><br \/>\nna janela que aparece, colocamos um asterisco ao lado de <b>Rutoken PAM GOST<\/b> e clicamos em <b>OK<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/2fb2e020c943ef3a22f09985a939a1c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>8) Verifica\u00e7\u00e3o da configura\u00e7\u00e3o <\/h3>\n<p>\nPara entender se tudo est\u00e1 configurado, mas sem perder a capacidade de acessar o sistema, digite o comando<br \/>\n<code>$ sudo login<\/code><br \/>\nDigite o nome de usu\u00e1rio. Est\u00e1 tudo configurado corretamente se o sistema solicitar o PIN do dispositivo.<\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/2501ca77a0c881ebb9fe588031a2c8ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>9) Configurando a bloqueio do computador ao remover o token<\/h3>\n<p>\nO pacote inclui a ferramenta <code>libpam-pkcs11<\/code> pkcs11_eventmgr, <code>que permite executar v\u00e1rias a\u00e7\u00f5es ao ocorrer eventos PKCS#11.<\/code> Para a configura\u00e7\u00e3o,<br \/>\npkcs11_eventmgr <code>serve o arquivo de configura\u00e7\u00e3o:<\/code> Para diferentes distribui\u00e7\u00f5es Linux, o comando que aciona o bloqueio da conta ao remover cart\u00f5es inteligentes ou tokens ser\u00e1 diferente. Veja: <code>\/etc\/pam_pkcs11\/pkcs11_eventmgr.conf<\/code><br \/>\n<i>event card_remove <code>Um exemplo do arquivo de configura\u00e7\u00e3o \u00e9 apresentado abaixo:<\/code>.<\/i><br \/>\nUm exemplo de arquivo de configura\u00e7\u00e3o \u00e9 apresentado abaixo:<\/p>\n<pre><code class=\"xml\">pkcs11_eventmgr\n{\n    # Execu\u00e7\u00e3o em segundo plano\n    daemon = true;\n     \n    # Configura\u00e7\u00e3o de mensagens de depura\u00e7\u00e3o\n    debug = false;\n \n    # Tempo de intera\u00e7\u00e3o em segundos\n    polling_time = 1;\n \n    # Configura\u00e7\u00e3o do tempo limite para remover o cart\u00e3o\n    # Por padr\u00e3o, 0\n    expire_time = 0;\n \n    # Sele\u00e7\u00e3o da biblioteca pkcs11 para operar com Rutoken\n    pkcs11_module = usr\/lib\/librtpkcs11ecp.so;\n \n    # A\u00e7\u00f5es com o cart\u00e3o\n    # Cart\u00e3o inserido:\n    event card_insert {\n        # Mant\u00e9m os valores padr\u00e3o (nada acontece)\n        on_error = ignore ;\n \n        action = \"\/bin\/false\";\n    }\n \n    # Cart\u00e3o removido\n    event card_remove {\n        on_error = ignore;\n         \n        # Chama a fun\u00e7\u00e3o de bloquear a tela\n        \n        # Para GNOME \n        action = \"dbus-send --type=method_call --dest=org.gnome.ScreenSaver \/org\/gnome\/ScreenSaver org.gnome.ScreenSaver.Lock\";\n        \n        # Para XFCE\n        # action = \"xflock4\";\n        \n        # Para Astra Linux (FLY)\n        # action = \"fly-wmfunc FLYWM_LOCK\";\n    }\n \n    # Cart\u00e3o removido por um longo tempo\n    event expire_time {\n        # Mant\u00e9m os valores padr\u00e3o (nada acontece)\n        on_error = ignore;\n \n        action = \"\/bin\/false\";\n    }\n}<\/code><\/pre>\n<p>Ap\u00f3s isso, adicione o aplicativo <code>serve o arquivo de configura\u00e7\u00e3o:<\/code> ao in\u00edcio autom\u00e1tico. Para isso, edite o arquivo .bash_profile:<br \/>\n<code>$ nano \/home\/\/.bash_profile<\/code><br \/>\nAdicione a linha pkcs11_eventmgr ao final do arquivo e reinicie.<\/p>\n<p><b>Os passos descritos para configurar o sistema operacional podem ser usados como um guia em qualquer distribui\u00e7\u00e3o moderna do Linux, incluindo as nacionais. <\/b><\/p>\n<p><img decoding=\"async\" alt=\"Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken\" src=\"\/wp-content\/uploads\/2019\/07\/ec235d0d0d50e23fbf09d4849d1fdd11.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conclus\u00e3o <\/h2>\n<p>\nComputadores com Linux nas estruturas governamentais russas est\u00e3o se tornando cada vez mais populares, e configurar uma autentica\u00e7\u00e3o de dois fatores confi\u00e1vel neste sistema operacional nem sempre \u00e9 f\u00e1cil. Esperamos que este guia ajude a resolver o 'problema das senhas' e a proteger o acesso ao PC de forma confi\u00e1vel, sem gastar muito tempo.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/aktiv-company\/blog\/461199\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u044e\u0442, \u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0438\u043a\u0435\u0440\u0435 \u043f\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438\u043b\u0438 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435. \u0427\u0442\u043e\u0431\u044b \u043f\u0430\u0440\u043e\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0430\u0445 \u201c\u0437\u0430\u0431\u044b\u0432\u0447\u0438\u0432\u044b\u0445\u201d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u043b\u0430\u0441\u044c \u2013 \u0435\u0441\u0442\u044c \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (2\u0424\u0410). \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044e \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0435\u0433\u043e PIN-\u043a\u043e\u0434\u0430, \u0441\u0430\u043c PIN-\u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u0438 \u043b\u0435\u0433\u0447\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27347,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36535","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\".\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PAM-\u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 Linux \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c \u0413\u041e\u0421\u0422-2012 \u043d\u0430 \u0420\u0443\u0442\u043e\u043a\u0435\u043d\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\".\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:12:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Como usar m\u00f3dulos PAM para autentica\u00e7\u00e3o local no Linux com chaves GOST-2012 no Rutoken | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PAM-\u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 Linux \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c \u0413\u041e\u0421\u0422-2012 \u043d\u0430 \u0420\u0443\u0442\u043e\u043a\u0435\u043d\u0435 | ProHoster","og:description":".","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-ispolzovat-pam-moduli-dlya-lokalnoj-autentifikatsii-v-linux-po-klyucham-gost-2012-na-rutokene","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:12:11+00:00","article:modified_time":"2019-10-31T19:12:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36535","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 03:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:43:32","updated":"2026-01-22 03:44:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=36535"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36535\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/27347"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=36535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=36535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=36535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}