Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux
В një nga artikujt tanë të mëparshëm folëm për rëndësinë e vërtetimit me dy faktorë në portalet e korporatave të kompanive. Herën e fundit ne demonstruam se si të konfigurojmë vërtetimin e sigurt në serverin e internetit IIS.

Në komente, na u kërkua të shkruanim udhëzime për serverët më të zakonshëm të internetit për Linux - nginx dhe Apache.

Ju pyetët - kemi shkruar.

Çfarë ju nevojitet për të filluar?

  • Çdo shpërndarje moderne Linux. Bëra një konfigurim provë në MX Linux 18.2_x64. Kjo sigurisht nuk është një shpërndarje serveri, por nuk ka gjasa të ketë ndonjë ndryshim për Debian. Për shpërndarjet e tjera, shtigjet drejt bibliotekave të konfigurimit mund të ndryshojnë pak.
  • Token. Ne vazhdojmë të përdorim modelin Rutoken EDS PKI, e cila është ideale për sa i përket karakteristikave të shpejtësisë për përdorim të korporatës.
  • Për të punuar me një shenjë në Linux, duhet të instaloni paketat e mëposhtme:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

Lëshimi i certifikatave

Në artikujt e mëparshëm, ne u mbështetëm në faktin se certifikatat e serverit dhe klientit do të lëshohen duke përdorur Microsoft CA. Por meqenëse po konfigurojmë gjithçka në Linux, do t'ju tregojmë gjithashtu për një mënyrë alternative për lëshimin e këtyre certifikatave - pa u larguar nga Linux.
Ne do të përdorim XCA si CA (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 në modalitetin e linjës së komandës duke përdorur mjetet e veglave OpenSSL dhe pkcs11, por për thjeshtësi dhe qartësi më të madhe, ne nuk do t'i paraqesim ato në këtë artikull.

Si T'ia Fillohet

  1. Instaloni:
    $ apt-get install xca
  2. Dhe vrapojmë:
    $ xca
  3. Ne krijojmë bazën tonë të të dhënave për CA - /root/CA.xdb
    Ne rekomandojmë ruajtjen e bazës së të dhënave të Autoritetit të Certifikatës në një dosje ku vetëm administratori ka qasje. Kjo është e rëndësishme për të mbrojtur çelësat privatë të certifikatave rrënjësore, të cilat përdoren për të nënshkruar të gjitha certifikatat e tjera.

Krijo çelësa dhe certifikatë CA rrënjë

Një infrastrukturë e çelësit publik (PKI) bazohet në një sistem hierarkik. Gjëja kryesore në këtë sistem është autoriteti i certifikimit rrënjë ose CA rrënjë. Së pari duhet të krijohet certifikata e saj.

  1. Ne krijojmë një çelës privat RSA-2048 për CA. Për ta bërë këtë, në skedën Çelësat privatë shtytje Çelës i ri dhe zgjidhni llojin e duhur.
  2. Vendosni një emër për çiftin e ri të çelësave. E quajta CA Key.
  3. Ne lëshojmë vetë certifikatën CA, duke përdorur çiftin e krijuar të çelësave. Për ta bërë këtë, shkoni te skeda Certifikata dhe shtytje Certifikatë e re.
  4. Sigurohuni që të zgjidhni SHA-256, sepse përdorimi i SHA-1 nuk mund të konsiderohet më i sigurt.
  5. Sigurohuni që të zgjidhni si një shabllon [e parazgjedhur] CA. Mos harroni të klikoni mbi Aplikoni të gjitha, përndryshe shablloni nuk zbatohet.
  6. Në skedën subjekt zgjidhni çiftin tonë të çelësave. Aty mund të plotësoni të gjitha fushat kryesore të certifikatës.

Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

Krijimi i çelësave dhe një certifikate e serverit https

  1. Në mënyrë të ngjashme, ne krijojmë një çelës privat RSA-2048 për serverin, unë e quajta atë Çelës Server.
  2. Kur krijojmë një certifikatë, ne zgjedhim që certifikata e serverit duhet të nënshkruhet me një certifikatë CA.
  3. Mos harroni të zgjidhni SHA-256.
  4. Ne zgjedhim si shabllon [e parazgjedhur] HTTPS_server. Klikoni mbi Aplikoni të gjitha.
  5. Pastaj në skedën subjekt zgjidhni çelësin tonë dhe plotësoni fushat e kërkuara.

Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

Krijo çelësa dhe certifikatë për përdoruesin

  1. Çelësi privat i përdoruesit do të ruhet në token tonë. Për të punuar me të, duhet të instaloni bibliotekën PKCS#11 nga faqja jonë e internetit. Për shpërndarjet e njohura, ne shpërndajmë paketa të gatshme, të cilat ndodhen këtu - https://www.rutoken.ru/support/download/pkcs/. Kemi edhe montime për arm64, armv7el, armv7hf, e2k, mipso32el, të cilat mund të shkarkohen nga SDK-ja jonë - https://www.rutoken.ru/developers/sdk/. Përveç asambleve për Linux, ka edhe asamble për macOS, freebsd dhe android.
  2. Shtimi i një ofruesi të ri PKCS#11 në XCA. Për ta bërë këtë, shkoni te menyja Opcionet te skeda Ofruesi PKCS#11.
  3. Ne shtypim Shtoj dhe zgjidhni shtegun për në bibliotekën PKCS#11. Në rastin tim është usrliblibrtpkcs11ecp.so.
  4. Do të na duhet një shenjë e formatuar Rutoken EDS PKI. Shkarkoni programin rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Ne kryejmë
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Ne zgjedhim çelësin RSA-2048 për Rutoken EDS PKI si lloj çelësi. Unë e quajta këtë çelës "Çelësi i klientit".

    Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

  7. Futni kodin PIN. Dhe ne presim përfundimin e gjenerimit të harduerit të çiftit të çelësave

    Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

  8. Ne krijojmë një certifikatë për përdoruesin në analogji me certifikatën e serverit. Këtë herë ne zgjedhim një shabllon [e parazgjedhur] HTTPS_klient dhe mos harroni të klikoni Aplikoni të gjitha.
  9. Në skedën subjekt futni informacione rreth përdoruesit. Ne i përgjigjemi pozitivisht kërkesës për të ruajtur certifikatën për shenjën.

Si rezultat, në skedën Certifikimi në XCA duhet të merrni diçka të tillë.

Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux
Ky grup minimal i çelësave dhe certifikatave është i mjaftueshëm për të filluar konfigurimin e vetë serverëve.

Për të konfiguruar, duhet të eksportojmë certifikatën CA, certifikatën e serverit dhe çelësin privat të serverit.

Për ta bërë këtë, zgjidhni hyrjen e dëshiruar në skedën përkatëse në XCA dhe klikoni Eksport.

nginx

Unë nuk do të shkruaj se si të instaloj dhe ekzekutoj një server nginx - ka mjaft artikuj për këtë temë në internet, për të mos përmendur dokumentacionin zyrtar. Le të kalojmë drejtpërdrejt te konfigurimi i HTTPS dhe vërtetimi me dy faktorë duke përdorur një token.

Shtoni linjat e mëposhtme në seksionin e serverit në 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;
}

Një përshkrim i detajuar i të gjithë 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ë thjesht do të përshkruaj shkurtimisht ato që pyeta veten:

  • ssl_verify_client - specifikon që zinxhiri i besimit për certifikatën duhet të verifikohet.
  • ssl_verify_depth - Përcakton thellësinë e kërkimit për certifikatën rrënjësore të besuar në zinxhir. Meqenëse certifikata jonë e klientit nënshkruhet menjëherë në certifikatën rrënjësore, thellësia vendoset në 1. Nëse certifikata e përdoruesit është nënshkruar në një CA të ndërmjetme, atëherë 2 duhet të specifikohet në këtë parametër, e kështu me radhë.
  • ssl_client_certificate - specifikon shtegun drejt certifikatës rrënjësore të besuar, e cila përdoret kur kontrollohet besimi në certifikatën e përdoruesit.
  • ssl_certificate/ssl_certificate_key - tregoni rrugën drejt certifikatës së serverit/çelësit privat.

Mos harroni të ekzekutoni nginx -t për të kontrolluar që nuk ka gabime shtypi në konfigurim dhe që të gjithë skedarët janë në vendin e duhur, e kështu me radhë.

Dhe kjo eshte e gjitha! Siç mund ta shihni, konfigurimi është shumë i thjeshtë.

Kontrolloni nëse funksionon në Firefox

Meqenëse ne bëjmë gjithçka plotësisht në Linux, do të supozojmë se përdoruesit tanë punojnë gjithashtu në Linux (nëse kanë Windows, atëherë shikoni udhëzimet për konfigurimin e shfletuesve në artikullin e mëparshëm.

  1. Le të hapim Firefox-in.
  2. Le të përpiqemi të identifikohemi pa një shenjë fillimisht. Ne marrim këtë foto:

    Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

  3. Ne vazhdojmë rreth: Preferencat # intimitetit, dhe shkojmë në Pajisjet e sigurisë…
  4. Ne shtypim Ngarkesëpër të shtuar një drejtues pajisjeje të re PKCS#11 dhe për të specifikuar shtegun për në librtpkcs11ecp.so tonë.
  5. Për të kontrolluar nëse certifikata është e dukshme, mund të shkoni te Menaxher i certifikatës. Do t'ju kërkohet të vendosni PIN-in tuaj. Pas futjes së saktë, mund të kontrolloni se çfarë është në skedë Certifikatat tuaja u shfaq certifikata jonë nga shenja.
  6. Tani le të shkojmë me shenjën. Firefox-i ju kërkon të zgjidhni një certifikatë që do të zgjidhet për serverin. Zgjidhni certifikatën tonë.

    Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

  7. FITIMI!

    Autentifikimi me dy faktorë në sit duke përdorur një shenjë USB. Tani edhe për Linux

Konfigurimi bëhet një herë, dhe siç mund ta shihni në dritaren e kërkesës për certifikatë, ne mund ta ruajmë përzgjedhjen tonë. Pas kësaj, sa herë që hyjmë në portal, do të na duhet vetëm të fusim një shenjë dhe të futim kodin PIN të përdoruesit që është specifikuar gjatë formatimit. Pas një vërtetimi të tillë, serveri tashmë e di se cili përdorues është identifikuar dhe ju nuk mund të krijoni më asnjë dritare shtesë për verifikim, por menjëherë e lini përdoruesin në llogarinë e tij personale.

Apache

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

Dhe ne fillojmë të konfigurojmë HTTPS-në tonë dhe vërtetimin me dy faktorë:

  1. Së pari ju duhet të aktivizoni mod_ssl:
    $ a2enmod ssl
  2. Dhe më pas aktivizoni cilësimet e paracaktuara HTTPS të sajtit:
    $ a2ensite default-ssl
  3. Tani ne 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ç mund ta shihni, emrat e parametrave praktikisht përkojnë me emrat e parametrave në nginx, kështu që unë nuk do t'i shpjegoj ato. Përsëri, kushdo që është i interesuar për detajet është i mirëpritur në dokumentacion.
    Tani ne rifillojmë serverin tonë:

    $ service apache2 reload
    $ service apache2 restart

  4. Siç mund ta shihni, vendosja e vërtetimit me dy faktorë në çdo server në internet, qoftë në Windows ose Linux, kërkon maksimum një orë. Dhe konfigurimi i shfletuesve zgjat rreth 5 minuta. Shumë njerëz mendojnë se vendosja dhe puna me vërtetimin me dy faktorë është e vështirë dhe e paqartë. Shpresoj që artikulli ynë ta zhvlerësojë këtë mit, të paktën pak.

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

A keni nevojë për udhëzime për vendosjen e TLS me certifikata sipas GOST 34.10-2012:

  • Po, TLS-GOST është shumë i nevojshëm

  • Jo, akordimi me algoritmet GOST nuk është interesant

44 përdorues kanë votuar. 9 përdorues abstenuan.

Burimi: www.habr.com

Shto një koment