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

Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

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;

  1. Installéieren:
    $ apt-get install xca
  2. A mir lafen:
    $ xca
  3. 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.

  1. 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.
  2. Setzt en Numm fir dat neit Schlësselpaar. Ech genannt et CA Key.
  3. 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.
  4. Ginn sécher ze wielen SHA-256, well d'Benotzung vun SHA-1 kann net méi als sécher ugesi ginn.
  5. Gitt sécher als Schabloun ze wielen [Standard] CA. Vergiesst net op ze klicken Gëlle all, soss gëtt d'Schabloun net ugewannt.
  6. An der Tab Sujet wielt eis Schlësselpaar. Do kënnt Dir all d'Haaptfelder vum Zertifika ausfëllen.

Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

Schafen Schlësselen an en https Server Zertifikat

  1. An enger ähnlecher Manéier kreéiere mir e RSA-2048 private Schlëssel fir de Server, ech hunn et Server Key genannt.
  2. Wann Dir e Certificat erstellt, wielt mir datt de Serverzertifika muss mat engem CA Zertifika ënnerschriwwe ginn.
  3. Vergiesst net ze wielen SHA-256.
  4. Mir wielen als Schabloun [Standard] HTTPS_server. Klickt op Gëlle all.
  5. Dann op der Tab Sujet wielt eise Schlëssel a fëllt déi néideg Felder aus.

Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

Schafen Schlësselen an Zertifikat fir de Benotzer

  1. 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.
  2. Dobäizemaachen en neien PKCS # 11 Provider XCA. Fir dëst ze maachen, gitt op de Menü Optiounen op den Tab PKCS # 11 Provider.
  3. Mir drécken Foto a wielt de Wee op d'PKCS # 11 Bibliothéik. A mengem Fall ass et usrliblibrtpkcs11ecp.so.
  4. Mir brauchen e formatéierte Rutoken EDS PKI Token. Luet den rtAdmin Utility erof - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Mir droen aus
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Mir wielen den RSA-2048 Schlëssel fir de Rutoken EDS PKI als Schlësseltyp. Ech hunn dëse Schlëssel Client Key genannt.

    Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

  7. Gitt de PIN Code. A mir waarden op d'Fäerdegstellung vun der Hardwaregeneratioun vum Schlësselpaar

    Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

  8. 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.
  9. 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.

Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux
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:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Eng detailléiert Beschreiwung vun alle Parameteren am Zesummenhang mat der Konfiguratioun vun ssl an nginx kann hei fonnt ginn - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

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.

Iwwerpréift datt et am Firefox funktionnéiert

Well mir alles komplett am Linux maachen, wäerte mir dovun ausgoen datt eis Benotzer och am Linux schaffen (wann se Windows hunn, dann kuckt d'Instruktioune fir d'Browser opzestellen am virege Artikel.

  1. Loosst eis Firefox starten.
  2. Loosst d'éischt probéieren ouni Token anzeloggen. Mir kréien dëst Bild:

    Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

  3. Mir ginn weider iwwer: Virléiften # Privatsphär, a mir ginn op Sécherheetsgeräter…
  4. Mir drécken Luedenfir eng nei PKCS # 11 Device Driver ze addéieren an de Wee op eis librtpkcs11ecp.so uginn.
  5. 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.
  6. Loosst eis elo mam Token goen. Firefox freet Iech fir e Certificat ze wielen deen fir de Server ausgewielt gëtt. Wielt eis Zertifikat.

    Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

  7. PROFIT!

    Zwee-Faktor Authentifikatioun um Site mat engem USB Token. Elo och fir Linux

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:

  1. Als éischt musst Dir mod_ssl aktivéieren:
    $ a2enmod ssl
  2. An aktivéiert dann d'Standard HTTPS Astellunge vum Site:
    $ a2ensite default-ssl
  3. 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

  4. 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.

Source: will.com

Setzt e Commentaire