ProHoster > Blog > uprava > Dvofaktorska autentifikacija na stranici pomoću USB tokena. Sada i za Linux
Dvofaktorska autentifikacija na stranici pomoću USB tokena. Sada i za Linux
В jedan od naših prethodnih članaka razgovarali smo o važnosti dvofaktorske autentifikacije na korporativnim portalima tvrtki. Zadnji put smo demonstrirali kako postaviti sigurnu autentifikaciju na IIS web poslužitelju.
U komentarima su nas zamolili da napišemo upute za najčešće web poslužitelje za Linux - nginx i Apache.
Pitali ste - napisali smo.
Što vam je potrebno za početak?
Svaka moderna distribucija Linuxa. Napravio sam probno postavljanje na MX Linux 18.2_x64. Ovo naravno nije distribucija poslužitelja, ali malo je vjerojatno da će biti ikakvih razlika za Debian. Za druge distribucije, putevi do konfiguracijskih biblioteka mogu se malo razlikovati.
Znak. Nastavljamo koristiti model Rutoken EDS PKI, što je idealno u smislu brzinskih karakteristika za korporativnu upotrebu.
Za rad s tokenom u Linuxu morate instalirati sljedeće pakete:
libccid libpcsclite1 pcscd pcsc-alati opensc
Izdavanje potvrda
U prethodnim člancima oslanjali smo se na činjenicu da će se certifikati poslužitelja 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.
Koristit ćemo XCA kao CA (https://hohnstaedt.de/xca/), koji je dostupan u svakoj modernoj distribuciji Linuxa. Sve radnje koje ćemo izvesti u XCA mogu se izvršiti u načinu naredbenog retka pomoću uslužnih programa OpenSSL i pkcs11-tool, ali zbog veće jednostavnosti i jasnoće, nećemo ih predstaviti u ovom članku.
Početak
Instalirati:
$ apt-get install xca
I trčimo:
$ xca
Mi stvaramo našu bazu podataka za CA - /root/CA.xdb
Preporučamo pohranjivanje baze podataka Izdavača certifikata u mapu 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.
Stvorite ključeve i korijenski CA certifikat
Infrastruktura javnih ključeva (PKI) temelji se na hijerarhijskom sustavu. Glavna stvar u ovom sustavu je root certifikacijsko tijelo ili root CA. Prvo se mora izraditi njegov certifikat.
Mi stvaramo RSA-2048 privatni ključ za CA. Da biste to učinili, na kartici Privatni ključevi nažimaem Novi Key i odaberite odgovarajuću vrstu.
Postavite naziv za novi par ključeva. Nazvao sam ga CA Key.
Sam CA certifikat izdajemo pomoću kreiranog para ključeva. Da biste to učinili, idite na karticu Potvrde i kliknite Nova potvrda.
Obavezno odaberite SHA-256, jer se korištenje SHA-1 više ne može smatrati sigurnim.
Obavezno odaberite kao predložak [zadano]CA. Ne zaboravite kliknuti na Primijeni sve, inače se predložak ne primjenjuje.
U kartici Predmet odaberite naš par ključeva. Tamo možete ispuniti sva glavna polja potvrde.
Izrada ključeva i certifikata https poslužitelja
Na sličan način stvaramo RSA-2048 privatni ključ za poslužitelj, nazvao sam ga Ključ poslužitelja.
Prilikom izrade certifikata odabiremo da certifikat poslužitelja mora biti potpisan CA certifikatom.
Ne zaboravite odabrati SHA-256.
Odabiremo kao predložak [zadano] HTTPS_poslužitelj. Kliknite na Primijeni sve.
Zatim na tab Predmet odaberite naš ključ i ispunite potrebna polja.
Stvorite ključeve i certifikat za korisnika
Privatni ključ korisnika bit će pohranjen na našem tokenu. Da biste radili s njim, trebate instalirati biblioteku PKCS#11 s naše web stranice. Za popularne distribucije, distribuiramo gotove pakete, koji se nalaze ovdje - https://www.rutoken.ru/support/download/pkcs/. Također imamo sklopove za arm64, armv7el, armv7hf, e2k, mipso32el, koji se mogu preuzeti s našeg SDK-a - https://www.rutoken.ru/developers/sdk/. Osim sklopova za Linux, tu su i sklopovi za macOS, freebsd i android.
Dodavanje novog PKCS#11 davatelja u XCA. Da biste to učinili, idite na izbornik Opcije na karticu PKCS#11 davatelj.
Pritišćemo dodati i odaberite stazu do biblioteke PKCS#11. U mom slučaju to je usrliblibrtpkcs11ecp.so.
Odabrali smo ključ RSA-2048 za Rutoken EDS PKI kao tip ključa. Ovaj sam ključ nazvao Ključ klijenta.
Unesite PIN kod. I čekamo završetak hardverske generacije para ključeva
Izrađujemo certifikat za korisnika po analogiji s certifikatom poslužitelja. Ovaj put odabiremo predložak [zadano] HTTPS_klijent i ne zaboravi kliknuti Primijeni sve.
U kartici Predmet unos podataka o korisniku. Na zahtjev za spremanje certifikata za token odgovaramo potvrdno.
Kao rezultat toga, na tab Sertifikati u XCA bi trebao dobiti nešto ovako.
Ovaj minimalni skup ključeva i certifikata dovoljan je za početak postavljanja samih poslužitelja.
Za konfiguraciju moramo izvesti CA certifikat, certifikat poslužitelja i privatni ključ poslužitelja.
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 poslužitelj - na Internetu ima dovoljno članaka o ovoj temi, a da ne spominjem službenu dokumentaciju. Prijeđimo odmah na postavljanje HTTPS-a i dvofaktorske autentifikacije pomoću tokena.
Dodajte sljedeće retke u odjeljak poslužitelja u nginx.conf:
Samo ću ukratko opisati one koje sam sebi postavio:
ssl_verify_client - navodi da se lanac povjerenja za certifikat treba provjeriti.
ssl_verify_depth - Definira dubinu pretraživanja za provjereni 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 2 mora biti navedeno u ovom parametru, i tako dalje.
ssl_client_certificate - specificira put do provjerenog korijenskog certifikata, koji se koristi prilikom provjere povjerenja u certifikat korisnika.
ssl_certificate/ssl_certificate_key - označava put do certifikata/privatnog ključa poslužitelja.
Ne zaboravite pokrenuti nginx -t da provjerite da nema grešaka pri upisu u konfiguraciji i da su sve datoteke na pravom mjestu, i tako dalje.
I to je sve! Kao što vidite, postavljanje je vrlo jednostavno.
Pokušajmo se prvo prijaviti bez tokena. Dobivamo ovu sliku:
Idemo dalje o: preferencije # privatnosti, i idemo na Sigurnosni uređaji…
Pritišćemo Opterećenjeda biste dodali novi PKCS#11 upravljački program uređaja i odredili put do našeg librtpkcs11ecp.so.
Da biste provjerili je li certifikat vidljiv, možete otići na potvrda Manager. Od vas će se tražiti da unesete svoj PIN. Nakon ispravnog unosa, možete provjeriti što je na kartici Vaši certifikati pojavio se naš certifikat iz tokena.
Sada idemo s žetonom. Firefox od vas traži da odaberete certifikat koji će biti odabran za poslužitelj. Odaberite naš certifikat.
DOBIT!
Postavljanje se vrši jednom, a kao što možete vidjeti u prozoru zahtjeva za certifikatom, možemo spremiti naš odabir. Nakon toga, pri svakoj prijavi na portal trebat ćemo samo umetnuti token i unijeti korisnički PIN kod koji je naveden prilikom formatiranja. Nakon takve autentifikacije poslužitelj već zna koji se korisnik prijavio i više ne možete kreirati dodatne prozore za provjeru, već odmah pustiti korisnika na njegov osobni račun.
apaš
Baš kao i kod nginxa, nitko ne bi trebao imati problema s instaliranjem apachea. Ako ne znate kako instalirati ovaj web poslužitelj, samo koristite službenu dokumentaciju.
I počinjemo postavljati naš HTTPS i autentifikaciju u dva faktora:
Prvo morate aktivirati mod_ssl:
$ a2enmod ssl
Zatim omogućite zadane HTTPS postavke stranice:
$ a2ensite default-ssl
Sada uređujemo konfiguracijsku 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 praktički se podudaraju s nazivima parametara u nginxu, pa ih neću objašnjavati. Opet, svi zainteresirani za detalje dobrodošli su u dokumentaciju.
Sada ponovno pokrećemo naš poslužitelj:
$ service apache2 reload
$ service apache2 restart
Kao što vidite, postavljanje dvofaktorske provjere autentičnosti na bilo kojem web poslužitelju, bilo na Windowsu ili Linuxu, traje maksimalno jedan sat. A postavljanje preglednika traje oko 5 minuta. Mnogi ljudi misle da je postavljanje i rad s dvofaktorskom autentifikacijom teško i nejasno. Nadam se da će naš članak barem malo razotkriti ovaj mit.
U anketi mogu sudjelovati samo registrirani korisnici. Prijaviti se, molim.
Trebate li upute za postavljanje TLS-a s certifikatima prema GOST 34.10-2012:
Da, TLS-GOST je vrlo potreban
Ne, podešavanje s GOST algoritmima nije zanimljivo
Glasovalo je 44 korisnika. Suzdržano je bilo 9 korisnika.