Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux
Në njeri nga artikujt tanë të mëparshëm folëm për rëndësinë e autentifikimit me dy faktorë në portalet e kompanive. Të fundit, ne demonstruam se si të konfigurojmë autentifikimin e sigurt në serverin web IIS.

NĂ« komentet na u kĂ«rkua tĂ« shkruajmĂ« njĂ« udhĂ«zues pĂ«r serverĂ«t e web tĂ« zakonshĂ«m nĂ«n Linux — nginx dhe Apache.

E kĂ«rkuat — ne e shkruam.

ÇfarĂ« duhet pĂ«r t'u nisur?

  • Cdo shpĂ«rndarje moderne Linux. UnĂ« e kryeva konfigurimin testues nĂ« MX Linux 18.2_x64. Kjo natyrisht nuk Ă«shtĂ« njĂ« shpĂ«rndarje serveri, por pĂ«r Debian nuk do tĂ« ketĂ« ndonjĂ« ndryshim tĂ« madh. PĂ«r shpĂ«rndarje tĂ« tjera, rrugĂ«t pĂ«r nĂ« libraritĂ« dhe konfigurimet mund tĂ« ndryshojnĂ« pak.
  • Token. Ne vazhdojmĂ« tĂ« pĂ«rdorim modelin Rutoken ECP PKI, i cili Ă«shtĂ« i pĂ«rshtatshĂ«m pĂ«r karakteristikat e shpejtĂ«sisĂ« pĂ«r pĂ«rdorim tĂ« korporatave.
  • PĂ«r tĂ« punuar me token nĂ« Linux, Ă«shtĂ« e nevojshme tĂ« instaloni paketat e mĂ«poshtme:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

Rishkrimi i certifikatave

