Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux
В jeden z našich predchádzajúcich článkov sme hovorili o význame dvojfaktorovej autentifikácie na firemných portáloch firiem. Minule sme si ukázali, ako nastaviť bezpečnú autentifikáciu na webovom serveri IIS.

V komentároch sme boli požiadaní, aby sme napísali návod na najbežnejšie webové servery pre Linux - nginx a Apache.

Pýtali ste sa - písali sme.

Čo potrebujete, aby ste mohli začať?

  • Akákoľvek moderná distribúcia Linuxu. Urobil som testovacie nastavenie na MX Linux 18.2_x64. Toto samozrejme nie je serverová distribúcia, ale je nepravdepodobné, že v Debiane budú nejaké rozdiely. V prípade iných distribúcií sa cesty ku konfiguračným knižniciam môžu mierne líšiť.
  • Token. Pokračujeme v používaní modelu Rutoken EDS PKI, ktorý je z hľadiska rýchlostných charakteristík ideálny pre firemné použitie.
  • Ak chcete pracovať s tokenom v systéme Linux, musíte nainštalovať nasledujúce balíky:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

Vydávanie certifikátov

V predchádzajúcich článkoch sme sa spoliehali na to, že serverové a klientske certifikáty budú vydávané pomocou Microsoft CA. Ale keďže všetko nastavujeme v Linuxe, povieme vám aj o alternatívnom spôsobe vydávania týchto certifikátov – bez toho, aby ste museli opustiť Linux.
Budeme používať XCA ako CA (https://hohnstaedt.de/xca/), ktorý je dostupný v každej modernej distribúcii Linuxu. Všetky akcie, ktoré budeme vykonávať v XCA, je možné vykonať v režime príkazového riadku pomocou utilít OpenSSL a pkcs11-tool, ale pre väčšiu jednoduchosť a prehľadnosť ich v tomto článku nebudeme uvádzať.

Začíname

  1. Inštalácia:
    $ apt-get install xca
  2. A bežíme:
    $ xca
  3. Vytvárame našu databázu pre CA - /root/CA.xdb
    Databázu Certifikačnej autority odporúčame uložiť do priečinka, do ktorého má prístup iba administrátor. Je to dôležité na ochranu súkromných kľúčov koreňových certifikátov, ktoré sa používajú na podpisovanie všetkých ostatných certifikátov.

Vytvorte kľúče a koreňový certifikát CA

Infraštruktúra verejného kľúča (PKI) je založená na hierarchickom systéme. Hlavná vec v tomto systéme je koreňová certifikačná autorita alebo koreňová CA. Najprv musí byť vytvorený jeho certifikát.

  1. Pre CA vytvoríme súkromný kľúč RSA-2048. Ak to chcete urobiť, na karte Súkromné ​​kľúče tlačiť Nový kľúč a vyberte vhodný typ.
  2. Nastavte názov pre nový pár kľúčov. Nazval som to CA Key.
  3. Samotný certifikát CA vydávame pomocou vytvoreného páru kľúčov. Ak to chcete urobiť, prejdite na kartu certifikáty a kliknite na tlačidlo OK Nový certifikát.
  4. Určite si vyberte SHA-256, pretože používanie SHA-1 už nemožno považovať za bezpečné.
  5. Určite si vyberte ako šablónu [predvolené] CA. Nezabudnite kliknúť na Použiť všetky, inak sa šablóna nepoužije.
  6. V záložke Vaša FIRMA vyberte si náš pár kľúčov. Tam môžete vyplniť všetky hlavné polia certifikátu.

Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

Vytváranie kľúčov a certifikátu servera https

  1. Podobným spôsobom vytvoríme súkromný kľúč RSA-2048 pre server, nazval som ho Server Key.
  2. Pri vytváraní certifikátu zvolíme, že certifikát servera musí byť podpísaný certifikátom CA.
  3. Nezabudnite si vybrať SHA-256.
  4. Vyberáme ako predlohu [predvolené] HTTPS_server. Kliknite na Použiť všetky.
  5. Potom na karte Vaša FIRMA vyberte náš kľúč a vyplňte požadované polia.

Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

Vytvorte kľúče a certifikát pre používateľa

  1. Súkromný kľúč používateľa bude uložený na našom tokene. Aby ste s ňou mohli pracovať, musíte si z našej webovej stránky nainštalovať knižnicu PKCS#11. Pre populárne distribúcie distribuujeme hotové balíčky, ktoré sa nachádzajú tu - https://www.rutoken.ru/support/download/pkcs/. Máme tiež zostavy pre arm64, armv7el, armv7hf, e2k, mipso32el, ktoré si môžete stiahnuť z nášho SDK - https://www.rutoken.ru/developers/sdk/. Okrem zostáv pre Linux existujú aj zostavy pre macOS, freebsd a android.
  2. Pridanie nového poskytovateľa PKCS#11 do XCA. Ak to chcete urobiť, prejdite do ponuky možnosti na kartu Poskytovateľ PKCS#11.
  3. Tlačíme pridať a vyberte cestu ku knižnici PKCS#11. V mojom prípade je to usrliblibrtpkcs11ecp.so.
  4. Budeme potrebovať naformátovaný token Rutoken EDS PKI. Stiahnite si pomôcku rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Vykonávame
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Ako typ kľúča vyberáme kľúč RSA-2048 pre Rutoken EDS PKI. Tento kľúč som nazval Klientsky kľúč.

    Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

  7. Zadajte PIN kód. A čakáme na dokončenie hardvérového generovania páru kľúčov

    Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

  8. Certifikát pre užívateľa vytvoríme analogicky s certifikátom servera. Tentokrát vyberieme šablónu [predvolené] HTTPS_client a nezabudnite kliknúť Použiť všetky.
  9. V záložke Vaša FIRMA zadajte informácie o používateľovi. Na žiadosť o uloženie certifikátu pre token odpovedáme kladne.

V dôsledku toho na karte Certifikáty v XCA by ste mali dostať niečo takéto.

Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux
Táto minimálna sada kľúčov a certifikátov stačí na začatie nastavovania samotných serverov.

Na konfiguráciu potrebujeme exportovať certifikát CA, certifikát servera a súkromný kľúč servera.

Ak to chcete urobiť, vyberte požadovaný záznam na zodpovedajúcej karte v XCA a kliknite export.

Nginx

Nebudem písať, ako nainštalovať a spustiť server nginx - na internete je dosť článkov na túto tému, nehovoriac o oficiálnej dokumentácii. Poďme rovno k nastaveniu HTTPS a dvojfaktorovej autentifikácii pomocou tokenu.

Pridajte nasledujúce riadky do sekcie servera v 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;
}

