ProHoster > Bloc > Administració > 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
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
Instal·lar:
$ apt-get install xca
I correm:
$ xca
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.
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.
Estableix un nom per al nou parell de claus. La vaig anomenar CA Key.
Emetem el propi certificat CA, utilitzant el parell de claus creat. Per fer-ho, aneu a la pestanya certificats i feu clic Nou certificat.
Assegureu-vos de triar SHA-256, perquè utilitzar SHA-1 ja no es pot considerar segur.
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.
A la pestanya Assumpte tria el nostre parell de claus. Allà podeu omplir tots els camps principals del certificat.
Creació de claus i un certificat de servidor https
De la mateixa manera, creem una clau privada RSA-2048 per al servidor, jo l'he anomenat Clau del servidor.
En crear un certificat, seleccionem que el certificat del servidor s'ha de signar amb un certificat CA.
No us oblideu de seleccionar SHA-256.
Triem com a plantilla [predeterminat] HTTPS_server. Fer clic a Aplica-ho tot.
Després a la pestanya Assumpte seleccioneu la nostra clau i ompliu els camps obligatoris.
Crear claus i certificat per a l'usuari
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.
Afegint un nou proveïdor PKCS#11 a XCA. Per fer-ho, aneu al menú opcions a la pestanya Proveïdor PKCS#11.
Premem Add i seleccioneu el camí a la biblioteca PKCS#11. En el meu cas és usrliblibrtpkcs11ecp.so.
Seleccionem la clau RSA-2048 per a la Rutoken EDS PKI com a tipus de clau. Vaig trucar a aquesta clau Clau del client.
Introduïu el codi PIN. I esperem que finalitzi la generació de maquinari del parell de claus
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.
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ò.
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:
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.
Primer intentem iniciar sessió sense cap testimoni. Tenim aquesta imatge:
Continuem sobre: preferències # privadesa, i anem a Dispositius de seguretat...
Premem Càrregaper afegir un nou controlador de dispositiu PKCS#11 i especificar el camí al nostre librtpkcs11ecp.so.
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.
Ara anem amb el testimoni. Firefox us demana que seleccioneu un certificat que es seleccionarà per al servidor. Tria el nostre certificat.
BENEFICI!
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:
Primer heu d'activar mod_ssl:
$ a2enmod ssl
A continuació, activeu la configuració HTTPS predeterminada del lloc:
$ a2ensite default-ssl
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
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