NĂ« artikujt e mĂ«parshĂ«m ne u mbĂ«shtetĂ«m nĂ« faktin se certifikatate e serverĂ«ve dhe klientĂ«ve do tĂ« lĂ«shoheshin pĂ«rmes Microsoft CA. Por tani qĂ« jemi duke konfiguruar gjithçka nĂ« Linux, gjithashtu do tĂ« flasim pĂ«r njĂ« mĂ«nyrĂ« alternative pĂ«r lĂ«shimin e kĂ«tyre certifikatave — pa e lĂ«nĂ« Linux-in.
Si CA, do të përdorim XCA (https://hohnstaedt.de/xca/), i cili është i disponueshëm në çdo shpërndarje moderne Linux. Të gjitha veprimet që do të kryejmë në XCA mund të bëhen gjithashtu në linjën e komandave me ndihmën e utilitarëve OpenSSL dhe pkcs11-tool, por për një thjeshtësi dhe qartësi më të madhe në këtë artikull nuk do t'i përfshijmë.

Fillimi i punës

  1. Instalojmë:
    $ apt-get install xca
  2. Dhe e nisim:
    $ xca
  3. KrijojmĂ« bazĂ«n tonĂ« tĂ« tĂ« dhĂ«nave pĂ«r CA — /root/CA.xdb
    Ne rekomandojmë që baza e të dhënave të Autoritetit të Certifikimit të ruhet në një folder, ku ka akses vetëm administratori. Kjo është e rëndësishme për mbrojtjen e çelësave të mbyllur të certifikatave themelore, të cilat përdoren për nënshkrimin e të gjitha certifikatave të tjera.

Krijojmë çelësat dhe certifikatën e root CA

Në thelb të infrastrukturës së çelësave publik (PKI) ekziston një sistem hierarkik. E rëndësishme në këtë sistem është qendra e certifikimit root ose root CA. Certifikata e tij duhet të krijohet e para.

  1. KrijojmĂ« njĂ« çelĂ«s privat RSA-2048 pĂ«r CA. PĂ«r kĂ«tĂ«, nĂ« skedĂ«n ÇelĂ«sat PrivatĂ« klikojmĂ« ÇelĂ«s i Ri dhe zgjedhim llojin pĂ«rkatĂ«s.
  2. CaktojmĂ« njĂ« emĂ«r pĂ«r çiftin e ri tĂ« çelĂ«sit. UnĂ« e quajta — CA Key.
  3. Shkruajmë vetë certifikatën CA, duke përdorur çiftin e krijuar të çelësave. Për këtë, kalojmë në tabin Certifikatat and click Certifikatë e Re.
  4. Sigurohuni të zgjidhni SHA-256, sepse përdorimi i SHA-1 nuk mund të konsiderohet më i sigurt.
  5. Si një model, sigurohuni të zgjidhni [default] CA. Mos harroni të klikoni në Apliko të gjitha, përndryshe modeli nuk do të aplikohet.
  6. Në skedën Subjekti zgjidhim çiftin tonë të çelësave. Aty gjithashtu mund të plotësoni të gjitha fushat kryesore të certifikatës.

Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

Krijojmë çelësa dhe certifikatën e serverit https

  1. Po ashtu krijojmĂ« njĂ« çelĂ«s tĂ« mbyllur RSA-2048 pĂ«r serverin, unĂ« e quajta — ÇelĂ«si i Serverit.
  2. Gjatë krijimit të certifikatës, zgjidhni që certifikata e serverit duhet të nënshkruhet nga certifikata CA.
  3. Mos harroni të zgjidhni SHA-256.
  4. Si një model zgjidhni [default] HTTPS_server. Klikoni në Apliko të gjitha.
  5. Pas kësaj, në tabin Subjekti zgjidhim çelësin tonë dhe plotësojmë fushat e nevojshme.

Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

Krijojmë çelësa dhe certifikatën për përdoruesin

  1. ÇelĂ«si i mbyllur i pĂ«rdoruesit do tĂ« ruhet nĂ« tokenin tonĂ«. PĂ«r ta pĂ«rdorur atĂ«, nevojitet tĂ« instaloni bibliotekĂ«n PKCS#11 nga faqja jonĂ«. PĂ«r distribuima tĂ« njohura ne ofrojmĂ« paketa pĂ«rfundimtare, tĂ« cilat ndodhen kĂ«tu — https://www.rutoken.ru/support/download/pkcs/. Ne gjithashtu kemi mbledhje pĂ«r arm64, armv7el, armv7hf, e2k, mipso32el, tĂ« cilat mund t’i merrni nĂ« SDK-nĂ« tonĂ« — https://www.rutoken.ru/developers/sdk/. PĂ«rveç mbledhjeve pĂ«r linux, ka gjithashtu mbledhje pĂ«r macOS, freebsd dhe android.
  2. Shtojmë një ofrues të ri PKCS#11 në XCA. Për këtë, shkojmë në menunë Opsionet në tabin Ofruesi PKCS#11.
  3. Klikoni Shto dhe zgjidhni rrugën drejt bibliotekës PKCS#11. Në rastin tim, është usrliblibrtpkcs11ecp.so.
  4. Na nevojitet njĂ« token i formatuar RUToken ECP PKI. Shkarkoni utilitarin rtAdmin — https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Kryejmë
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u
  6. Si tip çelĂ«si zgjidhni — çelĂ«si RSA-2048 nĂ« RUToken ECP PKI. UnĂ« e quajta kĂ«tĂ« çelĂ«s ÇelĂ«si i Klientit.

    Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

  7. Shkruani PIN-in. Dhe presim që të përfundojë gjenerimi fizik i çiftit të çelësave.

    Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

  8. Certifikatën për përdoruesin e krijojmë në përputhje me certifikatën e serverit. Këtë herë zgjedhim modelin [default] HTTPS_client dhe mos harroni të klikoni Apliko të gjitha.
  9. Në skedën Subjekti shkruani informacionin e përdoruesit. Në pyetjen për të ruajtur certifikatën në token, përgjigjuni me pohim.

Në përfundim, në tabin Certifikatat në XCA duhet të duket ndërlikueshëm kështu.

Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux
Ky set minimal çelësash dhe certifikatash është i mjaftueshëm për të filluar konfigurimin e serverëve direkt.

PĂ«r konfigurim, na nevojitet tĂ« eksportojmĂ« certifikatĂ«n e UÇ, certifikatĂ«n e serverit dhe çelĂ«sin e mbyllur tĂ« serverit.

Për këtë, duhet të zgjidhni regjistrimin e duhur në skedën përkatëse në XCA dhe të klikoni Eksporto.

Nginx

Si tĂ« instaloni dhe tĂ« nisni serverin nginx, nuk do tĂ« shkruaj — nĂ« kĂ«tĂ« temĂ« ka mjaft artikuj nĂ« internet, pĂ«rveç dokumentacionit zyrtar. Le tĂ« fillojmĂ« menjĂ«herĂ« me konfigurimin e HTTPS dhe dy faktorĂ«ve tĂ« autentikimit me token.

Shtojmë në seksionin server në nginx.conf rreshtat e mëposhtëm:

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

PĂ«rshkrimi i detajuar i tĂ« gjitha parametrave qĂ« lidhen me konfigurimin e ssl nĂ« nginx mund tĂ« gjendet kĂ«tu — https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Unë do ta përshkruaj vetëm shkurt ato që kam vendosur vetë:

  • ssl_verify_client — tregon se duhet tĂ« verifikohet zinxhiri i besimit pĂ«r certifikatĂ«n.
  • ssl_verify_depth — pĂ«rcakton thellĂ«sinĂ« e kĂ«rkimit tĂ« certifikatĂ«s sĂ« besuar nĂ« zinxhir. Duke qenĂ« se certifikata e klientit jonĂ« Ă«shtĂ« e nĂ«nshkruar menjĂ«herĂ« nĂ« certifikatĂ«n rrĂ«njĂ«, atĂ«herĂ« thellĂ«sia Ă«shtĂ« vendosur — 1. NĂ« qoftĂ« se certifikata e pĂ«rdoruesit Ă«shtĂ« e nĂ«nshkruar nga njĂ« CA ndĂ«rmjetĂ«s, atĂ«herĂ« nĂ« kĂ«tĂ« parametrin duhet tĂ« vendosni 2, dhe kĂ«shtu me radhĂ«.
  • ssl_client_certificate — tregon rrugĂ«n deri te certifikata rrĂ«njĂ« e besuar, e cila pĂ«rdoret pĂ«r verifikimin e besueshmĂ«risĂ« sĂ« certifikatĂ«s sĂ« pĂ«rdoruesit.
  • ssl_certificate/ssl_certificate_key — tregojnĂ« rrugĂ«n deri te certifikata/çelĂ«si privat i serverit.

Mos haroni të ekzekutoni nginx -t, për të verifikuar se në konfigurim nuk ka gabime shkrimi dhe se të gjitha skedarët janë vendosur siç duhet.

Dhe e gjithë kjo! Siç e shihni, konfigurimi është shumë i thjeshtë.

Verifikojmë funksionimin në Firefox

Duke qenë se ne e bëjmë gjithçka në Linux, le të supozojmë se edhe përdoruesit tanë punojnë në Linux (nëse ata kanë Windows, atëherë shihni udhëzimin për konfigurimin e shfletuesve në artikullin e mëparshëm.

  1. Nisim Firefox.
  2. Të provojmë fillimisht të hyjmë pa token. Marrim këtë pamje:

    Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

  3. Hymë në about:preferences#privacy, dhe shkojmë te Security Devices

  4. Klikoni Ngarko, për të shtuar një drejtues pajisje të ri PKCS#11 dhe tregojmë rrugën deri te librtpkcs11ecp.so.
  5. Për të verifikuar nëse certifikata shikohet, mund të hyjmë në Certificate Manager. Do të shfaqet një kërkesë për të futur PIN-in. Pas hyrjes së saktë, mund të verifikohet nëse në skedën Your Certificates ka dalë certifikata jonë e tokenit.
  6. Tani hymë me token. Firefox ofron të zgjedhë certifikatën, e cila do të seçohet në server. Zgjidhni certifikatën tonë.

    Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

  7. PROFIT!

    Autentifikim me dy faktorë në sajt duke përdorur USB-token. Tani edhe për Linux

Konfigurimi bëhet një herë, dhe siç duket në dritaren e kërkesës për certifikatë, ne mund ta ruajmë zgjedhjen tonë. Pas kësaj, gjatë çdo hyrjeje në portal, na duhet vetëm të fusim tokenin dhe të shkruajmë PIN-in e përdoruesit, i cili u vendos gjatë formatimit. Pas një autentifikimi të tillë, serveri tashmë e di se cili përdorues ka hyrë dhe nuk nevojitet të bëhen dritare të tjera për verifikim, por përdoruesi futet menjëherë në kabinetin e tij personal.

Apache

Ashtu si me nginx, nuk duhet të ketë probleme me instalimin e apache. Nëse nuk e dini se si ta instaloni këtë server web, thjesht përdorni dokumentacionin zyrtar.

Tani ne fillojmë me konfigurimin e HTTPS dhe autentifikimit me dy faktorë:

  1. Për fillim, është e nevojshme të aktivizohet mod_ssl:
    $ a2enmod ssl
  2. Dhe pastaj të përfshihen cilësimet e HTTPS për sitin si parazgjedhje:
    $ a2ensite default-ssl
  3. Tani po redaktojmë skedarin e konfigurimit: /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

    Siç e shihni, emrat e parametrave janĂ« pothuajse tĂ« njĂ«jtĂ« me emrat e parametrave nĂ« nginx, prandaj nuk do t'i shpjegoj. SĂ«rish, pĂ«r ata qĂ« janĂ« tĂ« interesuar pĂ«r detaje – mirĂ« se vini nĂ« dokumentacion.
    Tani rihapim serverin tonë:

    $ service apache2 reload
    $ service apache2 restart

  4. Siç e shihni, konfigurimi i autentifikimit me dy faktorë në çdo server web, qoftë në Windows, qoftë në Linux, është një punë që zgjat maksimumi një orë. Dhe konfigurimi i shfletuesve merr rreth 5 minuta. Shumë mendojnë se konfigurimi dhe puna me autentifikimin me dy faktorë është e komplikuar dhe e paqartë. Shpresoj se artikulli ynë, edhe pak, e hedh poshtë këtë mit.

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutem.

A nevojitet një udhëzues për konfigurimin e funksionimit të TLS me certifikatat sipas GOST 34.10-2012:

  • Po, TLS-GOST Ă«shtĂ« shumĂ« i nevojshĂ«m

  • Jo, konfigurimi me algoritmet GOST nuk Ă«shtĂ« i interesuar

Këto votuan 44 përdorues. U përmbajtën 9 përdorues.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster