ProHoster > Блог > Administrasi > 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
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
Instal:
$ apt-get install xca
Lan kita mbukak:
$ xca
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.
Kita nggawe kunci pribadi RSA-2048 kanggo CA. Kanggo nindakake iki, ing tab Kunci Pribadi nyurung Kunci anyar lan pilih jinis sing cocog.
Setel jeneng kanggo pasangan tombol anyar. Aku disebut CA Key.
Kita ngetokake sertifikat CA dhewe, nggunakake pasangan kunci sing digawe. Kanggo nindakake iki, pindhah menyang tab Certificates lan klik Sertifikat anyar.
Dadi manawa kanggo milih SHA-256, amarga nggunakake SHA-1 ora bisa dianggep aman maneh.
Dadi manawa kanggo milih minangka cithakan [standar] CA. Aja lali klik ing Aplikasi kabeh, yen ora, cithakan ora ditrapake.
Ing tab Subject pilih pasangan kunci kita. Ing kono sampeyan bisa ngisi kabeh kolom utama sertifikat.
Nggawe kunci lan sertifikat server https
Kanthi cara sing padha, kita nggawe kunci pribadi RSA-2048 kanggo server, aku diarani Server Key.
Nalika nggawe sertifikat, kita milih sertifikat server kudu ditandatangani karo sertifikat CA.
Aja lali kanggo milih SHA-256.
Kita milih minangka cithakan [standar] HTTPS_server. Klik ing Aplikasi kabeh.
Banjur ing tab Subject pilih kunci kita lan isi kolom sing dibutuhake.
Gawe kunci lan sertifikat kanggo pangguna
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.
Nambahake PKCS anyar # 11 Provider kanggo XCA. Kanggo nindakake iki, pindhah menyang menu Pilihan menyang tab PKCS # 11 Panyedhiya.
Kita pencet Tambah lan pilih path kanggo PKCS # 11 perpustakaan. Ing kasusku iku usrliblibrtpkcs11ecp.so.
Kita milih tombol RSA-2048 kanggo Rutoken EDS PKI minangka jinis tombol. Aku nelpon kunci iki Klien Key.
Ketik kode PIN. Lan kita ngenteni completion generasi hardware saka pasangan tombol
Kita nggawe sertifikat kanggo pangguna kanthi analogi karo sertifikat server. Wektu iki kita milih cithakan [standar] HTTPS_client lan aja lali klik Aplikasi kabeh.
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.
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:
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.
Coba log in tanpa token dhisik. Kita entuk gambar iki:
Kita menyang babagan: pilihan # privasi, lan kita menyang Piranti Keamanan…
Kita pencet loadkanggo nambah PKCS anyar # 11 Driver Piranti lan nemtokake path kanggo librtpkcs11ecp.so kita.
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.
Saiki ayo pindhah karo token. Firefox njaluk sampeyan milih sertifikat sing bakal dipilih kanggo server. Pilih sertifikat kita.
Bathi!
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:
Pisanan sampeyan kudu ngaktifake mod_ssl:
$ a2enmod ssl
Banjur aktifake setelan HTTPS standar situs:
$ a2ensite default-ssl
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
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: