Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux
В salah sawijining artikel sadurunge kita ngomong babagan pentinge otentikasi rong faktor ing portal perusahaan perusahaan. Pungkasan kita nuduhake carane nyiyapake otentikasi aman ing server web IIS.

Ing komentar, kita dijaluk nulis instruksi kanggo server web sing paling umum kanggo Linux - nginx lan Apache.

Sampeyan takon - kita wrote.

Apa sampeyan kudu miwiti?

  • Sembarang distribusi Linux modern. Aku nindakake persiyapan test ing MX Linux 18.2_x64. Iki mesthi dudu distribusi server, nanging ora ana bedane kanggo Debian. Kanggo distribusi liyane, path menyang perpustakaan konfigurasi bisa rada beda-beda.
  • Token. Kita terus nggunakake model kasebut Rutoken EDS PKI, sing becik babagan karakteristik kacepetan kanggo panggunaan perusahaan.
  • Kanggo nggarap token ing Linux, sampeyan kudu nginstal paket ing ngisor iki:
    libccid libpcsclite1 pcscd pcsc-alat mbukaksc

Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

Penerbitan sertifikat

Ing artikel sadurunge, kita ngandelake kasunyatan manawa sertifikat server lan klien bakal ditanggepi nggunakake Microsoft CA. Nanging amarga kita nyiyapake kabeh ing Linux, kita uga bakal ngandhani babagan cara alternatif kanggo ngetokake sertifikat kasebut - tanpa ninggalake Linux.
Kita bakal nggunakake XCA minangka CA (https://hohnstaedt.de/xca/), sing kasedhiya ing distribusi Linux modern. Kabeh tumindak sing bakal kita nindakake ing XCA bisa rampung ing mode baris printah nggunakake OpenSSL lan pkcs11-alat keperluan, nanging luwih gamblang lan gamblang, kita ora bakal saiki ing artikel iki.

Miwiti

  1. Instal:
    $ apt-get install xca
  2. Lan kita mbukak:
    $ xca
  3. Kita nggawe database kanggo CA - /root/CA.xdb
    Disaranake kanggo nyimpen database Certificate Authority ing folder sing mung administrator nduweni akses. Iki penting kanggo nglindhungi kunci pribadi saka sertifikat root, sing digunakake kanggo mlebu kabeh sertifikat liyane.

Nggawe kunci lan sertifikat CA ROOT

Infrastruktur kunci publik (PKI) adhedhasar sistem hirarkis. Sing utama ing sistem iki yaiku otoritas sertifikasi root utawa CA root. Sertifikat kasebut kudu digawe dhisik.

  1. Kita nggawe kunci pribadi RSA-2048 kanggo CA. Kanggo nindakake iki, ing tab Kunci Pribadi nyurung Kunci anyar lan pilih jinis sing cocog.
  2. Setel jeneng kanggo pasangan tombol anyar. Aku disebut CA Key.
  3. Kita ngetokake sertifikat CA dhewe, nggunakake pasangan kunci sing digawe. Kanggo nindakake iki, pindhah menyang tab Certificates lan klik Sertifikat anyar.
  4. Dadi manawa kanggo milih SHA-256, amarga nggunakake SHA-1 ora bisa dianggep aman maneh.
  5. Dadi manawa kanggo milih minangka cithakan [standar] CA. Aja lali klik ing Aplikasi kabeh, yen ora, cithakan ora ditrapake.
  6. Ing tab Subject pilih pasangan kunci kita. Ing kono sampeyan bisa ngisi kabeh kolom utama sertifikat.

Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

Nggawe kunci lan sertifikat server https

  1. Kanthi cara sing padha, kita nggawe kunci pribadi RSA-2048 kanggo server, aku diarani Server Key.
  2. Nalika nggawe sertifikat, kita milih sertifikat server kudu ditandatangani karo sertifikat CA.
  3. Aja lali kanggo milih SHA-256.
  4. Kita milih minangka cithakan [standar] HTTPS_server. Klik ing Aplikasi kabeh.
  5. Banjur ing tab Subject pilih kunci kita lan isi kolom sing dibutuhake.

Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

Gawe kunci lan sertifikat kanggo pangguna

  1. Kunci pribadi pangguna bakal disimpen ing token kita. Kanggo nggarap, sampeyan kudu nginstal perpustakaan PKCS # 11 saka situs web kita. Kanggo distribusi populer, kita nyebar paket siap, sing ana ing kene - https://www.rutoken.ru/support/download/pkcs/. Kita uga duwe rakitan kanggo arm64, armv7el, armv7hf, e2k, mipso32el, sing bisa didownload saka SDK kita - https://www.rutoken.ru/developers/sdk/. Saliyane rakitan kanggo Linux, ana uga rakitan kanggo macOS, freebsd lan Android.
  2. Nambahake PKCS anyar # 11 Provider kanggo XCA. Kanggo nindakake iki, pindhah menyang menu Pilihan menyang tab PKCS # 11 Panyedhiya.
  3. Kita pencet Tambah lan pilih path kanggo PKCS # 11 perpustakaan. Ing kasusku iku usrliblibrtpkcs11ecp.so.
  4. Kita butuh token Rutoken EDS PKI sing diformat. Ngundhuh utilitas rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Kita nindakake
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Kita milih tombol RSA-2048 kanggo Rutoken EDS PKI minangka jinis tombol. Aku nelpon kunci iki Klien Key.

    Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

  7. Ketik kode PIN. Lan kita ngenteni completion generasi hardware saka pasangan tombol

    Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

  8. Kita nggawe sertifikat kanggo pangguna kanthi analogi karo sertifikat server. Wektu iki kita milih cithakan [standar] HTTPS_client lan aja lali klik Aplikasi kabeh.
  9. Ing tab Subject ketik informasi babagan pangguna. Kita njawab kanthi bener kanggo panyuwunan kanggo nyimpen sertifikat kanggo token.

Akibaté, ing tab Sertifikat ing XCA sampeyan kudu njaluk kaya iki.

Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux
Set kunci lan sertifikat minimal iki cukup kanggo miwiti nyetel server dhewe.

Kanggo ngatur, kita kudu ngekspor sertifikat CA, sertifikat server lan kunci pribadi server.

Kanggo nindakake iki, pilih entri sing dikarepake ing tab sing cocog ing XCA lan klik kaca.

Nginx

Aku ora bakal nulis carane nginstal lan mbukak server nginx - ana cukup artikel ing topik iki ing Internet, ora kanggo sebutno dokumentasi resmi. Ayo langsung nyiyapake HTTPS lan otentikasi rong faktor nggunakake token.

Tambah baris ing ngisor iki menyang bagean server ing 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;
}

Katrangan rinci babagan kabeh parameter sing ana gandhengane karo konfigurasi ssl ing nginx bisa ditemokake ing kene - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Aku mung bakal njlèntrèhaké kanthi ringkes babagan sing daktakoni dhéwé:

  • ssl_verify_client - nemtokake manawa rantai kepercayaan kanggo sertifikat kasebut kudu diverifikasi.
  • ssl_verify_depth - Nemtokake ambane telusuran kanggo sertifikat root sing dipercaya ing rantai kasebut. Wiwit sertifikat klien kita langsung mlebu ing sertifikat root, ambane disetel dadi 1. Yen sertifikat pangguna ditandatangani ing CA penengah, banjur 2 kudu ditemtokake ing parameter iki, lan liya-liyane.
  • ssl_client_certificate - nemtokake dalan menyang sertifikat root sing dipercaya, sing digunakake nalika mriksa kapercayan ing sertifikat pangguna.
  • ssl_certificate / ssl_certificate_key - nunjukake path menyang sertifikat server / kunci pribadi.

Aja lali mbukak nginx -t kanggo mriksa yen ora ana kesalahan ketik ing konfigurasi, lan kabeh file ana ing panggonan sing bener, lan liya-liyane.

Lan iku kabeh! Nalika sampeyan bisa ndeleng, persiyapan banget prasaja.

Priksa manawa bisa digunakake ing Firefox

Amarga kita nindakake kabeh kanthi lengkap ing Linux, kita bakal nganggep manawa pangguna uga bisa digunakake ing Linux (yen duwe Windows, banjur deleng pandhuan kanggo nyetel browser ing artikel sadurunge.

  1. Ayo miwiti Firefox.
  2. Coba log in tanpa token dhisik. Kita entuk gambar iki:

    Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

  3. Kita menyang babagan: pilihan # privasi, lan kita menyang Piranti Keamanan…
  4. Kita pencet loadkanggo nambah PKCS anyar # 11 Driver Piranti lan nemtokake path kanggo librtpkcs11ecp.so kita.
  5. Kanggo mriksa manawa sertifikat kasebut katon, sampeyan bisa pindhah menyang Certificate Manager. Sampeyan bakal dijaluk ngetik PIN. Sawise input sing bener, sampeyan bisa mriksa apa sing ana ing tab Sertifikat Panjenengan sertifikat kita saka token katon.
  6. Saiki ayo pindhah karo token. Firefox njaluk sampeyan milih sertifikat sing bakal dipilih kanggo server. Pilih sertifikat kita.

    Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

  7. Bathi!

    Otentikasi rong faktor ing situs nggunakake token USB. Saiki uga kanggo Linux

Persiyapan wis rampung sapisan, lan sampeyan bisa ndeleng ing jendhela request certificate, kita bisa nyimpen pilihan kita. Sawise iki, saben-saben kita mlebu ing portal kasebut, kita mung kudu nglebokake token lan ngetik kode PIN pangguna sing wis ditemtokake nalika format. Sawise otentikasi kasebut, server wis ngerti pangguna sing wis mlebu lan sampeyan ora bisa nggawe jendhela tambahan kanggo verifikasi, nanging langsung ngidini pangguna menyang akun pribadhi.

Apache

Kaya karo nginx, ora ana sing duwe masalah nginstal apache. Yen sampeyan ora ngerti carane nginstal server web iki, gunakake dokumentasi resmi.

Lan kita miwiti nyetel HTTPS lan otentikasi rong faktor:

  1. Pisanan sampeyan kudu ngaktifake mod_ssl:
    $ a2enmod ssl
  2. Banjur aktifake setelan HTTPS standar situs:
    $ a2ensite default-ssl
  3. Saiki kita ngowahi 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

    Kaya sing sampeyan ngerteni, jeneng paramèter kasebut meh padha karo jeneng paramèter ing nginx, mula aku ora bakal nerangake. Maneh, sapa wae sing kasengsem ing rincian kasebut, welcome menyang dokumentasi.
    Saiki kita miwiti maneh server kita:

    $ service apache2 reload
    $ service apache2 restart

  4. Kaya sing sampeyan ngerteni, nyiyapake otentikasi rong faktor ing server web apa wae, apa ing Windows utawa Linux, yaiku maksimal siji jam. Lan nyetel browser mbutuhake udakara 5 menit. Akeh wong mikir yen nyetel lan nggarap otentikasi rong faktor iku angel lan ora jelas. Mugi artikel kita debunks mitos iki, paling sethithik.

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa sampeyan butuh instruksi kanggo nyetel TLS kanthi sertifikat miturut GOST 34.10-2012:

  • Ya, TLS-GOST perlu banget

  • Ora, tuning karo algoritma GOST ora menarik

44 pangguna milih. 9 pangguna abstain.

Source: www.habr.com

Add a comment