ProHoster > Blog > Administratioun > Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux
Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux
В ee vun eise fréieren Artikelen mir hunn iwwer d'Wichtegkeet vun der Zwee-Faktor Authentifikatioun op Firmenportale vu Firmen geschwat. Déi lescht Kéier hu mir demonstréiert wéi sécher Authentifikatioun am IIS Webserver opgeriicht gëtt.
An de Kommentare goufe mir gefrot Instruktioune fir déi allgemeng Webserver fir Linux ze schreiwen - nginx an Apache.
Dir hutt gefrot - mir geschriwwen.
Wat braucht Dir fir unzefänken?
All modern Linux Verdeelung. Ech hunn en Testsetup op MX Linux 18.2_x64 gemaach. Dëst ass natierlech keng Serververdeelung, awer et sinn onwahrscheinlech keng Differenzen fir Debian. Fir aner Verdeelungen kënnen d'Weeër an d'Konfiguratiounsbibliothéike liicht variéieren.
Token. Mir weider de Modell ze benotzen Rutoken EDS PKI, wat ideal ass wat d'Vitesse Charakteristiken fir d'Gesellschaft benotzt.
Fir mat engem Token an Linux ze schaffen, musst Dir déi folgend Packagen installéieren:
libccid libpcsclite1 pcscd pcsc-Tools opensc
Zertifikater erausginn
A fréieren Artikelen hu mir op d'Tatsaach ugewisen datt Server- a Clientzertifikater mat Microsoft CA ausgestallt ginn. Awer well mir alles op Linux opstellen, wäerte mir Iech och iwwer eng alternativ Manéier soen fir dës Zertifikater auszeginn - ouni Linux ze verloossen.
Mir benotzen XCA als CA (https://hohnstaedt.de/xca/), déi op all modern Linux Verdeelung verfügbar ass. All d'Aktiounen déi mir am XCA ausféieren kënnen am Kommandozeilmodus mat den OpenSSL a pkcs11-Tool Utilities gemaach ginn, awer fir méi Einfachheet a Kloerheet wäerte mir se net an dësem Artikel presentéieren.
Schrëtt;
Installéieren:
$ apt-get install xca
A mir lafen:
$ xca
Mir erstellen eis Datebank fir CA - /root/CA.xdb
Mir recommandéieren d'Zertifikat Autoritéit Datebank an engem Dossier ze späicheren wou nëmmen den Administrateur Zougang huet. Dëst ass wichteg fir d'private Schlëssele vun de Rootzertifikater ze schützen, déi benotzt gi fir all aner Zertifikater z'ënnerschreiwen.
Schafen Schlësselen an root CA Zertifikat
Eng ëffentlech Schlësselinfrastruktur (PKI) baséiert op engem hierarchesche System. Den Haapt Saach an dësem System ass d'Root Zertifizéierungsautoritéit oder Root CA. Säin Zertifika muss als éischt erstallt ginn.
Mir kreéieren en RSA-2048 private Schlëssel fir den CA. Fir dëst ze maachen, op der Tab Privat Schlësselen dréckt Neie Schlëssel a wielt de passenden Typ.
Setzt en Numm fir dat neit Schlësselpaar. Ech genannt et CA Key.
Mir erausginn de CA Zertifikat selwer, mat der erstallt Schlëssel Pair. Fir dëst ze maachen, gitt op d'Tab Certificaten an dréckt Neie Certificat.
Ginn sécher ze wielen SHA-256, well d'Benotzung vun SHA-1 kann net méi als sécher ugesi ginn.
Gitt sécher als Schabloun ze wielen [Standard] CA. Vergiesst net op ze klicken Gëlle all, soss gëtt d'Schabloun net ugewannt.
An der Tab Sujet wielt eis Schlësselpaar. Do kënnt Dir all d'Haaptfelder vum Zertifika ausfëllen.
Schafen Schlësselen an en https Server Zertifikat
An enger ähnlecher Manéier kreéiere mir e RSA-2048 private Schlëssel fir de Server, ech hunn et Server Key genannt.
Wann Dir e Certificat erstellt, wielt mir datt de Serverzertifika muss mat engem CA Zertifika ënnerschriwwe ginn.
Vergiesst net ze wielen SHA-256.
Mir wielen als Schabloun [Standard] HTTPS_server. Klickt op Gëlle all.
Dann op der Tab Sujet wielt eise Schlëssel a fëllt déi néideg Felder aus.
Schafen Schlësselen an Zertifikat fir de Benotzer
De private Schlëssel vum Benotzer gëtt op eisem Token gespäichert. Ze schaffen mat et, Dir musst der PKCS # 11 Bibliothéik vun eiser Websäit installéiert. Fir populär Verdeelunge verdeele mir fäerdeg Packagen, déi hei sinn - https://www.rutoken.ru/support/download/pkcs/. Mir hunn och Versammlungen fir arm64, armv7el, armv7hf, e2k, mipso32el, déi aus eiser SDK erofgeluede kënne ginn - https://www.rutoken.ru/developers/sdk/. Zousätzlech zu Versammlungen fir Linux ginn et och Versammlungen fir macOS, freebsd an Android.
Dobäizemaachen en neien PKCS # 11 Provider XCA. Fir dëst ze maachen, gitt op de Menü Optiounen op den Tab PKCS # 11 Provider.
Mir drécken Foto a wielt de Wee op d'PKCS # 11 Bibliothéik. A mengem Fall ass et usrliblibrtpkcs11ecp.so.
Mir wielen den RSA-2048 Schlëssel fir de Rutoken EDS PKI als Schlësseltyp. Ech hunn dëse Schlëssel Client Key genannt.
Gitt de PIN Code. A mir waarden op d'Fäerdegstellung vun der Hardwaregeneratioun vum Schlësselpaar
Mir kreéieren e Certificat fir de Benotzer duerch Analogie mam Serverzertifika. Dës Kéier wielt mir eng Schabloun [Standard] HTTPS_client an vergiesst net ze klicken Gëlle all.
An der Tab Sujet gitt Informatiounen iwwert de Benotzer. Mir äntweren an affirméierend op d'Ufro fir de Certificat fir den Token ze späicheren.
Als Resultat, op der Tab Zertifikaten an XCA sollt Dir esou eppes kréien.
Dëse Minimum Set vu Schlësselen an Zertifikater ass genuch fir d'Server selwer opzestellen.
Fir ze konfiguréieren, musse mir de CA Zertifikat, Server Zertifikat a Server private Schlëssel exportéieren.
Fir dëst ze maachen, wielt déi gewënscht Entrée op der entspriechender Tab an XCA a klickt exportéieren.
Nginx
Ech wäert net schreiwen wéi ech en nginx-Server installéieren a lafen - et gi genuch Artikelen iwwer dëst Thema um Internet, fir net déi offiziell Dokumentatioun ze ernimmen. Loosst eis direkt fir HTTPS an Zwee-Faktor Authentifikatioun opzestellen mat engem Token.
Füügt déi folgend Zeilen op d'Server Sektioun an nginx.conf:
Ech wäert just déi, déi ech mech gefrot hunn, kuerz beschreiwen:
ssl_verify_client - spezifizéiert datt d'Kette vum Vertrauen fir den Zertifika muss verifizéiert ginn.
ssl_verify_depth - Definéiert d'Sichdéift fir de vertrauenswürdege Rootzertifika an der Kette. Well eise Client Zertifikat direkt op de Root Zertifikat ënnerschriwwe gëtt, gëtt d'Tiefe op 1 gesat. Wann de Benotzer Zertifikat op engem Zwëschen CA ënnerschriwwen ass, da muss 2 an dësem Parameter uginn, a sou weider.
ssl_client_certificate - spezifizéiert de Wee zum vertrauenswürdege Rootzertifika, dee benotzt gëtt wann Dir d'Vertrauen an de Benotzerzertifika kontrolléiert.
ssl_certificate/ssl_certificate_key - gitt de Wee zum Serverzertifikat/private Schlëssel un.
Vergiesst net nginx -t ze lafen fir ze kontrolléieren ob et keng Tippfeeler an der Configuratioun sinn, an datt all Dateien op der richteger Plaz sinn, a sou weider.
An dat ass alles! Wéi Dir gesitt, ass de Setup ganz einfach.
Loosst d'éischt probéieren ouni Token anzeloggen. Mir kréien dëst Bild:
Mir ginn weider iwwer: Virléiften # Privatsphär, a mir ginn op Sécherheetsgeräter…
Mir drécken Luedenfir eng nei PKCS # 11 Device Driver ze addéieren an de Wee op eis librtpkcs11ecp.so uginn.
Fir ze kontrolléieren ob den Zertifika sichtbar ass, kënnt Dir op Zertifika Manager. Dir wäert gefuerdert ginn Äre PIN anzeginn. Nom korrekten Input kënnt Dir kucken wat op der Tab ass Är Certificaten eisen Certificat vum Token erschéngt.
Loosst eis elo mam Token goen. Firefox freet Iech fir e Certificat ze wielen deen fir de Server ausgewielt gëtt. Wielt eis Zertifikat.
PROFIT!
De Setup gëtt eemol gemaach, a wéi Dir an der Zertifika Ufrofenster kënnt gesinn, kënne mir eis Auswiel späicheren. Duerno, all Kéier wann mir op de Portal aloggen, brauche mir nëmmen en Token anzeféieren an de Benotzer PIN Code anzeginn, dee während der Formatéierung spezifizéiert gouf. No esou Authentifikatioun weess de Server scho wéi ee Benotzer ageloggt ass an Dir kënnt keng zousätzlech Fënstere méi fir d'Verifizéierung erstellen, awer de Benotzer direkt op säi perséinleche Kont loossen.
Apache-
Just wéi mat nginx, soll keen Probleemer hunn Apache z'installéieren. Wann Dir net wësst wéi Dir dëse Webserver installéiere wëllt, benotzt just déi offiziell Dokumentatioun.
A mir fänken un eis HTTPS an Zwee-Faktor Authentifikatioun opzestellen:
Als éischt musst Dir mod_ssl aktivéieren:
$ a2enmod ssl
An aktivéiert dann d'Standard HTTPS Astellunge vum Site:
$ a2ensite default-ssl
Elo änneren mir d'Konfiguratiounsdatei: /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
Wéi Dir gesitt, sinn d'Nimm vun de Parameteren praktesch mat den Nimm vun den Parameteren an nginx zesummekomm, also wäert ech se net erklären. Nach eng Kéier, jiddereen, deen un d'Detailer interesséiert ass, ass wëllkomm op d'Dokumentatioun.
Elo restarte mir eise Server:
$ service apache2 reload
$ service apache2 restart
Wéi Dir gesitt, dauert d'Astellung vun Zwee-Faktor Authentifikatioun op all Webserver, egal ob op Windows oder Linux, eng Stonn maximal. A Browser opzemaachen dauert ongeféier 5 Minutten. Vill Leit mengen datt d'Opstelle an d'Aarbecht mat Zwee-Faktor Authentifikatioun schwéier an onkloer ass. Ech hoffen eisen Artikel debunkt dëse Mythos, op d'mannst e bëssen.
Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.
Braucht Dir Instruktioune fir TLS mat Certificaten opzestellen no GOST 34.10-2012:
Jo, TLS-GOST ass ganz néideg
Nee, tuning mat GOST Algorithmen ass net interessant
44 Benotzer hunn gestëmmt. 9 Benotzer hu sech enthalen.