Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux
Š’ viens no mÅ«su iepriekŔējiem rakstiem mēs runājām par divu faktoru autentifikācijas nozÄ«mi uzņēmumu korporatÄ«vajos portālos. IepriekŔējā reizē mēs demonstrējām, kā IIS tÄ«mekļa serverÄ« iestatÄ«t droÅ”u autentifikāciju.

Komentāros mums tika lūgts uzrakstīt instrukcijas Linux izplatītākajiem tīmekļa serveriem - nginx un Apache.

Jūs jautājat - mēs rakstījām.

Kas jums ir nepiecieŔams, lai sāktu?

  • Jebkura mÅ«sdienu Linux izplatÄ«Å”ana. Es veicu testa iestatÄ«Å”anu operētājsistēmā MX Linux 18.2_x64. Tas, protams, nav servera izplatÄ«Å”ana, taču maz ticams, ka Debian atŔķirÄ«bas bÅ«s. Citos izplatÄ«jumos ceļi uz konfigurācijas bibliotēkām var nedaudz atŔķirties.
  • Token. Mēs turpinām izmantot modeli Rutoken EDS PKI, kas ir ideāls ātruma raksturlielumu ziņā korporatÄ«vai lietoÅ”anai.
  • Lai strādātu ar marÄ·ieri operētājsistēmā Linux, jāinstalē Ŕādas pakotnes:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

Sertifikātu izsniegŔana

