ProHoster > Блог > Administracija > Dvofaktorska autentikacija na web lokaciji pomoću USB tokena. Sada i za Linux
Dvofaktorska autentikacija na web lokaciji pomoću USB tokena. Sada i za Linux
В jedan od naših prethodnih članaka govorili smo o važnosti dvofaktorske autentifikacije na korporativnim portalima kompanija. Prošli put smo demonstrirali kako postaviti sigurnu autentifikaciju na IIS web serveru.
U komentarima smo zamoljeni da napišemo uputstva za najčešće web servere za Linux - nginx i Apache.
Pitali ste - napisali smo.
Šta vam je potrebno za početak?
Bilo koja moderna Linux distribucija. Uradio sam probno podešavanje na MX Linuxu 18.2_x64. Ovo naravno nije serverska distribucija, ali malo je vjerojatno da će biti ikakvih razlika za Debian. Za druge distribucije, staze do konfiguracijskih biblioteka mogu se neznatno razlikovati.
Token. Nastavljamo da koristimo model Rutoken EDS PKI, što je idealno u pogledu karakteristika brzine za korporativnu upotrebu.
Da biste radili sa tokenom u Linuxu, morate instalirati sljedeće pakete:
libccid libpcsclite1 pcscd pcsc-tools opensc
Izdavanje sertifikata
U prethodnim člancima oslanjali smo se na činjenicu da će se certifikati servera i klijenta izdavati pomoću Microsoft CA. Ali budući da sve postavljamo u Linuxu, također ćemo vam reći o alternativnom načinu izdavanja ovih certifikata - bez napuštanja Linuxa.
Koristićemo XCA kao CA (https://hohnstaedt.de/xca/), koji je dostupan u bilo kojoj modernoj Linux distribuciji. Sve radnje koje ćemo izvoditi u XCA mogu se obaviti u načinu komandne linije pomoću alata OpenSSL i pkcs11, ali zbog veće jednostavnosti i jasnoće, nećemo ih predstavljati u ovom članku.
Prvi koraci
Instaliraj:
$ apt-get install xca
I trčimo:
$ xca
Kreiramo našu bazu podataka za CA - /root/CA.xdb
Preporučujemo pohranjivanje baze podataka Izdavača certifikata u fasciklu kojoj samo administrator ima pristup. Ovo je važno za zaštitu privatnih ključeva korijenskih certifikata, koji se koriste za potpisivanje svih ostalih certifikata.
Kreirajte ključeve i root CA certifikat
Infrastruktura javnog ključa (PKI) je zasnovana na hijerarhijskom sistemu. Glavna stvar u ovom sistemu je root certifikacijsko tijelo ili root CA. Prvo se mora kreirati njegov certifikat.
Kreiramo RSA-2048 privatni ključ za CA. Da biste to učinili, na kartici Privatni ključevi nažimaem Novi ključ i odaberite odgovarajući tip.
Postavite ime za novi par ključeva. Nazvao sam ga CA ključ.
Izdajemo sam CA certifikat koristeći kreirani par ključeva. Da biste to učinili, idite na karticu Potvrde i guranje Novi certifikat.
Obavezno izaberite SHA-256, jer se korištenje SHA-1 više ne može smatrati sigurnim.
Obavezno odaberite kao predložak [podrazumevano] CA. Ne zaboravite kliknuti na Primijeni sve, inače se šablon ne primjenjuje.
Na kartici Naslov odaberite naš par ključeva. Tamo možete popuniti sva glavna polja sertifikata.
Kreiranje ključeva i certifikata https servera
Na sličan način kreiramo RSA-2048 privatni ključ za server, ja sam ga nazvao Server Key.
Prilikom kreiranja certifikata odabiremo da certifikat servera mora biti potpisan CA certifikatom.
Ne zaboravite odabrati SHA-256.
Mi biramo kao šablon [podrazumevano] HTTPS_server. Kliknite na Primijeni sve.
Zatim na kartici Naslov odaberite naš ključ i popunite potrebna polja.
Kreirajte ključeve i certifikat za korisnika
Privatni ključ korisnika će biti pohranjen na našem tokenu. Da biste radili s njim, trebate instalirati biblioteku PKCS#11 sa naše web stranice. Za popularne distribucije distribuiramo gotove pakete, koji se nalaze ovdje - https://www.rutoken.ru/support/download/pkcs/. Imamo i sklopove za arm64, armv7el, armv7hf, e2k, mipso32el, koje možete preuzeti sa našeg SDK-a - https://www.rutoken.ru/developers/sdk/. Osim sklopova za Linux, postoje i sklopovi za macOS, freebsd i android.
Dodavanje novog PKCS#11 provajdera u XCA. Da biste to učinili, idite na meni mogućnosti na karticu PKCS#11 Provajder.
Kliknite dodati i izaberite putanju do PKCS#11 biblioteke. U mom slučaju to je usrliblibrtpkcs11ecp.so.
Kao tip ključa biramo RSA-2048 ključ za Rutoken EDS PKI. Ovaj ključ sam nazvao klijentski ključ.
Unesite PIN kod. I čekamo završetak hardverske generacije para ključeva
Sertifikat za korisnika kreiramo po analogiji sa certifikatom servera. Ovaj put biramo šablon [podrazumevano] HTTPS_client i ne zaboravite da kliknete Primijeni sve.
Na kartici Naslov unesite podatke o korisniku. Na zahtjev za spremanje certifikata za token odgovaramo potvrdno.
Kao rezultat, na kartici Sertifikati u XCA bi trebao dobiti ovako nešto.
Ovaj minimalni set ključeva i certifikata dovoljan je da započnete postavljanje samih servera.
Da bismo konfigurisali, potrebno je da izvezemo CA sertifikat, serverski sertifikat i privatni ključ servera.
Da biste to učinili, odaberite željeni unos na odgovarajućoj kartici u XCA i kliknite izvoz.
Nginx
Neću pisati kako instalirati i pokrenuti nginx server - na internetu ima dovoljno članaka o ovoj temi, a da ne spominjemo službenu dokumentaciju. Prijeđimo direktno na postavljanje HTTPS-a i dvofaktorske provjere autentičnosti pomoću tokena.
Dodajte sljedeće linije u odjeljak servera u nginx.conf:
ssl_verify_client - specificira da lanac povjerenja za certifikat treba biti provjeren.
ssl_verify_depth - Definira dubinu pretrage za pouzdani korijenski certifikat u lancu. Budući da je naš klijentski certifikat odmah potpisan na korijenskom certifikatu, dubina je postavljena na 1. Ako je korisnički certifikat potpisan na srednjem CA, tada se u ovom parametru mora navesti 2 i tako dalje.
ssl_client_certificate - specificira putanju do pouzdanog korijenskog certifikata, koji se koristi prilikom provjere povjerenja u certifikat korisnika.
ssl_certificate/ssl_certificate_key - naznačite putanju do certifikata/privatnog ključa servera.
Ne zaboravite pokrenuti nginx -t da provjerite da nema grešaka u kucanju u konfiguraciji, da su sve datoteke na pravom mjestu itd.
I to je sve! Kao što vidite, podešavanje je vrlo jednostavno.
Pokušajmo se prvo prijaviti bez tokena. Dobijamo ovu sliku:
Idi o: preferencijama # privatnost, i idemo na Sigurnosni uređaji…
Kliknite opterećenjeda dodate novi PKCS#11 upravljački program uređaja i odredite putanju do našeg librtpkcs11ecp.so.
Da biste provjerili je li certifikat vidljiv, možete otići na Menadžer certifikata. Od vas će biti zatraženo da unesete svoj PIN. Nakon ispravnog unosa, možete provjeriti šta se nalazi na kartici Vaši sertifikati pojavio se naš certifikat iz tokena.
Idemo sada sa žetonom. Firefox vas traži da odaberete certifikat koji će biti odabran za server. Odaberite naš certifikat.
PROFIT!
Podešavanje se vrši jednom, i kao što možete vidjeti u prozoru zahtjeva za certifikatom, možemo sačuvati naš izbor. Nakon toga, svaki put kada se prijavimo na portal, trebat ćemo samo ubaciti token i unijeti korisnički PIN kod koji je naveden tokom formatiranja. Nakon takve autentifikacije, server već zna koji korisnik se prijavio i više ne možete kreirati dodatne prozore za verifikaciju, već odmah pustite korisnika na njegov lični nalog.
apaš
Baš kao i kod nginxa, niko ne bi trebao imati problema s instaliranjem apachea. Ako ne znate kako da instalirate ovaj web server, samo koristite zvaničnu dokumentaciju.
I počinjemo postavljati našu HTTPS i dvofaktorsku autentifikaciju:
Prvo morate aktivirati mod_ssl:
$ a2enmod ssl
Zatim omogućite zadane HTTPS postavke stranice:
$ a2ensite default-ssl
Sada uređujemo konfiguracionu datoteku: /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
Kao što vidite, nazivi parametara se praktički poklapaju sa nazivima parametara u nginxu, tako da ih neću objašnjavati. Opet, svi zainteresovani za detalje su dobrodošli u dokumentaciju.
Sada ponovo pokrećemo naš server:
$ service apache2 reload
$ service apache2 restart
Kao što vidite, postavljanje dvofaktorske autentifikacije na bilo kojem web serveru, bilo na Windowsu ili Linuxu, traje maksimalno jedan sat. A podešavanje pretraživača traje oko 5 minuta. Mnogi ljudi misle da je postavljanje i rad sa dvofaktorskom autentifikacijom teško i nejasno. Nadam se da će naš članak barem malo razotkriti ovaj mit.
Samo registrovani korisnici mogu učestvovati u anketi. Prijavite semolim.
Da li su vam potrebna uputstva za postavljanje TLS-a sa sertifikatima prema GOST 34.10-2012:
Da, TLS-GOST je veoma potreban
Ne, podešavanje sa GOST algoritmima nije zanimljivo
Glasalo je 44 korisnika. Uzdržano je bilo 9 korisnika.