ProHoster > Blog > Uprava > Dvostopenjska avtentikacija na spletnem mestu z uporabo žetona USB. Zdaj tudi za Linux
Dvostopenjska avtentikacija na spletnem mestu z uporabo žetona USB. Zdaj tudi za Linux
В enega od naših prejšnjih člankov smo govorili o pomenu dvofaktorske avtentikacije na korporativnih portalih podjetij. Zadnjič smo pokazali, kako nastaviti varno avtentikacijo v spletnem strežniku IIS.
V komentarjih so nas prosili, da napišemo navodila za najpogostejša spletna strežnika za Linux - nginx in Apache.
Vprašali ste - pisali smo.
Kaj potrebujete za začetek?
Vsaka sodobna distribucija Linuxa. Opravil sem testno nastavitev na MX Linux 18.2_x64. To seveda ni strežniška distribucija, vendar za Debian verjetno ne bo nobenih razlik. Za druge distribucije se lahko poti do konfiguracijskih knjižnic nekoliko razlikujejo.
Žeton. Še naprej uporabljamo model Rutoken EDS PKI, ki je glede na hitrostne lastnosti idealen za korporativno uporabo.
Za delo z žetonom v Linuxu morate namestiti naslednje pakete:
libccid libpcsclite1 pcscd pcsc-orodja opensc
Izdajanje potrdil
V prejšnjih člankih smo se zanašali na dejstvo, da bodo certifikati strežnika in odjemalca izdani s pomočjo Microsoft CA. Ker pa vse nastavljamo v Linuxu, vam bomo povedali tudi o alternativnem načinu izdaje teh potrdil – ne da bi zapustili Linux.
Uporabili bomo XCA kot CA (https://hohnstaedt.de/xca/), ki je na voljo v kateri koli sodobni distribuciji Linuxa. Vsa dejanja, ki jih bomo izvedli v XCA, je mogoče izvesti v načinu ukazne vrstice z uporabo pripomočkov OpenSSL in pkcs11-tool, vendar jih zaradi večje preprostosti in jasnosti v tem članku ne bomo predstavili.
Začetek
Namesti:
$ apt-get install xca
In tečemo:
$ xca
Ustvarimo našo zbirko podatkov za CA - /root/CA.xdb
Priporočamo, da podatkovno bazo overitelja potrdil shranite v mapo, do katere ima dostop samo skrbnik. To je pomembno za zaščito zasebnih ključev korenskih potrdil, ki se uporabljajo za podpis vseh drugih potrdil.
Ustvarite ključe in korensko potrdilo CA
Infrastruktura javnih ključev (PKI) temelji na hierarhičnem sistemu. Glavna stvar v tem sistemu je korenski certifikacijski organ ali korenski CA. Najprej je treba ustvariti njegovo potrdilo.
Ustvarimo zasebni ključ RSA-2048 za CA. Če želite to narediti, na zavihku Zasebni ključi potisnite New Key in izberite ustrezno vrsto.
Nastavite ime za nov par ključev. Poimenoval sem ga CA Key.
Izdamo samo potrdilo CA z uporabo ustvarjenega para ključev. Če želite to narediti, pojdite na zavihek Certifikati in kliknite Novo potrdilo.
Bodite prepričani, da izberete SHA-256, ker uporaba SHA-1 ni več varna.
Bodite prepričani, da izberete kot predlogo [privzeto]CA. Ne pozabite klikniti na Uporabi vse, sicer se predloga ne uporabi.
V zavihku Zadeva izberite naš par ključev. Tam lahko izpolnite vsa glavna polja potrdila.
Ustvarjanje ključev in certifikata strežnika https
Na podoben način ustvarimo zasebni ključ RSA-2048 za strežnik, poimenoval sem ga Server Key.
Pri kreiranju certifikata izberemo, da mora biti certifikat strežnika podpisan s CA certifikatom.
Ne pozabite izbrati SHA-256.
Izberemo kot predlogo [privzeto] HTTPS_strežnik. Kliknite na Uporabi vse.
Nato na zavihku Zadeva izberite naš ključ in izpolnite zahtevana polja.
Ustvarite ključe in potrdilo za uporabnika
Zasebni ključ uporabnika bo shranjen na našem žetonu. Za delo z njim morate namestiti knjižnico PKCS#11 z našega spletnega mesta. Za priljubljene distribucije distribuiramo že pripravljene pakete, ki se nahajajo tukaj - https://www.rutoken.ru/support/download/pkcs/. Imamo tudi sklope za arm64, armv7el, armv7hf, e2k, mipso32el, ki jih lahko prenesete iz našega SDK - https://www.rutoken.ru/developers/sdk/. Poleg sklopov za Linux obstajajo tudi sklopi za macOS, freebsd in android.
Dodajanje novega ponudnika PKCS#11 v XCA. Če želite to narediti, pojdite v meni možnosti na zavihek Ponudnik PKCS#11.
Pritiskamo Dodaj in izberite pot do knjižnice PKCS#11. V mojem primeru je to usrliblibrtpkcs11ecp.so.
Kot vrsto ključa izberemo ključ RSA-2048 za Rutoken EDS PKI. Ta ključ sem poimenoval Client Key.
Vnesite kodo PIN. In počakamo na dokončanje strojne generacije para ključev
Uporabniku izdelamo potrdilo po analogiji s strežniškim potrdilom. Tokrat izberemo predlogo [privzeto] HTTPS_client in ne pozabite klikniti Uporabi vse.
V zavihku Zadeva vnesite podatke o uporabniku. Na zahtevo za shranjevanje potrdila za žeton odgovorimo pritrdilno.
Kot rezultat, na zavihku Potrdila v XCA bi morali dobiti nekaj takega.
Ta minimalni nabor ključev in potrdil zadostuje za začetek nastavitve samih strežnikov.
Za konfiguracijo moramo izvoziti potrdilo CA, potrdilo strežnika in zasebni ključ strežnika.
Če želite to narediti, izberite želeni vnos na ustreznem zavihku v XCA in kliknite izvoz.
Nginx
Ne bom pisal, kako namestiti in zagnati strežnik nginx - na internetu je dovolj člankov o tej temi, da ne omenjam uradne dokumentacije. Pojdimo naravnost k nastavitvi HTTPS in dvofaktorske avtentikacije z uporabo žetona.
Dodajte naslednje vrstice v razdelek strežnika v nginx.conf:
Na kratko bom opisal le tiste, ki sem jih sam vprašal:
ssl_verify_client - določa, da je treba preveriti verigo zaupanja za potrdilo.
ssl_verify_depth – Določa globino iskanja za zaupanja vredno korensko potrdilo v verigi. Ker je potrdilo našega odjemalca takoj podpisano na korenskem potrdilu, je globina nastavljena na 1. Če je uporabniško potrdilo podpisano na vmesni CA, mora biti v tem parametru podano 2 in tako naprej.
ssl_client_certificate - podaja pot do zaupanja vrednega korenskega potrdila, ki se uporablja pri preverjanju zaupanja v potrdilo uporabnika.
ssl_certificate/ssl_certificate_key - navedite pot do potrdila/zasebnega ključa strežnika.
Ne pozabite zagnati nginx -t, da preverite, ali v konfiguraciji ni tipkarskih napak in ali so vse datoteke na pravem mestu itd.
In to je vse! Kot lahko vidite, je nastavitev zelo preprosta.
Poskusimo se najprej prijaviti brez žetona. Dobimo to sliko:
Pojdimo na o: nastavitvah # zasebnost, in gremo na Varnostne naprave…
Pritiskamo Obremenitevda dodate nov gonilnik naprave PKCS#11 in določite pot do našega librtpkcs11ecp.so.
Če želite preveriti, ali je potrdilo vidno, lahko obiščete potrdilo direktor. Pozvani boste, da vnesete PIN. Po pravilnem vnosu lahko preverite, kaj je na zavihku Vaši certifikati pojavilo se je naše potrdilo iz žetona.
Zdaj pa pojdimo z žetonom. Firefox vas pozove, da izberete potrdilo, ki bo izbrano za strežnik. Izberite naš certifikat.
DOBIČEK!
Nastavitev se izvede enkrat in kot lahko vidite v oknu zahteve za potrdilo, lahko naš izbor shranimo. Nato bomo morali ob vsaki prijavi v portal vstaviti le žeton in vnesti uporabniško PIN kodo, ki smo jo določili pri formatiranju. Po takšni avtentikaciji strežnik že ve, kateri uporabnik se je prijavil in ne morete več ustvarjati dodatnih oken za verifikacijo, temveč uporabnika takoj spustite v njegov osebni račun.
Apache
Tako kot pri nginxu tudi pri namestitvi apachea nihče ne bi smel imeti težav. Če ne veste, kako namestiti ta spletni strežnik, preprosto uporabite uradno dokumentacijo.
In začnemo nastavljati naš HTTPS in dvofaktorsko avtentikacijo:
Najprej morate aktivirati mod_ssl:
$ a2enmod ssl
Nato omogočite privzete nastavitve HTTPS spletnega mesta:
$ a2ensite default-ssl
Zdaj uredimo konfiguracijsko datoteko: /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
Kot lahko vidite, imena parametrov praktično sovpadajo z imeni parametrov v nginxu, zato jih ne bom razlagal. Še enkrat, vsi, ki vas zanimajo podrobnosti, dobrodošli v dokumentaciji.
Zdaj znova zaženemo naš strežnik:
$ service apache2 reload
$ service apache2 restart
Kot lahko vidite, nastavitev dvostopenjske avtentikacije na katerem koli spletnem strežniku, bodisi v sistemu Windows ali Linux, traja največ eno uro. In nastavitev brskalnikov traja približno 5 minut. Mnogi ljudje mislijo, da je nastavitev in delo z dvofaktorsko avtentikacijo težko in nejasno. Upam, da bo naš članek ta mit vsaj malo razblinil.
V anketi lahko sodelujejo samo registrirani uporabniki. Prijaviti se, prosim.
Ali potrebujete navodila za nastavitev TLS s certifikati po GOST 34.10-2012:
Da, TLS-GOST je zelo potreben
Ne, uglaševanje z algoritmi GOST ni zanimivo
Glasovalo je 44 uporabnikov. 9 uporabnikov se je vzdržalo.