Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux
В salah sahiji artikel urang saméméhna urang ngobrol ngeunaan pentingna auténtikasi dua-faktor dina portal perusahaan perusahaan. Kapungkur waktos urang nunjukkeun kumaha nyetél auténtikasi aman dina pangladén wéb IIS.

Dina koméntar, kami dipenta pikeun nyerat paréntah pikeun pangladén wéb anu paling umum pikeun Linux - nginx sareng Apache.

Anjeun nanya - kami wrote.

Naon anu anjeun peryogikeun pikeun ngamimitian?

  • Sakur distribusi Linux modern. Kuring ngalakukeun pangaturan tés dina MX Linux 18.2_x64. Ieu tangtosna sanés distribusi server, tapi sigana moal aya bédana pikeun Debian. Pikeun distribusi anu sanés, jalur ka perpustakaan konfigurasi tiasa rada béda.
  • Token. Urang teruskeun ngagunakeun modél Rutoken EDS PKI, nu idéal dina watesan ciri speed pikeun pamakéan perusahaan.
  • Pikeun damel sareng token dina Linux, anjeun kedah masang bungkusan ieu:
    libccid libpcsclite1 pcscd pcsc-parabot opensc

Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

Ngaluarkeun sertipikat

Dina tulisan sateuacana, urang ngandelkeun kanyataan yén sertipikat server sareng klien bakal dikaluarkeun nganggo Microsoft CA. Tapi kumargi urang nuju nyetél sadayana dina Linux, kami ogé bakal nyarioskeun ka anjeun ngeunaan cara alternatif pikeun ngaluarkeun sertipikat ieu - tanpa ninggalkeun Linux.
Urang bakal ngagunakeun XCA salaku CA (https://hohnstaedt.de/xca/), anu sayogi dina distribusi Linux modern. Sadaya tindakan anu bakal urang laksanakeun dina XCA tiasa dilakukeun dina modeu garis paréntah nganggo alat OpenSSL sareng pkcs11-alat, tapi pikeun kesederhanaan sareng kajelasan anu langkung ageung, kami moal nampilkeunana dina tulisan ieu.

Ngalalanyahan

  1. Masang:
    $ apt-get install xca
  2. Sareng urang ngajalankeun:
    $ xca
  3. Urang nyieun database kami pikeun CA - /root/CA.xdb
    Kami ngarékoméndasikeun pikeun nyimpen databés Otoritas Sertipikat dina polder anu ngan ukur ku administrator anu gaduh aksés. Ieu penting pikeun ngajaga konci pribadi tina sertipikat akar, anu dianggo pikeun ngadaptarkeun sadaya sertipikat anu sanés.

Jieun konci na akar CA sertipikat

Infrastruktur konci publik (PKI) dumasar kana sistem hierarki. Hal utama dina sistem ieu nyaéta otoritas sertifikasi akar atanapi akar CA. Sertipikatna kedah didamel heula.

  1. Urang nyieun konci swasta RSA-2048 pikeun CA. Jang ngalampahkeun ieu, dina tab Konci swasta Teken konci anyar tur pilih tipe luyu.
  2. Setel ngaran pikeun pasangan konci anyar. Kuring disebut CA Key.
  3. Urang ngaluarkeun sertipikat CA sorangan, ngagunakeun pasangan konci dijieun. Jang ngalampahkeun ieu, buka tab sertipikat teras klik Sertipikat anyar.
  4. Pastikeun pikeun milih Sha-256, sabab ngagunakeun SHA-1 teu bisa deui dianggap aman.
  5. Pastikeun pikeun milih salaku citakan [standar] CA. Tong hilap klik Larapkeun sadayana, disebutkeun template teu dilarapkeun.
  6. Dina tab taluk milih pasangan konci kami. Aya anjeun tiasa ngeusian sadaya widang utama sertipikat.

Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

Nyiptakeun konci sareng sertipikat server HTTPS

  1. Dina cara anu sami, urang nyiptakeun konci pribadi RSA-2048 pikeun server, kuring nyauran éta Server Key.
  2. Nalika nyieun sertipikat, kami milih yén sertipikat server kedah ditandatanganan sareng sertipikat CA.
  3. Tong hilap milih Sha-256.
  4. Urang milih salaku citakan [standar] HTTPS_server. Klik dina Larapkeun sadayana.
  5. Lajeng dina tab taluk pilih konci kami sarta eusian widang nu diperlukeun.

Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

Jieun konci sareng sertipikat pikeun pangguna

  1. Konci pribadi pangguna bakal disimpen dina token kami. Jang ngalampahkeun ieu, anjeun kudu masang perpustakaan PKCS # 11 ti ramatloka kami. Pikeun distribusi populér, kami ngadistribusikaeun bungkusan siap-siap, anu aya di dieu - https://www.rutoken.ru/support/download/pkcs/. Kami ogé ngagaduhan rakitan pikeun arm64, armv7el, armv7hf, e2k, mipso32el, anu tiasa diunduh tina SDK kami - https://www.rutoken.ru/developers/sdk/. Salian rakitan pikeun Linux, aya ogé rakitan pikeun macOS, freebsd sareng android.
  2. Nambahkeun PKCS anyar # 11 Panyadia pikeun XCA. Jang ngalampahkeun ieu, buka menu nu pilihan kana tab PKCS # 11 panyadia.
  3. Urang pencét nambah tur pilih jalur ka PKCS # 11 perpustakaan. Bisi kuring éta usrliblibrtpkcs11ecp.so.
  4. Urang peryogi token Rutoken EDS PKI anu diformat. Unduh utiliti rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Urang ngalaksanakeun
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Urang milih konci RSA-2048 pikeun Rutoken EDS PKI salaku tipe konci. Kuring disebut konci Klién Key ieu.

    Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

  7. Lebetkeun kodeu PIN. Sareng urang ngantosan parantosan generasi hardware tina pasangan konci

    Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

  8. Urang nyieun sertipikat pikeun pamaké ku analogi jeung sertipikat server. Kali ieu urang milih template [standar] HTTPS_client sareng tong hilap klik Larapkeun sadayana.
  9. Dina tab taluk asupkeun informasi ngeunaan pamaké. Urang ngajawab dina satuju kana pamundut pikeun nyimpen sertipikat pikeun token nu.

Hasilna, dina tab Sertipikat di XCA anjeun kudu meunang hal kawas kieu.

Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux
Set konci sareng sertipikat minimum ieu cekap pikeun ngamimitian nyetél server sorangan.

Pikeun ngonpigurasikeun, urang kedah ékspor sertipikat CA, sertipikat server sareng konci pribadi server.

Jang ngalampahkeun ieu, pilih entri nu dipikahoyong dina tab pakait dina XCA teras klik ekspor.

Nginx

Kuring moal nyerat kumaha masang sareng ngajalankeun server nginx - aya cukup tulisan ngeunaan topik ieu dina Internét, sanés waé dokuméntasi resmi. Hayu urang langsung nyetél HTTPS sareng auténtikasi dua faktor nganggo token.

Tambahkeun garis di handap ieu kana bagian server di 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;
}

Katerangan lengkep ngeunaan sadaya parameter anu aya hubunganana sareng ngonpigurasikeun ssl di nginx tiasa dipendakan di dieu - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Kuring ngan bakal ngajelaskeun sakeudeung anu kuring naroskeun ka diri kuring:

  • ssl_verify_client - netepkeun yén ranté kapercayaan pikeun sertipikat kedah diverifikasi.
  • ssl_verify_depth - Nangtukeun jero pilarian pikeun sertipikat root dipercaya dina ranté nu. Kusabab sertipikat klien kami langsung ditandatanganan dina sertipikat akar, jerona disetel ka 1. Upami sertipikat pangguna ditandatanganan dina CA panengah, teras 2 kedah dieusian dina parameter ieu, sareng saterasna.
  • ssl_client_certificate - nangtukeun jalur ka sertipikat akar anu dipercaya, anu dianggo nalika mariksa kapercayaan kana sertipikat pangguna.
  • ssl_certificate / ssl_certificate_key - nunjukkeun jalur ka sertipikat server / konci pribadi.

Tong hilap ngajalankeun nginx -t pikeun pariksa yén teu aya salah ketik dina konfigurasi, sareng sadaya file aya dina tempat anu leres, sareng anu sanésna.

Sareng éta sadayana! Sakumaha anjeun tiasa tingali, setelan basajan pisan.

Mariksa éta jalan dina Firefox

Kusabab urang ngalakukeun sadayana lengkep dina Linux, urang bakal nganggap yén pangguna urang ogé damel di Linux (upami aranjeunna gaduh Windows, teras tingali parentah pikeun nyetel browser dina artikel saméméhna.

  1. Hayu urang ngajalankeun Firefox.
  2. Hayu urang cobian log in tanpa token heula. Urang meunang gambar ieu:

    Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

  3. Terus urang ngeunaan: kahoyong # privasi, sarta kami balik ka Alat Kaamanan…
  4. Urang pencét momotkeunpikeun nambahkeun PKCS anyar # 11 Supir Alat jeung nangtukeun jalur ka librtpkcs11ecp.so kami.
  5. Pikeun pariksa yén sertipikat katingali, anjeun tiasa angkat ka Manajer Sértip. Anjeun bakal dipenta pikeun nuliskeun PIN anjeun. Saatos input anu leres, anjeun tiasa pariksa naon anu aya dina tab Sertipikat Anjeun sertipikat kami ti token mucunghul.
  6. Ayeuna hayu urang angkat sareng token. Firefox nyarankeun anjeun milih sertipikat anu bakal dipilih pikeun pangladén. Pilih sertipikat kami.

    Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

  7. Kauntungan!

    Auténtikasi dua faktor dina situs nganggo token USB. Ayeuna ogé pikeun Linux

Setélan parantos dilakukeun sakali, sareng anjeun tiasa ningali dina jandela pamundut sertipikat, urang tiasa nyimpen pilihan urang. Saatos ieu, unggal waktos urang lebet kana portal, urang ngan ukur kedah nyelapkeun token sareng lebetkeun kodeu PIN pangguna anu dieusian nalika pormat. Saatos auténtikasi sapertos kitu, server parantos terang pangguna mana anu parantos lebet sareng anjeun moal tiasa deui nyiptakeun jandela tambahan pikeun verifikasi, tapi langsung ngantepkeun pangguna kana akun pribadina.

Apache

Sapertos sareng nginx, teu aya anu kedah ngagaduhan masalah masang Apache. Upami anjeun henteu terang kumaha carana masang pangladén wéb ieu, ngan ukur nganggo dokuméntasi resmi.

Sareng urang ngamimitian nyetél HTTPS sareng auténtikasi dua faktor:

  1. Mimiti anjeun kedah ngaktipkeun mod_ssl:
    $ a2enmod ssl
  2. Teras aktipkeun setélan HTTPS standar situs:
    $ a2ensite default-ssl
  3. Ayeuna urang ngédit file konfigurasi: /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

    Sakumaha anjeun tiasa tingali, nami parameter praktis coincide sareng nami parameter di nginx, janten kuring moal ngajelaskeunana. Sakali deui, saha waé anu resep kana detil éta wilujeng sumping ka dokuméntasi.
    Ayeuna urang balikan deui server kami:

    $ service apache2 reload
    $ service apache2 restart

  4. Sakumaha anjeun tiasa tingali, nyetél auténtikasi dua faktor dina server wéb mana waé, naha dina Windows atanapi Linux, peryogi maksimal sajam. Jeung nyetel browser nyokot ngeunaan 5 menit. Seueur jalma nganggap yén nyetél sareng damel sareng auténtikasi dua faktor sesah sareng teu jelas. Kuring miharep artikel urang debunks mitos ieu, sahenteuna saeutik.

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha anjeun peryogi petunjuk pikeun nyetél TLS kalayan sertipikat nurutkeun GOST 34.10-2012:

  • Leres, TLS-GOST peryogi pisan

  • Henteu, tuning sareng algoritma GOST henteu pikaresepeun

44 pamaké milih. 9 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar