Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile
В üks meie varasematest artiklitest rääkisime kahefaktorilise autentimise tähtsusest ettevõtete korporatiivportaalides. Viimati demonstreerisime, kuidas seadistada turvaline autentimine IIS-i veebiserveris.

Kommentaarides paluti meil kirjutada Linuxi jaoks levinumate veebiserverite - nginx ja Apache - juhised.

Sa küsisid – meie kirjutasime.

Mida on vaja alustamiseks?

  • Iga kaasaegne Linuxi distributsioon. Tegin testseadistuse MX Linuxi versioonis 18.2_x64. See pole muidugi serverijaotus, kuid Debiani puhul pole tõenäoliselt mingeid erinevusi. Teiste distributsioonide puhul võivad konfiguratsiooniteekide teed veidi erineda.
  • Token. Jätkame mudeli kasutamist Rutoken EDS PKI, mis on kiirusomaduste poolest ideaalne ettevõtete kasutamiseks.
  • Linuxis märgiga töötamiseks peate installima järgmised paketid:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

Sertifikaatide väljastamine

Eelmistes artiklites tuginesime asjaolule, et serveri ja kliendi sertifikaate väljastatakse Microsoft CA abil. Kuna aga seadistame kõike Linuxis, räägime teile ka alternatiivsest viisist nende sertifikaatide väljastamiseks – Linuxist lahkumata.
CA-na kasutame XCA-d (https://hohnstaedt.de/xca/), mis on saadaval mis tahes kaasaegses Linuxi distributsioonis. Kõiki toiminguid, mida me XCA-s teeme, saab teha käsurearežiimis, kasutades OpenSSL-i ja pkcs11-tööriista utiliite, kuid suurema lihtsuse ja selguse huvides me neid selles artiklis ei esita.

Alustamine

  1. Installige:
    $ apt-get install xca
  2. Ja me jookseme:
    $ xca
  3. Loome oma andmebaasi CA jaoks - /root/CA.xdb
    Soovitame sertifitseerimisasutuse andmebaasi salvestada kausta, kuhu on juurdepääs ainult administraatoril. See on oluline juursertifikaatide privaatvõtmete kaitsmiseks, mida kasutatakse kõigi teiste sertifikaatide allkirjastamiseks.

Looge võtmed ja juur-CA sertifikaat

Avaliku võtme infrastruktuur (PKI) põhineb hierarhilisel süsteemil. Peamine selles süsteemis on juursertifitseerimisasutus ehk juur-CA. Selle sertifikaat tuleb kõigepealt luua.

  1. Loome CA jaoks RSA-2048 privaatvõtme. Selleks vahekaardil Privaatvõtmed suruma New Key ja valige sobiv tüüp.
  2. Määrake uuele võtmepaarile nimi. Ma nimetasin seda CA võtmeks.
  3. CA sertifikaadi väljastame ise, kasutades loodud võtmepaari. Selleks minge vahekaardile Sertifikaadid ja vajutage Uus sertifikaat.
  4. Valige kindlasti SHA-256, sest SHA-1 kasutamist ei saa enam ohutuks pidada.
  5. Valige kindlasti malliks [vaikimisi]CA. Ärge unustage klõpsata Rakenda kõik, vastasel juhul malli ei rakendata.
  6. Vahekaardil Teema vali meie võtmepaar. Seal saate täita kõik sertifikaadi peamised väljad.

Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

Võtmete ja https-serveri sertifikaadi loomine

  1. Sarnaselt loome serverile RSA-2048 privaatvõtme, mina nimetasin seda Serveri võtmeks.
  2. Sertifikaadi loomisel valime, et serveri sertifikaat peab olema allkirjastatud CA sertifikaadiga.
  3. Ärge unustage valida SHA-256.
  4. Valime malliks [vaikimisi] HTTPS_server. Kliki Rakenda kõik.
  5. Siis vahekaardil Teema valige meie võti ja täitke nõutud väljad.

Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

Looge kasutajale võtmed ja sertifikaat

  1. Kasutaja privaatvõti salvestatakse meie märgile. Sellega töötamiseks peate meie veebisaidilt installima PKCS#11 teegi. Populaarsete distributsioonide jaoks levitame valmispakette, mis asuvad siin - https://www.rutoken.ru/support/download/pkcs/. Meil on ka komplektid arm64, armv7el, armv7hf, e2k, mipso32el jaoks, mille saab alla laadida meie SDK-st - https://www.rutoken.ru/developers/sdk/. Lisaks Linuxi komplektidele on olemas ka komplekte MacOS-i, freebsd ja androidi jaoks.
  2. Uue PKCS#11 pakkuja lisamine XCA-sse. Selleks minge menüüsse Valikud vahekaardile PKCS#11 pakkuja.
  3. Me vajutame lisama ja valige teegi PKCS#11 tee. Minu puhul on see usrliblibrtpkcs11ecp.so.
  4. Vajame vormindatud Rutoken EDS PKI luba. Laadige alla rtAdmini utiliit - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Viime läbi
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Valime Rutoken EDS PKI võtmetüübiks võtme RSA-2048. Kutsusin seda võtit kliendivõtmeks.

    Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

  7. Sisestage PIN-kood. Ja ootame võtmepaari riistvara genereerimise lõpuleviimist

    Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

  8. Loome kasutajale sertifikaadi analoogselt serveri sertifikaadiga. Seekord valime malli [vaikimisi] HTTPS_klient ja ärge unustage klõpsata Rakenda kõik.
  9. Vahekaardil Teema sisestage teave kasutaja kohta. Tokeni sertifikaadi salvestamise taotlusele vastame jaatavalt.

Selle tulemusena vahekaardil Sertifikaadid XCA-s peaksite saama midagi sellist.

Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile
Sellest minimaalsest võtmete ja sertifikaatide komplektist piisab serverite enda seadistamise alustamiseks.

Konfigureerimiseks peame eksportima CA sertifikaadi, serveri sertifikaadi ja serveri privaatvõtme.

Selleks valige XCA vastaval vahekaardil soovitud kirje ja klõpsake nuppu Eksport.

nginx

Ma ei kirjuta, kuidas nginxi serverit installida ja käitada - Internetis on sellel teemal piisavalt artikleid, ametlikust dokumentatsioonist rääkimata. Läheme otse HTTPS-i ja kahefaktorilise autentimise seadistamise juurde, kasutades loa.

Lisage faili nginx.conf serveri jaotisesse järgmised read:

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;
}

