ProHoster > Blog > Administración > 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
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
Instalar:
$ apt-get install xca
E corremos:
$ xca
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.
Creamos unha clave privada RSA-2048 para a CA. Para iso, na pestana Claves privadas Empurrón Chave nova e seleccione o tipo axeitado.
Establece un nome para o novo par de chaves. Chameino CA Key.
Emitimos o propio certificado CA, utilizando o par de claves creado. Para facelo, vai á pestana certificados e empuxa Novo Certificado.
Asegúrese de escoller SHA-256, porque usar SHA-1 xa non se pode considerar seguro.
Asegúrese de escoller como modelo [predeterminado]CA. Non esquezas facer clic en Aplicar todo, se non, o modelo non se aplica.
Na pestana tema escolle o noso par de chaves. Alí podes cubrir todos os campos principais do certificado.
Creando claves e un certificado de servidor https
Do mesmo xeito, creamos unha clave privada RSA-2048 para o servidor, chamei Chave do servidor.
Ao crear un certificado, seleccionamos que o certificado do servidor debe estar asinado cun certificado CA.
Non esquezas seleccionar SHA-256.
Escollemos como modelo [predeterminado] HTTPS_server. Prema en Aplicar todo.
Despois na pestana tema seleccione a nosa clave e cubra os campos obrigatorios.
Crear claves e certificados para o usuario
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.
Engadindo un novo provedor PKCS#11 a XCA. Para iso, vai ao menú Opcións á pestana Provedor PKCS#11.
Prememos Engadir e seleccione o camiño á biblioteca PKCS#11. No meu caso é usrliblibrtpkcs11ecp.so.
Seleccionamos a clave RSA-2048 para a Rutoken EDS PKI como tipo de clave. Chamei a esta chave Chave de cliente.
Introduza o código PIN. E agardamos a que se complete a xeración de hardware do par de claves
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.
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í.
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:
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.
Tentemos iniciar sesión sen un token primeiro. Temos esta imaxe:
Seguimos sobre: preferencias # privacidade, e imos a Dispositivos de seguridade...
Prememos Cargapara engadir un novo controlador de dispositivo PKCS#11 e especificar o camiño ao noso librtpkcs11ecp.so.
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.
Agora imos coa ficha. Firefox pídelle que seleccione un certificado que se seleccionará para o servidor. Escolla o noso certificado.
BENEFICIO!
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:
Primeiro debes activar mod_ssl:
$ a2enmod ssl
E despois activa a configuración HTTPS predeterminada do sitio:
$ a2ensite default-ssl
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
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