IepriekŔējos rakstos mēs paļāvāmies uz faktu, ka servera un klienta sertifikāti tiks izsniegti, izmantojot Microsoft CA. Taču, tā kā mēs visu iestatām operētājsistēmā Linux, mēs jums pastāstÄ«sim arÄ« par alternatÄ«vu veidu, kā izsniegt Å”os sertifikātus, neizejot no Linux.
Mēs izmantosim XCA kā CA (https://hohnstaedt.de/xca/), kas ir pieejams jebkurā modernā Linux izplatÄ«Å”anā. Visas darbÄ«bas, kuras mēs veiksim XCA, var veikt komandrindas režīmā, izmantojot OpenSSL un pkcs11-tool utilÄ«tas, taču lielākas vienkārŔības un skaidrÄ«bas labad mēs tās Å”ajā rakstā neparādÄ«sim.

Darba sākŔana

  1. Uzstādīt:
    $ apt-get install xca
  2. Un mēs skrienam:
    $ xca
  3. Mēs izveidojam savu datubāzi CA ā€” /root/CA.xdb
    Mēs iesakām sertifikācijas iestādes datu bāzi saglabāt mapē, kurai ir piekļuve tikai administratoram. Tas ir svarÄ«gi, lai aizsargātu saknes sertifikātu privātās atslēgas, kuras tiek izmantotas visu pārējo sertifikātu parakstÄ«Å”anai.

Izveidojiet atslēgas un saknes CA sertifikātu

Publiskās atslēgas infrastruktÅ«ra (PKI) ir balstÄ«ta uz hierarhisku sistēmu. Galvenais Å”ajā sistēmā ir saknes sertifikācijas iestāde vai saknes CA. Vispirms ir jāizveido tā sertifikāts.

  1. Mēs izveidojam RSA-2048 privāto atslēgu CA. Lai to izdarÄ«tu, cilnē Privātās atslēgas spiediet Jauns Key un izvēlieties atbilstoÅ”o veidu.
  2. Iestatiet nosaukumu jaunajam atslēgu pārim. Es to nosaucu par CA atslēgu.
  3. Mēs izsniedzam paÅ”u CA sertifikātu, izmantojot izveidoto atslēgu pāri. Lai to izdarÄ«tu, dodieties uz cilni Sertifikāti un noklikŔķiniet uz Jauns sertifikāts.
  4. Noteikti izvēlieties SHA-256, jo SHA-1 lietoÅ”anu vairs nevar uzskatÄ«t par droÅ”u.
  5. Noteikti izvēlieties kā veidni [noklusējums]CA. Neaizmirstiet noklikŔķināt uz Lietot visu, pretējā gadÄ«jumā veidne netiek lietota.
  6. Cilnē Temats izvēlieties mūsu atslēgu pāri. Tur jūs varat aizpildīt visus galvenos sertifikāta laukus.

Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

Atslēgu un https servera sertifikāta izveide

  1. Līdzīgā veidā mēs izveidojam serverim RSA-2048 privāto atslēgu, es to saucu par servera atslēgu.
  2. Veidojot sertifikātu, mēs izvēlamies, lai servera sertifikāts būtu jāparaksta ar CA sertifikātu.
  3. Neaizmirstiet izvēlēties SHA-256.
  4. Mēs izvēlamies kā veidni [noklusējums] HTTPS_serveris. KlikŔķiniet uz Lietot visu.
  5. Pēc tam cilnē Temats atlasiet mÅ«su atslēgu un aizpildiet nepiecieÅ”amos laukus.

Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

Izveidojiet atslēgas un sertifikātu lietotājam

  1. Lietotāja privātā atslēga tiks saglabāta mÅ«su pilnvarā. Lai ar to strādātu, no mÅ«su vietnes jāinstalē bibliotēka PKCS#11. Populārajiem izplatÄ«jumiem mēs izplatām gatavas paketes, kas atrodas Å”eit - https://www.rutoken.ru/support/download/pkcs/. Mums ir arÄ« komplekti arm64, armv7el, armv7hf, e2k, mipso32el, kurus var lejupielādēt no mÅ«su SDK - https://www.rutoken.ru/developers/sdk/. Papildus Linux komplektiem ir arÄ« macOS, freebsd un Android komplekti.
  2. Jauna PKCS#11 nodroÅ”inātāja pievienoÅ”ana XCA. Lai to izdarÄ«tu, dodieties uz izvēlni opcijas uz cilni PKCS#11 nodroÅ”inātājs.
  3. Mēs nospiežam Pievienot un atlasiet ceļu uz PKCS#11 bibliotēku. Manā gadījumā tas ir usrliblibrtpkcs11ecp.so.
  4. Mums bÅ«s nepiecieÅ”ams formatēts Rutoken EDS PKI marÄ·ieris. Lejupielādējiet utilÄ«tu rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Mēs veicam
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-ŠŗŠ¾Š“ ŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŠµŠ»Ń>
  6. Kā atslēgas veidu mēs izvēlamies Rutoken EDS PKI atslēgu RSA-2048. Es nosaucu Å”o atslēgu par klienta atslēgu.

    Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

  7. Ievadiet PIN kodu. Un mēs gaidām atslēgu pāra aparatÅ«ras Ä£enerÄ“Å”anas pabeigÅ”anu

    Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

  8. Mēs izveidojam sertifikātu lietotājam pēc analoÄ£ijas ar servera sertifikātu. Å oreiz mēs izvēlamies veidni [noklusējums] HTTPS_client un neaizmirstiet noklikŔķināt Lietot visu.
  9. Cilnē Temats ievadiet informāciju par lietotāju. Mēs atbildam apstiprinoÅ”i uz pieprasÄ«jumu saglabāt sertifikātu marÄ·ierim.

Tā rezultātā cilnē Sertifikāti XCA jums vajadzētu iegÅ«t kaut ko lÄ«dzÄ«gu Å”im.

Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux
Å is minimālais atslēgu un sertifikātu komplekts ir pietiekams, lai sāktu paÅ”u serveru iestatÄ«Å”anu.

Lai konfigurētu, mums ir jāeksportē CA sertifikāts, servera sertifikāts un servera privātā atslēga.

Lai to izdarÄ«tu, attiecÄ«gajā XCA cilnē atlasiet vajadzÄ«go ierakstu un noklikŔķiniet uz Eksportēt.

Nginx

Es nerakstÄ«Å”u par to, kā instalēt un palaist nginx serveri - internetā ir pietiekami daudz rakstu par Å”o tēmu, nemaz nerunājot par oficiālo dokumentāciju. Sāksim uzreiz pie HTTPS un divu faktoru autentifikācijas iestatÄ«Å”anas, izmantojot pilnvaru.

Pievienojiet Ŕādas rindiņas servera sadaļai 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;
}

Detalizētu visu parametru aprakstu, kas saistÄ«ti ar ssl konfigurÄ“Å”anu nginx, var atrast Å”eit - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Es tikai īsi aprakstīŔu tos, ko sev jautāju:

  • ssl_verify_client ā€” norāda, ka ir jāpārbauda sertifikāta uzticamÄ«bas ķēde.
  • ssl_verify_depth ā€” definē uzticamā saknes sertifikāta meklÄ“Å”anas dziļumu ķēdē. Tā kā mÅ«su klienta sertifikāts tiek nekavējoties parakstÄ«ts saknes sertifikātā, dziļums ir iestatÄ«ts uz 1. Ja lietotāja sertifikāts ir parakstÄ«ts starpposma CA, tad Å”ajā parametrā ir jānorāda 2 utt.
  • ssl_client_certificate ā€” norāda ceļu uz uzticamo saknes sertifikātu, kas tiek izmantots, pārbaudot uzticamÄ«bu lietotāja sertifikātam.
  • ssl_certificate/ssl_certificate_key ā€” norādiet ceļu uz servera sertifikātu/privāto atslēgu.

