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

Twa-faktor autentikaasje op 'e webside 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 om ynstruksjes te skriuwen foar de meast foarkommende webservers ûnder Linux — nginx en Apache.

Jo fregen - wy skreaunen.

Wat hawwe jo nedich om te begjinnen?

  • Elke moderne distribúsje LinuxIk haw in testynstelling dien yn MX Linux 18.2_x64. Dit is wis gjin serverdistribúsje, mar foar Debian It is net wierskynlik dat der ferskillen sille wêze. Foar oare distribúsjes kinne de paden nei de konfiguraasjebibleteken wat oars wêze.
  • Token. Wy bliuwe it model te brûken Rutoken EDS PKI, dat is ideaal yn termen fan snelheid skaaimerken foar bedriuwsgebrûk.
  • Om mei de token te wurkjen yn Linux De folgjende pakketten moatte ynstalleare wurde:
    libccid libpcsclite1 pcscd pcsc-ark iepensc

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

It útjaan fan sertifikaten

Yn eardere artikels hawwe wy ús derfan fertroud dat server- en kliïntsertifikaten útjûn wurde soene mei in Microsoft CA. Mar om't wy alles ynstelle yn Linux, dan sille wy jo tagelyk fertelle oer in alternative manier om dizze sertifikaten út te jaan - sûnder te ferlitten Linux.
Wy sille XCA brûke as CA (https://hohnstaedt.de/xca/), dy't beskikber is yn elke moderne distribúsje LinuxAlle aksjes dy't wy yn XCA útfiere kinne ek útfierd wurde yn kommandorigelmodus mei de hulpprogramma's OpenSSL en pkcs11-tool, mar foar ienfâld en dúdlikens sille wy se yn dit artikel net behannelje.

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 webside 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 webside 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 builds foar Linux binne der ek builds 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 Tafoegje 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 webside 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 webside 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 webside 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

Omdat wy alles folslein yn Linux, dan sille wy oannimme dat ús brûkers ek wurkje yn Linux (as se hawwe Windows, 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 webside 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 webside mei in USB-token. No ek foar Linux

  7. WINST!

    Twa-faktor autentikaasje op 'e webside 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 sjen kinne, kinne jo twa-faktor-autentikaasje ynstelle op elke webserver, dat is Windows,wat yn Linux It duorret maksimaal in oere. En it ynstellen fan browsers duorret sawat 5 minuten. In protte minsken tinke dat it ynstellen en brûken fan twafaktor-autentikaasje yngewikkeld en betiizjend is. Ik hoopje dat dit artikel dizze myte teminsten in bytsje ûntkracht.

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

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster