ProHoster > Blog > podávání > Dvoufaktorová autentizace na webu pomocí USB tokenu. Nyní i pro Linux
Dvoufaktorová autentizace na webu pomocí USB tokenu. Nyní i pro Linux
В jeden z našich předchozích článků jsme hovořili o důležitosti dvoufaktorové autentizace na firemních portálech firem. Minule jsme si ukázali, jak nastavit bezpečné ověřování na webovém serveru IIS.
V komentářích jsme byli požádáni, abychom napsali návod na nejběžnější webové servery pro Linux - nginx a Apache.
Ptali jste se - psali jsme.
Co potřebujete, abyste mohli začít?
Jakákoli moderní distribuce Linuxu. Provedl jsem testovací nastavení na MX Linux 18.2_x64. Toto samozřejmě není serverová distribuce, ale u Debianu pravděpodobně nebudou žádné rozdíly. U jiných distribucí se mohou cesty ke konfiguračním knihovnám mírně lišit.
Žeton. Pokračujeme v používání modelu Rutoken EDS PKI, což je z hlediska rychlostních charakteristik ideální pro firemní použití.
Chcete-li pracovat s tokenem v systému Linux, musíte nainstalovat následující balíčky:
libccid libpcsclite1 pcscd pcsc-tools opensc
Vydávání certifikátů
V předchozích článcích jsme spoléhali na to, že serverové a klientské certifikáty budou vydávány pomocí Microsoft CA. Ale protože vše nastavujeme v Linuxu, řekneme vám také o alternativním způsobu vydávání těchto certifikátů – aniž bychom museli opustit Linux.
Jako CA budeme používat XCA (https://hohnstaedt.de/xca/), který je dostupný v jakékoli moderní distribuci Linuxu. Všechny akce, které budeme v XCA provádět, lze provést v režimu příkazového řádku pomocí utilit OpenSSL a pkcs11-tool, ale pro větší jednoduchost a přehlednost je v tomto článku nebudeme uvádět.
Začínáme
Nainstalujte:
$ apt-get install xca
A běžíme:
$ xca
Vytváříme naši databázi pro CA - /root/CA.xdb
Doporučujeme uložit databázi certifikačního úřadu do složky, kam má přístup pouze správce. To je důležité pro ochranu soukromých klíčů kořenových certifikátů, které se používají k podepisování všech ostatních certifikátů.
Vytvořte klíče a kořenový certifikát CA
Infrastruktura veřejného klíče (PKI) je založena na hierarchickém systému. Hlavní věcí v tomto systému je kořenová certifikační autorita nebo kořenová CA. Nejprve musí být vytvořen jeho certifikát.
Vytváříme soukromý klíč RSA-2048 pro CA. Chcete-li to provést, na kartě Soukromé klíče tam Nový klíč a vyberte vhodný typ.
Nastavte název pro nový pár klíčů. Nazval jsem to CA Key.
Vlastní certifikát CA vystavíme pomocí vytvořeného páru klíčů. Chcete-li to provést, přejděte na kartu Certifikáty a tlačit Nový certifikát.
Určitě si vyberte SHA-256, protože používání SHA-1 již nelze považovat za bezpečné.
Nezapomeňte vybrat jako šablonu [výchozí] CA. Nezapomeňte kliknout na Použít vše, jinak se šablona nepoužije.
V záložce Předmět vyberte si náš pár klíčů. Zde můžete vyplnit všechna hlavní pole certifikátu.
Vytváření klíčů a certifikátu serveru https
Podobným způsobem vytvoříme soukromý klíč RSA-2048 pro server, nazval jsem ho Server Key.
Při vytváření certifikátu zvolíme, že certifikát serveru musí být podepsán certifikátem CA.
Nezapomeňte vybrat SHA-256.
Vybíráme jako šablonu [výchozí] HTTPS_server. Klikněte na Použít vše.
Poté na kartě Předmět vyberte náš klíč a vyplňte požadovaná pole.
Vytvořte klíče a certifikát pro uživatele
Soukromý klíč uživatele bude uložen na našem tokenu. Abyste s ním mohli pracovat, musíte si z našeho webu nainstalovat knihovnu PKCS#11. Pro oblíbené distribuce distribuujeme hotové balíčky, které se nacházejí zde - https://www.rutoken.ru/support/download/pkcs/. Máme také sestavy pro arm64, armv7el, armv7hf, e2k, mipso32el, které lze stáhnout z našeho SDK - https://www.rutoken.ru/developers/sdk/. Kromě sestavení pro Linux existují také sestavení pro macOS, freebsd a android.
Přidání nového poskytovatele PKCS#11 do XCA. Chcete-li to provést, přejděte do nabídky možnosti na kartu Poskytovatel PKCS#11.
Tiskneme přidat a vyberte cestu ke knihovně PKCS#11. V mém případě je to usrliblibrtpkcs11ecp.so.
Jako typ klíče vybereme klíč RSA-2048 pro Rutoken EDS PKI. Tento klíč jsem nazval Klientský klíč.
Zadejte PIN kód. A čekáme na dokončení hardwarového generování páru klíčů
Certifikát pro uživatele vytvoříme analogicky s certifikátem serveru. Tentokrát vybíráme šablonu [výchozí] HTTPS_client a nezapomeňte kliknout Použít vše.
V záložce Předmět zadejte informace o uživateli. Na žádost o uložení certifikátu pro token odpovídáme kladně.
V důsledku toho na tab Certifikáty v XCA byste měli dostat něco takového.
Tato minimální sada klíčů a certifikátů stačí k zahájení nastavení samotných serverů.
Ke konfiguraci potřebujeme exportovat certifikát CA, certifikát serveru a soukromý klíč serveru.
Chcete-li to provést, vyberte požadovanou položku na odpovídající kartě v XCA a klikněte Vývoz.
Nginx
Nebudu psát, jak nainstalovat a spustit server nginx - na internetu je na toto téma dost článků, nemluvě o oficiální dokumentaci. Pojďme rovnou k nastavení HTTPS a dvoufaktorové autentizace pomocí tokenu.
Přidejte následující řádky do sekce server v nginx.conf:
Jen stručně popíšu ty, na které jsem se sám sebe zeptal:
ssl_verify_client - určuje, že je třeba ověřit řetězec důvěryhodnosti certifikátu.
ssl_verify_depth – Definuje hloubku vyhledávání pro důvěryhodný kořenový certifikát v řetězci. Vzhledem k tomu, že náš klientský certifikát je okamžitě podepsán na kořenovém certifikátu, je hloubka nastavena na 1. Pokud je uživatelský certifikát podepsán na zprostředkující CA, musí být v tomto parametru uvedena hodnota 2 a tak dále.
ssl_client_certificate - určuje cestu k důvěryhodnému kořenovému certifikátu, který se používá při kontrole důvěry v certifikát uživatele.
ssl_certificate/ssl_certificate_key - uveďte cestu k certifikátu serveru/soukromému klíči.
Nezapomeňte spustit nginx -t, abyste zkontrolovali, že v konfiguraci nejsou žádné překlepy a že všechny soubory jsou na správném místě a tak dále.
A to je vše! Jak vidíte, nastavení je velmi jednoduché.
Zkusme se nejprve přihlásit bez tokenu. Dostáváme tento obrázek:
Pokračujeme o: preference # soukromí, a jdeme do Bezpečnostní zařízení…
Tiskneme Zatíženípřidat nový ovladač zařízení PKCS#11 a zadat cestu k našemu librtpkcs11ecp.so.
Chcete-li zkontrolovat, zda je certifikát viditelný, přejděte na stránku Správce certifikátů. Budete vyzváni k zadání kódu PIN. Po správném zadání můžete zkontrolovat, co je na kartě Vaše certifikáty se objevil náš certifikát z tokenu.
Nyní pojďme s tokenem. Firefox vás vyzve k výběru certifikátu, který bude vybrán pro server. Vyberte si náš certifikát.
ZISKU!
Nastavení se provede jednou a jak můžete vidět v okně žádosti o certifikát, můžeme náš výběr uložit. Poté nám při každém přihlášení do portálu stačí vložit token a zadat uživatelský PIN kód, který byl zadán při formátování. Po takové autentizaci již server ví, který uživatel se přihlásil a vy již nemůžete vytvářet další okna pro ověření, ale rovnou pustit uživatele do jeho osobního účtu.
Apache
Stejně jako u nginx by nikdo neměl mít problémy s instalací apache. Pokud nevíte, jak tento webový server nainstalovat, použijte oficiální dokumentaci.
A začneme nastavovat naše HTTPS a dvoufaktorové ověřování:
Nejprve musíte aktivovat mod_ssl:
$ a2enmod ssl
A poté povolte výchozí nastavení HTTPS webu:
$ a2ensite default-ssl
Nyní upravíme konfigurační soubor: /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
Jak vidíte, názvy parametrů se prakticky shodují s názvy parametrů v nginx, takže je nebudu vysvětlovat. Opět platí, že každý, koho zajímají podrobnosti, je vítán v dokumentaci.
Nyní restartujeme náš server:
$ service apache2 reload
$ service apache2 restart
Jak vidíte, nastavení dvoufaktorové autentizace na jakémkoli webovém serveru, ať už na Windows nebo Linuxu, trvá maximálně jednu hodinu. A nastavení prohlížečů trvá asi 5 minut. Mnoho lidí si myslí, že nastavení a práce s dvoufaktorovou autentizací je obtížné a nejasné. Doufám, že náš článek tento mýtus alespoň trochu vyvrací.
Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Přihlásit se, prosím.
Potřebujete pokyny pro nastavení TLS s certifikáty podle GOST 34.10-2012:
Ano, TLS-GOST je velmi potřebný
Ne, ladění pomocí algoritmů GOST není zajímavé
Hlasovalo 44 uživatelů. 9 uživatelů se zdrželo hlasování.