Neaizmirstiet palaist nginx -t, lai pārbaudītu, vai konfigurācijā nav drukas kļūdu un vai visi faili atrodas pareizajā vietā utt.

Un tas arī viss! Kā redzat, iestatīŔana ir ļoti vienkārŔa.

Pārbauda, ā€‹ā€‹vai tas darbojas pārlÅ«kprogrammā Firefox

Tā kā mēs visu darām pilnÄ«bā Linux, mēs pieņemsim, ka mÅ«su lietotāji strādā arÄ« Linux (ja viņiem ir Windows, tad skatiet norādÄ«jumus par pārlÅ«kprogrammu iestatÄ«Å”anu iepriekŔējā rakstā.

  1. Palaidīsim Firefox.
  2. Vispirms mēģināsim pieteikties bez marÄ·iera. Mēs iegÅ«stam Å”o attēlu:

    Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

  3. Mēs turpinām par: preferences # privātums, un mēs ejam uz DroŔības ierÄ«cesā€¦
  4. Mēs nospiežam Slodzelai pievienotu jaunu PKCS#11 ierīces draiveri un norādītu ceļu uz mūsu librtpkcs11ecp.so.
  5. Lai pārbaudītu, vai sertifikāts ir redzams, varat doties uz Sertifikātu pārvaldnieks. Jums tiks piedāvāts ievadīt savu PIN. Pēc pareizas ievades varat pārbaudīt, kas atrodas cilnē Jūsu sertifikāti parādījās mūsu sertifikāts no marķiera.
  6. Tagad iesim ar žetonu. Firefox piedāvā izvēlēties sertifikātu, kas tiks atlasīts serverim. Izvēlieties mūsu sertifikātu.

    Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

  7. IENĀKUMS!

    Divu faktoru autentifikācija vietnē, izmantojot USB marķieri. Tagad arī Linux

IestatÄ«Å”ana tiek veikta vienreiz, un, kā redzat sertifikāta pieprasÄ«juma logā, mēs varam saglabāt savu izvēli. Pēc tam katru reizi, piesakoties portālā, mums bÅ«s tikai jāievieto marÄ·ieris un jāievada lietotāja PIN kods, kas tika norādÄ«ts formatÄ“Å”anas laikā. Pēc Ŕādas autentifikācijas serveris jau zina, kurÅ” lietotājs ir pieteicies un vairs nevar izveidot nekādus papildu logus verifikācijai, bet gan uzreiz ielaist lietotāju savā personÄ«gajā kontā.

Apache

Tāpat kā ar nginx, nevienam nevajadzētu rasties problēmām ar apache instalÄ“Å”anu. Ja nezināt, kā instalēt Å”o tÄ«mekļa serveri, izmantojiet oficiālo dokumentāciju.

Un mēs sākam iestatīt mūsu HTTPS un divu faktoru autentifikāciju:

  1. Vispirms jāaktivizē mod_ssl:
    $ a2enmod ssl
  2. Un pēc tam iespējojiet vietnes noklusējuma HTTPS iestatījumus:
    $ a2ensite default-ssl
  3. Tagad mēs rediģējam konfigurācijas failu: /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

    Kā redzat, parametru nosaukumi praktiski sakrÄ«t ar parametru nosaukumiem nginx, tāpēc es tos nepaskaidroÅ”u. Atkal ikviens, kuru interesē sÄ«kāka informācija, ir laipni aicināts iepazÄ«ties ar dokumentāciju.
    Tagad mēs restartējam mūsu serveri:

    $ service apache2 reload
    $ service apache2 restart

  4. Kā redzat, divu faktoru autentifikācijas iestatÄ«Å”ana jebkurā tÄ«mekļa serverÄ«, neatkarÄ«gi no tā, vai tā ir operētājsistēma Windows vai Linux, ir ne vairāk kā vienas stundas jautājums. Un pārlÅ«kprogrammu iestatÄ«Å”ana aizņem apmēram 5 minÅ«tes. Daudzi cilvēki domā, ka divu faktoru autentifikācijas iestatÄ«Å”ana un darbÄ«ba ar to ir sarežģīta un neskaidra. Es ceru, ka mÅ«su raksts vismaz nedaudz atspēko Å”o mÄ«tu.

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Vai jums ir nepiecieÅ”ami norādÄ«jumi par TLS iestatÄ«Å”anu ar sertifikātiem saskaņā ar GOST 34.10-2012:

  • Jā, TLS-GOST ir ļoti nepiecieÅ”ams

  • Nē, skaņoÅ”ana ar GOST algoritmiem nav interesanta

Nobalsoja 44 lietotāji. 9 lietotāji atturējās.

Avots: www.habr.com

Pievieno komentāru