Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux
В ien fan ús eardere artikels wy prate oer it belang fan twa-faktor autentikaasje op bedriuwsportalen fan bedriuwen. Lêste kear hawwe wy demonstrearre hoe't jo feilige autentikaasje ynstelle kinne yn 'e IIS-webserver.

Yn 'e kommentaren waarden wy frege ynstruksjes te skriuwen foar de meast foarkommende webservers foar Linux - nginx en Apache.

Jo fregen - wy skreaunen.

Wat hawwe jo nedich om te begjinnen?

  • Elke moderne Linux-distribúsje. Ik die in testopstelling op MX Linux 18.2_x64. Dit is fansels gjin serverdistribúsje, mar d'r binne nei alle gedachten gjin ferskillen foar Debian. Foar oare distribúsjes kinne de paden nei de konfiguraasjebibleteken in bytsje ferskille.
  • Token. Wy bliuwe it model te brûken Rutoken EDS PKI, dat is ideaal yn termen fan snelheid skaaimerken foar bedriuwsgebrûk.
  • Om te wurkjen mei in token yn Linux, moatte jo de folgjende pakketten ynstallearje:
    libccid libpcsclite1 pcscd pcsc-ark iepensc

Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

It útjaan fan sertifikaten

Yn eardere artikels fertrouden wy op it feit dat server- en kliïntsertifikaten sille wurde útjûn mei Microsoft CA. Mar om't wy alles yn Linux ynstelle, sille wy jo ek fertelle oer in alternative manier om dizze sertifikaten út te jaan - sûnder Linux te ferlitten.
Wy sille XCA brûke as CA (https://hohnstaedt.de/xca/), dy't beskikber is op elke moderne Linux-distribúsje. Alle aksjes dy't wy sille útfiere yn XCA kinne dien wurde yn kommandorigelmodus mei help fan de OpenSSL en pkcs11-ark, mar foar gruttere ienfâld en dúdlikens sille wy se net yn dit artikel presintearje.

Om te begjinnen

  1. Ynstallearje:
    $ apt-get install xca
  2. En wy rinne:
    $ xca
  3. Wy meitsje ús databank foar CA - /root/CA.xdb
    Wy riede oan om de Certificate Authority-database op te slaan yn in map wêr't allinich de behearder tagong hat. Dit is wichtich om de privee kaaien fan 'e root-sertifikaten te beskermjen, dy't brûkt wurde om alle oare sertifikaten te ûndertekenjen.

Meitsje kaaien en root CA sertifikaat

In iepenbiere kaai ynfrastruktuer (PKI) is basearre op in hiërargysk systeem. It wichtichste ding yn dit systeem is de root-sertifikaasjeautoriteit as root CA. It sertifikaat moat earst makke wurde.

  1. Wy meitsje in RSA-2048 privee kaai foar de CA. Om dit te dwaan, op 'e ljepper Private Keys triuwe Nije kaai en selektearje it passende type.
  2. Stel in namme yn foar it nije kaaipaar. Ik neamde it CA Key.
  3. Wy jouwe it CA-sertifikaat sels út, mei it oanmakke kaaipaar. Om dit te dwaan, gean nei de ljepper sertifikaten en klikje Nij sertifikaat.
  4. Wês wis te kiezen SHA-256, om't it brûken fan SHA-1 net langer as feilich beskôge wurde kin.
  5. Wês wis dat jo kieze as sjabloan [standert] CA. Ferjit net op te klikken Alle tapasse, oars wurdt it sjabloan net tapast.
  6. Yn de ljepper Ûnderwerp kies ús kaaipaar. Dêr kinne jo alle haadfjilden fan it sertifikaat ynfolje.

Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

Kaaien oanmeitsje en in https-serversertifikaat

  1. Op in fergelykbere manier meitsje wy in RSA-2048 privee kaai foar de tsjinner, ik neamde it Server Key.
  2. By it meitsjen fan in sertifikaat selektearje wy dat it tsjinnersertifikaat tekene wurde moat mei in CA-sertifikaat.
  3. Ferjit net te selektearjen SHA-256.
  4. Wy kieze as sjabloan [standert] HTTPS_server. Klikje op Alle tapasse.
  5. Dan op 'e ljepper Ûnderwerp selektearje ús kaai en folje de fereaske fjilden yn.

Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

Meitsje kaaien en sertifikaat foar de brûker

  1. De privee kaai fan de brûker wurdt opslein op ús token. Om dermei te wurkjen moatte jo de PKCS#11-bibleteek fan ús webside ynstallearje. Foar populêre distribúsjes ferspriede wy klearmakke pakketten, dy't hjir lizze - https://www.rutoken.ru/support/download/pkcs/. Wy hawwe ek gearkomsten foar arm64, armv7el, armv7hf, e2k, mipso32el, dy't kinne wurde downloade fan ús SDK - https://www.rutoken.ru/developers/sdk/. Neist gearkomsten foar Linux binne d'r ek assemblies foar macOS, freebsd en android.
  2. It tafoegjen fan in nije PKCS # 11 Provider oan XCA. Om dit te dwaan, gean nei it menu opsjes oan de ljepper PKCS # 11 Oanbieder.
  3. Wy drukke Add en selektearje it paad nei de PKCS # 11 bibleteek. Yn myn gefal is it usrliblibrtpkcs11ecp.so.
  4. Wy sille in opmakke Rutoken EDS PKI-token nedich wêze. Download it hulpprogramma rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Wy fiere út
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Wy selektearje de RSA-2048-kaai foar de Rutoken EDS PKI as it kaaitype. Ik neamde dizze kaai Client Key.

    Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

  7. Fier de PIN-koade yn. En wy wachtsje op it foltôgjen fan hardwaregeneraasje fan it kaaipaar

    Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

  8. Wy meitsje in sertifikaat foar de brûker yn analogy mei it serversertifikaat. Dizze kear selektearje wy in sjabloan [standert] HTTPS_client en ferjit net te klikken Alle tapasse.
  9. Yn de ljepper Ûnderwerp ynfier ynformaasje oer de brûker. Wy antwurdzje befêstigjend op it fersyk om it sertifikaat foar it token te bewarjen.

As gefolch, op 'e ljepper Sertifikaten yn XCA moatte jo sa'n ding krije.

Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux
Dizze minimale set fan kaaien en sertifikaten is genôch om te begjinnen mei it ynstellen fan de servers sels.

Om te konfigurearjen, moatte wy it CA-sertifikaat, tsjinnersertifikaat en tsjinner priveekaai eksportearje.

Om dit te dwaan, selektearje de winske yngong op it korrespondearjende ljepblêd yn XCA en klikje Eksportearje.

Nginx

Ik sil net skriuwe oer hoe't jo in nginx-tsjinner ynstallearje en útfiere - d'r binne genôch artikels oer dit ûnderwerp op it ynternet, om de offisjele dokumintaasje net te hawwen. Litte wy direkt gean nei it ynstellen fan HTTPS en twa-faktor autentikaasje mei in token.

Foegje de folgjende rigels ta oan de tsjinner seksje yn 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;
}