Podrobný popis všetkých parametrov súvisiacich s konfiguráciou ssl v nginx nájdete tu - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Stručne opíšem tie, na ktoré som sa sám seba pýtal:

  • ssl_verify_client - určuje, že reťazec dôveryhodnosti pre certifikát musí byť overený.
  • ssl_verify_depth – Definuje hĺbku vyhľadávania pre dôveryhodný koreňový certifikát v reťazci. Keďže náš klientsky certifikát je okamžite podpísaný na koreňovom certifikáte, hĺbka je nastavená na 1. Ak je užívateľský certifikát podpísaný na sprostredkujúcej CA, potom musí byť v tomto parametri špecifikovaná 2 atď.
  • ssl_client_certificate - určuje cestu k dôveryhodnému koreňovému certifikátu, ktorý sa používa pri kontrole dôvery v certifikát používateľa.
  • ssl_certificate/ssl_certificate_key - uveďte cestu k certifikátu servera/súkromnému kľúču.

Nezabudnite spustiť nginx -t, aby ste skontrolovali, či v konfigurácii nie sú preklepy a či sú všetky súbory na správnom mieste atď.

A to je všetko! Ako vidíte, nastavenie je veľmi jednoduché.

Skontrolujte, či funguje vo Firefoxe

Keďže všetko robíme kompletne v Linuxe, budeme predpokladať, že naši používatelia pracujú aj v Linuxe (ak majú Windows, tak pokyny na nastavenie prehliadačov nájdete v predchádzajúcom článku.

  1. Spustíme Firefox.
  2. Skúsme sa najprv prihlásiť bez tokenu. Dostávame tento obrázok:

    Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

  3. Pokračujeme o: preferencie # súkromia, a ideme na Bezpečnostné zariadenia…
  4. Tlačíme Loadpridať nový ovládač zariadenia PKCS#11 a zadať cestu k nášmu súboru librtpkcs11ecp.so.
  5. Ak chcete skontrolovať, či je certifikát viditeľný, prejdite na stránku Správca certifikátov. Zobrazí sa výzva na zadanie kódu PIN. Po správnom zadaní môžete skontrolovať, čo je na karte Vaše certifikáty sa objavil náš certifikát z tokenu.
  6. Teraz poďme na token. Firefox vás vyzve, aby ste vybrali certifikát, ktorý sa vyberie pre server. Vyberte si náš certifikát.

    Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

  7. ZISK!

    Dvojfaktorová autentifikácia na stránke pomocou USB tokenu. Teraz aj pre Linux

Nastavenie sa vykoná raz a ako môžete vidieť v okne žiadosti o certifikát, môžeme náš výber uložiť. Potom nám pri každom prihlásení do portálu stačí vložiť token a zadať užívateľský PIN kód, ktorý bol zadaný pri formátovaní. Po takejto autentifikácii už server vie, ktorý používateľ sa prihlásil a už nemôžete vytvárať ďalšie okná na overenie, ale okamžite vpustiť používateľa do jeho osobného účtu.

apache

Rovnako ako pri nginx, nikto by nemal mať problémy s inštaláciou apache. Ak neviete, ako nainštalovať tento webový server, použite oficiálnu dokumentáciu.

A začneme nastavovať naše HTTPS a dvojfaktorové overenie:

  1. Najprv musíte aktivovať mod_ssl:
    $ a2enmod ssl
  2. A potom povoľte predvolené nastavenia HTTPS stránky:
    $ a2ensite default-ssl
  3. Teraz upravíme konfiguračný súbor: /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

    Ako vidíte, názvy parametrov sa prakticky zhodujú s názvami parametrov v nginx, takže ich nebudem vysvetľovať. Opäť platí, že každý, koho zaujímajú podrobnosti, je vítaný v dokumentácii.
    Teraz reštartujeme náš server:

    $ service apache2 reload
    $ service apache2 restart

  4. Ako vidíte, nastavenie dvojfaktorovej autentifikácie na akomkoľvek webovom serveri, či už v systéme Windows alebo Linux, trvá maximálne jednu hodinu. A nastavenie prehliadačov trvá asi 5 minút. Mnoho ľudí si myslí, že nastavenie a práca s dvojfaktorovou autentifikáciou je náročná a nejasná. Dúfam, že náš článok tento mýtus aspoň trochu vyvráti.

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Potrebujete pokyny na nastavenie TLS s certifikátmi podľa GOST 34.10-2012:

  • Áno, TLS-GOST je veľmi potrebný

  • Nie, ladenie pomocou algoritmov GOST nie je zaujímavé

Hlasovalo 44 užívateľov. 9 užívateľov sa zdržalo hlasovania.

Zdroj: hab.com

Pridať komentár