Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux
В un dos nosos artigos anteriores falamos da importancia da autenticación de dous factores nos portais corporativos das empresas. A última vez demostramos como configurar a autenticación segura no servidor web IIS.

Nos comentarios, pedíronnos que escribisemos instrucións para os servidores web máis comúns para Linux: nginx e Apache.

Vostede pregunta - escribimos.

Que necesitas para comezar?

  • Calquera distribución moderna de Linux. Fixen unha configuración de proba en MX Linux 18.2_x64. Por suposto, esta non é unha distribución de servidor, pero é improbable que haxa diferenzas para Debian. Para outras distribucións, os camiños ás bibliotecas de configuración poden variar lixeiramente.
  • Token. Seguimos usando o modelo Rutoken EDS PKI, que é ideal en termos de características de velocidade para uso corporativo.
  • Para traballar cun token en Linux, cómpre instalar os seguintes paquetes:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

Expedición de certificados

En artigos anteriores, confiábamos no feito de que os certificados de servidor e cliente emitiranse mediante Microsoft CA. Pero xa que estamos configurando todo en Linux, tamén che contaremos sobre unha forma alternativa de emitir estes certificados sen saír de Linux.
Usaremos XCA como CA (https://hohnstaedt.de/xca/), que está dispoñible en calquera distribución de Linux moderna. Todas as accións que realizaremos en XCA pódense realizar en modo liña de comandos mediante as utilidades OpenSSL e pkcs11-tool, pero para unha maior sinxeleza e claridade, non as presentaremos neste artigo.

introdución

  1. Instalar:
    $ apt-get install xca
  2. E corremos:
    $ xca
  3. Creamos a nosa base de datos para CA - /root/CA.xdb
    Recomendamos almacenar a base de datos da autoridade de certificación nun cartafol onde só o administrador teña acceso. Isto é importante para protexer as claves privadas dos certificados raíz, que se usan para asinar todos os demais certificados.

Crea claves e certificado CA raíz

Unha infraestrutura de clave pública (PKI) baséase nun sistema xerárquico. O principal neste sistema é a autoridade de certificación raíz ou CA raíz. O seu certificado debe ser creado primeiro.

  1. Creamos unha clave privada RSA-2048 para a CA. Para iso, na pestana Claves privadas Empurrón Chave nova e seleccione o tipo axeitado.
  2. Establece un nome para o novo par de chaves. Chameino CA Key.
  3. Emitimos o propio certificado CA, utilizando o par de claves creado. Para facelo, vai á pestana certificados e empuxa Novo Certificado.
  4. Asegúrese de escoller SHA-256, porque usar SHA-1 xa non se pode considerar seguro.
  5. Asegúrese de escoller como modelo [predeterminado]CA. Non esquezas facer clic en Aplicar todo, se non, o modelo non se aplica.
  6. Na pestana tema escolle o noso par de chaves. Alí podes cubrir todos os campos principais do certificado.

Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

Creando claves e un certificado de servidor https

  1. Do mesmo xeito, creamos unha clave privada RSA-2048 para o servidor, chamei Chave do servidor.
  2. Ao crear un certificado, seleccionamos que o certificado do servidor debe estar asinado cun certificado CA.
  3. Non esquezas seleccionar SHA-256.
  4. Escollemos como modelo [predeterminado] HTTPS_server. Prema en Aplicar todo.
  5. Despois na pestana tema seleccione a nosa clave e cubra os campos obrigatorios.

Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

Crear claves e certificados para o usuario

  1. A clave privada do usuario almacenarase no noso token. Para traballar con el, cómpre instalar a biblioteca PKCS#11 desde o noso sitio web. Para distribucións populares, distribuímos paquetes preparados, que se atopan aquí - https://www.rutoken.ru/support/download/pkcs/. Tamén temos conxuntos para arm64, armv7el, armv7hf, e2k, mipso32el, que se poden descargar do noso SDK - https://www.rutoken.ru/developers/sdk/. Ademais dos conxuntos para Linux, tamén hai conxuntos para macOS, freebsd e Android.
  2. Engadindo un novo provedor PKCS#11 a XCA. Para iso, vai ao menú Opcións á pestana Provedor PKCS#11.
  3. Prememos Engadir e seleccione o camiño á biblioteca PKCS#11. No meu caso é usrliblibrtpkcs11ecp.so.
  4. Necesitaremos un token Rutoken EDS PKI formateado. Descarga a utilidade rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Realizamos
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Seleccionamos a clave RSA-2048 para a Rutoken EDS PKI como tipo de clave. Chamei a esta chave Chave de cliente.

    Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

  7. Introduza o código PIN. E agardamos a que se complete a xeración de hardware do par de claves

    Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

  8. Creamos un certificado para o usuario por analoxía co certificado do servidor. Nesta ocasión seleccionamos un modelo [predeterminado] HTTPS_client e non esquezas facer clic Aplicar todo.
  9. Na pestana tema introducir información sobre o usuario. Respondemos afirmativamente á solicitude de gardar o certificado para o token.

Como resultado, na pestana Certificados en XCA deberías conseguir algo así.

Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux
Este conxunto mínimo de claves e certificados é suficiente para comezar a configurar os propios servidores.

Para configurar, necesitamos exportar o certificado CA, o certificado do servidor e a clave privada do servidor.

Para iso, seleccione a entrada desexada na pestana correspondente en XCA e prema Exportar.

Nginx

Non escribirei como instalar e executar un servidor nginx: hai artigos suficientes sobre este tema en Internet, sen esquecer a documentación oficial. Imos directamente a configurar HTTPS e a autenticación de dous factores mediante un token.

Engade as seguintes liñas á sección do servidor en nginx.conf:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Aquí pódese atopar unha descrición detallada de todos os parámetros relacionados coa configuración de ssl en nginx - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Describirei brevemente os que me preguntei:

  • ssl_verify_client - especifica que a cadea de confianza para o certificado debe ser verificada.
  • ssl_verify_depth - Define a profundidade de busca para o certificado raíz de confianza na cadea. Dado que o noso certificado de cliente está asinado inmediatamente no certificado raíz, a profundidade establécese en 1. Se o certificado de usuario está asinado nunha CA intermedia, entón debe especificarse 2 neste parámetro e así por diante.
  • ssl_client_certificate: especifica a ruta ao certificado raíz de confianza, que se usa ao comprobar a confianza no certificado do usuario.
  • ssl_certificate/ssl_certificate_key: indica a ruta do certificado/chave privada do servidor.

Non esquezas executar nginx -t para comprobar que non hai erros de dixitación na configuración e que todos os ficheiros están no lugar correcto, etc.

E iso é todo! Como podes ver, a configuración é moi sinxela.

Comprobando que funciona en Firefox

Dado que facemos todo completamente en Linux, asumiremos que os nosos usuarios tamén traballan en Linux (se teñen Windows, entón consulte as instrucións para configurar os navegadores no artigo anterior.

  1. Imos lanzar Firefox.
  2. Tentemos iniciar sesión sen un token primeiro. Temos esta imaxe:

    Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

  3. Seguimos sobre: ​​preferencias # privacidade, e imos a Dispositivos de seguridade...
  4. Prememos Cargapara engadir un novo controlador de dispositivo PKCS#11 e especificar o camiño ao noso librtpkcs11ecp.so.
  5. Para comprobar que o certificado está visible, pode ir a Xestor de certificados. Solicitarase que introduza o seu PIN. Despois da entrada correcta, pode comprobar o que hai na pestana Os teus certificados apareceu o noso certificado do token.
  6. Agora imos coa ficha. Firefox pídelle que seleccione un certificado que se seleccionará para o servidor. Escolla o noso certificado.

    Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

  7. BENEFICIO!

    Autenticación de dous factores no sitio mediante un token USB. Agora tamén para Linux

A configuración realízase unha vez e, como podes ver na xanela de solicitude de certificado, podemos gardar a nosa selección. Despois diso, cada vez que iniciemos sesión no portal, só necesitaremos inserir un token e introducir o código PIN de usuario que se especificou durante o formato. Despois desta autenticación, o servidor xa sabe que usuario iniciou sesión e xa non pode crear ventás adicionais para a verificación, pero permite que o usuario acceda inmediatamente á súa conta persoal.

Apache

Do mesmo xeito que con nginx, ninguén debería ter problemas para instalar Apache. Se non sabes como instalar este servidor web, só tes que utilizar a documentación oficial.

E comezamos a configurar o noso HTTPS e a autenticación de dous factores:

  1. Primeiro debes activar mod_ssl:
    $ a2enmod ssl
  2. E despois activa a configuración HTTPS predeterminada do sitio:
    $ a2ensite default-ssl
  3. Agora editamos o ficheiro de configuración: /etc/apache2/sites-enabled/default-ssl.conf:
        SSLEngine on
        SSLProtocol all -SSLv2
    
        SSLCertificateFile	/etc/apache2/sites-enabled/Server.crt
        SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
    
        SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
    
        SSLVerifyClient require
        SSLVerifyDepth  10

    Como podes ver, os nomes dos parámetros practicamente coinciden cos nomes dos parámetros en nginx, polo que non os explicarei. De novo, calquera persoa interesada nos detalles está benvida á documentación.
    Agora reiniciamos o noso servidor:

    $ service apache2 reload
    $ service apache2 restart

  4. Como podes ver, configurar a autenticación de dous factores en calquera servidor web, xa sexa en Windows ou Linux, é cuestión de unha hora como máximo. E configurar os navegadores leva uns 5 minutos. Moita xente pensa que configurar e traballar coa autenticación de dous factores é difícil e pouco claro. Espero que o noso artigo desacredite este mito, polo menos un pouco.

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Necesitas instrucións para configurar TLS con certificados segundo GOST 34.10-2012:

  • Si, TLS-GOST é moi necesario

  • Non, a sintonía cos algoritmos GOST non é interesante

Votaron 44 usuarios. 9 usuarios abstivéronse.

Fonte: www.habr.com

Engadir un comentario