ProHoster > Blog > Administrácia > 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
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
Inštalácia:
$ apt-get install xca
A bežíme:
$ xca
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.
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.
Nastavte názov pre nový pár kľúčov. Nazval som to CA Key.
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.
Určite si vyberte SHA-256, pretože používanie SHA-1 už nemožno považovať za bezpečné.
Určite si vyberte ako šablónu [predvolené] CA. Nezabudnite kliknúť na Použiť všetky, inak sa šablóna nepoužije.
V záložke Vaša FIRMA vyberte si náš pár kľúčov. Tam môžete vyplniť všetky hlavné polia certifikátu.
Vytváranie kľúčov a certifikátu servera https
Podobným spôsobom vytvoríme súkromný kľúč RSA-2048 pre server, nazval som ho Server Key.
Pri vytváraní certifikátu zvolíme, že certifikát servera musí byť podpísaný certifikátom CA.
Nezabudnite si vybrať SHA-256.
Vyberáme ako predlohu [predvolené] HTTPS_server. Kliknite na Použiť všetky.
Potom na karte Vaša FIRMA vyberte náš kľúč a vyplňte požadované polia.
Vytvorte kľúče a certifikát pre používateľa
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.
Pridanie nového poskytovateľa PKCS#11 do XCA. Ak to chcete urobiť, prejdite do ponuky možnosti na kartu Poskytovateľ PKCS#11.
Tlačíme pridať a vyberte cestu ku knižnici PKCS#11. V mojom prípade je to usrliblibrtpkcs11ecp.so.
Ako typ kľúča vyberáme kľúč RSA-2048 pre Rutoken EDS PKI. Tento kľúč som nazval Klientsky kľúč.
Zadajte PIN kód. A čakáme na dokončenie hardvérového generovania páru kľúčov
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.
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.
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:
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é.
Skúsme sa najprv prihlásiť bez tokenu. Dostávame tento obrázok:
Pokračujeme o: preferencie # súkromia, a ideme na Bezpečnostné zariadenia…
Tlačíme Loadpridať nový ovládač zariadenia PKCS#11 a zadať cestu k nášmu súboru librtpkcs11ecp.so.
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.
Teraz poďme na token. Firefox vás vyzve, aby ste vybrali certifikát, ktorý sa vyberie pre server. Vyberte si náš certifikát.
ZISK!
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:
Najprv musíte aktivovať mod_ssl:
$ a2enmod ssl
A potom povoľte predvolené nastavenia HTTPS stránky:
$ a2ensite default-ssl
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
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.