Kõigi nginxi ssl-i konfigureerimisega seotud parameetrite üksikasjaliku kirjelduse leiate siit - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Kirjeldan lühidalt neid, mida endalt küsisin:

  • ssl_verify_client – ​​määrab, et sertifikaadi usaldusahel tuleb kontrollida.
  • ssl_verify_depth – määrab ahelas usaldusväärse juursertifikaadi otsingu sügavuse. Kuna meie kliendisertifikaat allkirjastatakse kohe juursertifikaadile, on sügavus seatud 1-le. Kui kasutajasertifikaat on allkirjastatud vahepealsel CA-l, siis tuleb selles parameetris määrata 2 jne.
  • ssl_client_certificate – määrab usaldusväärse juursertifikaadi tee, mida kasutatakse kasutaja sertifikaadi usaldusväärsuse kontrollimisel.
  • ssl_certificate/ssl_certificate_key – märkige serveri sertifikaadi/privaatvõtme tee.

Ärge unustage käivitada käsku nginx -t, et kontrollida, kas konfiguratsioonis pole kirjavigu ja kas kõik failid on õiges kohas jne.

Ja see on kõik! Nagu näete, on seadistamine väga lihtne.

Kontrollige, kas see Firefoxis töötab

Kuna me teeme kõike täielikult Linuxis, siis eeldame, et meie kasutajad töötavad ka Linuxis (kui neil on Windows, siis vaadake juhiseid brauserite seadistamiseks eelmisest artiklist.

  1. Käivitame Firefoxi.
  2. Proovime kõigepealt ilma märgita sisse logida. Saame selle pildi:

    Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

  3. Minema about: eelistused # privaatsus, ja me läheme Turvaseadmed…
  4. Me vajutame Koormuset lisada uus PKCS#11 seadmedraiver ja määrata meie librtpkcs11ecp.so tee.
  5. Sertifikaadi nähtavuse kontrollimiseks võite minna aadressile Sertifikaadihaldur. Teil palutakse sisestada PIN-kood. Pärast õiget sisestamist saate kontrollida, mis vahekaardil on Teie sertifikaadid ilmus meie tunnistus tokenist.
  6. Lähme nüüd märgiga. Firefox palub teil valida serveri jaoks valitava sertifikaadi. Valige meie sertifikaat.

    Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

  7. KASUM!

    Kahefaktoriline autentimine saidil USB-märgi abil. Nüüd ka Linuxile

Seadistamine toimub üks kord ja nagu näete sertifikaadi päringu aknas, saame oma valiku salvestada. Pärast seda peame iga kord portaali sisse logides sisestama ainult märgi ja sisestama vormindamisel määratud kasutaja PIN-koodi. Pärast sellist autentimist on serveril juba teada, milline kasutaja on sisse loginud ja enam ei saa luua täiendavaid aknaid kontrollimiseks, vaid lasta kasutaja kohe oma isiklikule kontole.

Apache

Nii nagu nginxi puhul, ei tohiks kellelgi olla probleeme apache'i installimisega. Kui te ei tea, kuidas seda veebiserverit installida, kasutage ametlikku dokumentatsiooni.

Ja hakkame seadistama oma HTTPS-i ja kahefaktorilist autentimist:

  1. Kõigepealt peate aktiveerima mod_ssl:
    $ a2enmod ssl
  2. Seejärel lubage saidi HTTPS-i vaikeseaded:
    $ a2ensite default-ssl
  3. Nüüd muudame konfiguratsioonifaili: /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

    Nagu näete, kattuvad parameetrite nimed praktiliselt nginxi parameetrite nimedega, nii et ma ei hakka neid selgitama. Jällegi, kõik üksikasjadest huvitatud on dokumentatsiooniga tutvuma oodatud.
    Nüüd taaskäivitame oma serveri:

    $ service apache2 reload
    $ service apache2 restart

  4. Nagu näete, võtab kahefaktorilise autentimise seadistamine mis tahes veebiserveris, olgu see siis Windowsis või Linuxis, maksimaalselt ühe tunni. Ja brauserite seadistamine võtab umbes 5 minutit. Paljud inimesed arvavad, et kahefaktorilise autentimise seadistamine ja sellega töötamine on keeruline ja ebaselge. Loodan, et meie artikkel lükkab selle müüdi vähemalt natuke ümber.

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas vajate juhiseid TLS-i seadistamiseks sertifikaatidega vastavalt GOST 34.10-2012:

  • Jah, TLS-GOST on väga vajalik

  • Ei, GOST-algoritmidega häälestamine pole huvitav

44 kasutajat hääletas. 9 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar