Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux
В un dels nostres articles anteriors vam parlar de la importància de l'autenticació de dos factors als portals corporatius de les empreses. La darrera vegada vam demostrar com configurar l'autenticació segura al servidor web IIS.

Als comentaris, se'ns va demanar que escrivim instruccions per als servidors web més comuns per a Linux: nginx i Apache.

Vostè va preguntar - vam escriure.

Què necessites per començar?

  • Qualsevol distribució de Linux moderna. Vaig fer una prova de configuració a MX Linux 18.2_x64. Per descomptat, aquesta no és una distribució de servidors, però és poc probable que hi hagi diferències per a Debian. Per a altres distribucions, els camins a les biblioteques de configuració poden diferir lleugerament.
  • Token. Continuem utilitzant el model Rutoken EDS PKI, que és ideal pel que fa a les característiques de velocitat per a ús corporatiu.
  • Per treballar amb un testimoni a Linux, heu d'instal·lar els paquets següents:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

Emissió de certificats

En articles anteriors, ens vam basar en el fet que els certificats de servidor i client s'emetran mitjançant Microsoft CA. Però com que ho estem configurant tot a Linux, també us explicarem una manera alternativa d'emetre aquests certificats, sense sortir de Linux.
Utilitzarem XCA com a CA (https://hohnstaedt.de/xca/), que està disponible a qualsevol distribució de Linux moderna. Totes les accions que realitzarem a XCA es poden fer en mode de línia d'ordres mitjançant les utilitats OpenSSL i pkcs11-tool, però per a una major simplicitat i claredat, no les presentarem en aquest article.

primers passos

  1. Instal·lar:
    $ apt-get install xca
  2. I correm:
    $ xca
  3. Creem la nostra base de dades per a CA - /root/CA.xdb
    Recomanem emmagatzemar la base de dades de l'Autoritat de certificació en una carpeta on només hi tingui accés l'administrador. Això és important per protegir les claus privades dels certificats arrel, que s'utilitzen per signar la resta de certificats.

Creeu claus i certificat CA arrel

Una infraestructura de clau pública (PKI) es basa en un sistema jeràrquic. El principal en aquest sistema és l'autoritat de certificació arrel o CA arrel. El seu certificat s'ha de crear primer.

  1. Creem una clau privada RSA-2048 per a la CA. Per fer-ho, a la pestanya Claus privades empènyer Nova clau i seleccioneu el tipus adequat.
  2. Estableix un nom per al nou parell de claus. La vaig anomenar CA Key.
  3. Emetem el propi certificat CA, utilitzant el parell de claus creat. Per fer-ho, aneu a la pestanya certificats i feu clic Nou certificat.
  4. Assegureu-vos de triar SHA-256, perquè utilitzar SHA-1 ja no es pot considerar segur.
  5. Assegureu-vos de triar com a plantilla [per defecte]CA. No us oblideu de fer clic Aplica-ho tot, en cas contrari la plantilla no s'aplica.
  6. A la pestanya Assumpte tria el nostre parell de claus. Allà podeu omplir tots els camps principals del certificat.

Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

Creació de claus i un certificat de servidor https

  1. De la mateixa manera, creem una clau privada RSA-2048 per al servidor, jo l'he anomenat Clau del servidor.
  2. En crear un certificat, seleccionem que el certificat del servidor s'ha de signar amb un certificat CA.
  3. No us oblideu de seleccionar SHA-256.
  4. Triem com a plantilla [predeterminat] HTTPS_server. Fer clic a Aplica-ho tot.
  5. Després a la pestanya Assumpte seleccioneu la nostra clau i ompliu els camps obligatoris.

Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

Crear claus i certificat per a l'usuari

  1. La clau privada de l'usuari s'emmagatzemarà al nostre testimoni. Per treballar-hi, cal que instal·leu la biblioteca PKCS#11 des del nostre lloc web. Per a distribucions populars, distribuïm paquets ja fets, que es troben aquí: https://www.rutoken.ru/support/download/pkcs/. També disposem de muntatges per a arm64, armv7el, armv7hf, e2k, mipso32el, que es poden descarregar des del nostre SDK - https://www.rutoken.ru/developers/sdk/. A més dels assemblatges per a Linux, també hi ha assemblatges per a macOS, freebsd i Android.
  2. Afegint un nou proveïdor PKCS#11 a XCA. Per fer-ho, aneu al menú opcions a la pestanya Proveïdor PKCS#11.
  3. Premem Add i seleccioneu el camí a la biblioteca PKCS#11. En el meu cas és usrliblibrtpkcs11ecp.so.
  4. Necessitarem un testimoni formatat de Rutoken EDS PKI. Baixeu la utilitat rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Realitzem
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Seleccionem la clau RSA-2048 per a la Rutoken EDS PKI com a tipus de clau. Vaig trucar a aquesta clau Clau del client.

    Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

  7. Introduïu el codi PIN. I esperem que finalitzi la generació de maquinari del parell de claus

    Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

  8. Creem un certificat per a l'usuari per analogia amb el certificat del servidor. Aquesta vegada seleccionem una plantilla [predeterminat] HTTPS_client i no us oblideu de fer clic Aplica-ho tot.
  9. A la pestanya Assumpte introduir informació sobre l'usuari. Responem afirmativament a la sol·licitud de desar el certificat del token.

Com a resultat, a la pestanya Сертификаты a XCA hauríeu d'obtenir alguna cosa com això.

Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux
Aquest conjunt mínim de claus i certificats és suficient per començar a configurar els propis servidors.

Per configurar, hem d'exportar el certificat CA, el certificat del servidor i la clau privada del servidor.

Per fer-ho, seleccioneu l'entrada desitjada a la pestanya corresponent a XCA i feu clic Exporta.

Nginx

No escriuré sobre com instal·lar i executar un servidor nginx: hi ha prou articles sobre aquest tema a Internet, per no parlar de la documentació oficial. Anem directament a configurar HTTPS i l'autenticació de dos factors mitjançant un testimoni.

Afegiu les línies següents a la secció del servidor a 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í es pot trobar una descripció detallada de tots els paràmetres relacionats amb la configuració de ssl a nginx - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Només descriuré breument els que em vaig preguntar:

  • ssl_verify_client: especifica que s'ha de verificar la cadena de confiança del certificat.
  • ssl_verify_depth - Defineix la profunditat de cerca per al certificat arrel de confiança a la cadena. Com que el nostre certificat de client està signat immediatament al certificat arrel, la profunditat s'estableix en 1. Si el certificat d'usuari està signat en una CA intermèdia, s'ha d'especificar 2 en aquest paràmetre, i així successivament.
  • ssl_client_certificate - especifica la ruta al certificat arrel de confiança, que s'utilitza quan es comprova la confiança en el certificat de l'usuari.
  • ssl_certificate/ssl_certificate_key: indiqueu el camí al certificat del servidor/clau privada.

No us oblideu d'executar nginx -t per comprovar que no hi hagi errors d'escriptura a la configuració i que tots els fitxers estiguin al lloc correcte, etc.

I això és tot! Com podeu veure, la configuració és molt senzilla.

Comprovant que funciona al Firefox

Com que ho fem tot completament a Linux, suposarem que els nostres usuaris també treballen a Linux (si tenen Windows, llavors consulteu les instruccions per configurar els navegadors a l'article anterior.

  1. Anem a llançar Firefox.
  2. Primer intentem iniciar sessió sense cap testimoni. Tenim aquesta imatge:

    Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

  3. Continuem sobre: ​​preferències # privadesa, i anem a Dispositius de seguretat...
  4. Premem Càrregaper afegir un nou controlador de dispositiu PKCS#11 i especificar el camí al nostre librtpkcs11ecp.so.
  5. Per comprovar que el certificat és visible, podeu anar a Gestor de certificats. Se us demanarà que introduïu el vostre PIN. Després d'introduir correctament, podeu comprovar què hi ha a la pestanya Els teus certificats va aparèixer el nostre certificat del testimoni.
  6. Ara anem amb el testimoni. Firefox us demana que seleccioneu un certificat que es seleccionarà per al servidor. Tria el nostre certificat.

    Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

  7. BENEFICI!

    Autenticació de dos factors al lloc mitjançant un testimoni USB. Ara també per a Linux

La configuració es fa una vegada i, com podeu veure a la finestra de sol·licitud de certificat, podem desar la nostra selecció. Després d'això, cada vegada que ens connectem al portal, només caldrà inserir un testimoni i introduir el codi PIN d'usuari que s'ha especificat durant el format. Després d'aquesta autenticació, el servidor ja sap quin usuari ha iniciat la sessió i ja no podeu crear cap finestra addicional per a la verificació, però deixar que l'usuari accedeixi immediatament al seu compte personal.

Apache

Igual que amb nginx, ningú hauria de tenir cap problema per instal·lar apache. Si no saps com instal·lar aquest servidor web, només has d'utilitzar la documentació oficial.

I comencem a configurar el nostre HTTPS i l'autenticació de dos factors:

  1. Primer heu d'activar mod_ssl:
    $ a2enmod ssl
  2. A continuació, activeu la configuració HTTPS predeterminada del lloc:
    $ a2ensite default-ssl
  3. Ara editem el fitxer de configuració: /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

    Com podeu veure, els noms dels paràmetres pràcticament coincideixen amb els noms dels paràmetres a nginx, així que no els explicaré. De nou, qualsevol persona interessada en els detalls és benvinguda a la documentació.
    Ara reiniciem el nostre servidor:

    $ service apache2 reload
    $ service apache2 restart

  4. Com podeu veure, configurar l'autenticació de dos factors a qualsevol servidor web, ja sigui a Windows o Linux, triga una hora com a màxim. I la configuració dels navegadors triga uns 5 minuts. Molta gent pensa que configurar i treballar amb l'autenticació de dos factors és difícil i poc clar. Espero que el nostre article desmenti aquest mite, almenys una mica.

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

Necessites instruccions per configurar TLS amb certificats segons GOST 34.10-2012:

  • Sí, TLS-GOST és molt necessari

  • No, sintonitzar amb algorismes GOST no és interessant

Han votat 44 usuaris. 9 usuaris es van abstenir.

Font: www.habr.com

Afegeix comentari