In detaillearre beskriuwing fan alle parameters yn ferbân mei it konfigurearjen fan ssl yn nginx kin hjir fûn wurde - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Ik sil dejingen dy't ik mysels frege koart beskriuwe:

  • ssl_verify_client - spesifisearret dat de ketting fan fertrouwen foar it sertifikaat moat wurde ferifiearre.
  • ssl_verify_depth - Beskiedt de sykdjipte foar it fertroude root-sertifikaat yn 'e keten. Sûnt ús kliïntsertifikaat is fuortendaliks tekene op it root-sertifikaat, wurdt de djipte ynsteld op 1. As it brûkerssertifikaat tekene is op in tuskenlizzende CA, dan moat 2 yn dizze parameter oanjûn wurde, ensfh.
  • ssl_client_certificate - spesifisearret it paad nei it fertroude root-sertifikaat, dat wurdt brûkt by it kontrolearjen fan fertrouwen yn it sertifikaat fan de brûker.
  • ssl_certificate/ssl_certificate_key - jouwe it paad oan nei it serversertifikaat/privee kaai.

Ferjit net om nginx -t út te fieren om te kontrolearjen dat d'r gjin typfouten binne yn 'e konfiguraasje, en dat alle bestannen op it goede plak binne, ensfh.

En dat is alles! Sa't jo sjen kinne, de opset is hiel simpel.

Kontrolearje dat it wurket yn Firefox

Om't wy alles folslein yn Linux dogge, sille wy oannimme dat ús brûkers ek yn Linux wurkje (as se Windows hawwe, dan sjoch ynstruksjes foar it ynstellen fan browsers yn it foarige artikel.

  1. Litte wy Firefox starte.
  2. Litte wy earst besykje yn te loggen sûnder in token. Wy krije dizze foto:

    Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

  3. Gean nei oer: foarkar # privacy, en wy geane nei Feiligensapparaten ...
  4. Wy drukke Ladeom in nije PKCS#11 Device Driver ta te foegjen en it paad oan te jaan nei ús librtpkcs11ecp.so.
  5. Om te kontrolearjen dat it sertifikaat sichtber is, kinne jo gean nei Sertifikaatbehearder. Jo wurde frege om jo PIN yn te fieren. Nei juste ynfier kinne jo kontrolearje wat op it ljepblêd stiet Jo sertifikaten ús sertifikaat fan it token ferskynde.
  6. No litte wy gean mei it token. Firefox freget jo om in sertifikaat te selektearjen dat sil wurde selektearre foar de tsjinner. Kies ús sertifikaat.

    Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

  7. WINST!

    Twa-faktor autentikaasje op 'e side mei in USB-token. No ek foar Linux

De opset wurdt ien kear dien, en lykas jo kinne sjen yn it sertifikaatfersykfinster, kinne wy ​​ús seleksje bewarje. Hjirnei hoege wy elke kear as wy ynlogge op it portaal, allinich in token ynfoegje en de brûker PIN-koade ynfiere dy't waard oantsjutte tidens opmaak. Nei sa'n autentikaasje wit de tsjinner al hokker brûker oanmeld hat en kinne jo gjin ekstra finsters mear meitsje foar ferifikaasje, mar de brûker daliks yn syn persoanlike akkount litte.

Apache

Krekt as by nginx soe gjinien problemen moatte hawwe mei it ynstallearjen fan apache. As jo ​​​​net witte hoe't jo dizze webserver ynstallearje, brûk dan gewoan de offisjele dokumintaasje.

En wy begjinne mei it ynstellen fan ús HTTPS en twa-faktor autentikaasje:

  1. Earst moatte jo mod_ssl aktivearje:
    $ a2enmod ssl
  2. En skeakelje dan de standert HTTPS-ynstellingen fan 'e side yn:
    $ a2ensite default-ssl
  3. No bewurkje wy it konfiguraasjetriem: /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

    As jo ​​​​sjogge, falle de nammen fan 'e parameters praktysk oerien mei de nammen fan' e parameters yn nginx, dus ik sil se net útlizze. Nochris, elkenien dy't ynteressearre is yn 'e details is wolkom by de dokumintaasje.
    No begjinne wy ​​ús server opnij:

    $ service apache2 reload
    $ service apache2 restart

  4. Lykas jo kinne sjen, nimt it ynstellen fan twa-faktor-autentikaasje op elke webserver, itsij op Windows as Linux, maksimaal ien oere. En it ynstellen fan browsers duorret sawat 5 minuten. In protte minsken tinke dat it opsetten en wurkjen mei twa-faktor autentikaasje lestich en ûndúdlik is. Ik hoopje dat ús artikel dizze myte ûntslacht, teminsten in bytsje.

Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.

Binne jo ynstruksjes nedich foar it ynstellen fan TLS mei sertifikaten neffens GOST 34.10-2012:

  • Ja, TLS-GOST is heul nedich

  • Nee, ôfstimme mei GOST-algoritmen is net ynteressant

44 brûkers stimden. 9 brûkers ûntholden har.

Boarne: www.habr.com

Add a comment