
V jsme hovořili o důležitosti dvojfaktorové autentizace na firemních portálech. Minule jsme ukázali, jak nastavit bezpečnou autentizaci na webovém serveru IIS.
V komentářích jsme byli požádáni o napsání návodu pro nejběžnější webové servery na Linuxu — nginx a Apache.
Žádali jste — my jsme napsali.
Co je potřeba k začátku?
- Jakýkoliv moderní distribuce Linuxu. Testovací konfiguraci jsem prováděl na MX Linux 18.2_x64. To samozřejmě není serverová distribuce, ale pro Debian nebudou pravděpodobně žádné rozdíly. U jiných distribucí se mohou mírně lišit cesty k knihovnám a konfiguračním souborům.
- Token. I nadále používáme model , který je ideálně vhodný co do rychlostních charakteristik pro firemní užití.
- K práci s tokenem na Linuxu je potřeba 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 vycházeli z toho, že certifikáty serveru a klientů budou vydány pomocí Microsoft CA. Ale jakmile vše nastavujeme na Linuxu, tak také zmíníme alternativní způsob jejich vydávání — aniž bychom opustili Linux.
Jako CA použijeme XCA (), který je dostupný v každé moderní distribuci Linuxu. Všechny akce, které provedeme v XCA, lze udělat také 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
- Nainstalujeme:
$ apt-get install xca - A spouštíme:
$ xca - Vytváříme naši databázi pro CA — /root/CA.xdb
Doporučujeme uchovávat databázi Certificate Authority ve složce, do které má přístup pouze administrátor. To je důležité pro ochranu soukromých klíčů kořenových certifikátů, které se používají pro podepisování všech ostatních certifikátů.
Vytváříme klíče a certifikát root CA
Infrastruktura veřejných klíčů (PKI) se zakládá na hierarchickém systému. Hlavní v tomto systému je kořenová certifikační autorita nebo root CA. Jeho certifikát je třeba vytvořit jako první.
- Vytváříme pro CA soukromý klíč RSA-2048. K tomu na záložce Private Keys klikněte New Key a vybíráme odpovídající typ.
- Zadáváme název pro novou klíčovou dvojici. Nazval jsem ji — CA Key.
- Vydáváme samotný certifikát CA, pomocí vytvořené klíčové dvojice. K tomu přecházíme na záložku Certificates a klikneme na New Certificate.
- Nutně vybíráme SHA-256, protože použití SHA-1 již nemůže být považováno za bezpečné.
- Jako šablonu nutně vybíráme [default] CA. Nezapomeňte kliknout na Použít vše, jinak šablona nebude aplikována.
- Na kartě Předmět vybíráme náš klíčový pár. Tam můžete také vyplnit všechna hlavní pole certifikátu.

Vytváříme klíče a certifikát https-serveru
- Stejným způsobem vytváříme pro server soukromý klíč RSA-2048, pojmenoval jsem ho — Server Key.
- Při vytváření certifikátu vybíráme, že certifikát serveru musí být podepsán certifikátem CA.
- Nezapomínejte vybrat SHA-256.
- Jako šablonu vybíráme [default] HTTPS_server. Klikneme na Použít vše.
- Poté na záložce Předmět vybíráme náš klíč a vyplňujeme potřebná pole.

Vytváříme klíče a certifikát pro uživatele
- Soukromý klíč uživatele bude uložen na našem tokenu. Pro práci s ním je nutné nainstalovat knihovnu PKCS#11 z našich stránek. Pro populární distribuce nabízíme hotové balíčky, které jsou zde — . Máme také verze pro arm64, armv7el, armv7hf, e2k, mipso32el, které můžete najít v našem SDK — . Kromě balíčků pro linux máme i balíčky pro macOS, freebsd a android.
- Přidáváme nového poskytovatele PKCS#11 do XCA. Za tímto účelem jdeme do nabídky Options na záložku Poskytovatel PKCS#11.
- Klikneme na Přidat a vybereme cestu k knihovně PKCS#11. V mém případě je to usrliblibrtpkcs11ecp.so.
- Budeme potřebovat naformátovaný token RUTOKEN ECP PKI. Stáhněte si utilitu rtAdmin —
- Provádíme
$ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u - Jako typ klíče vybíráme — klíč RSA-2048 na RUTOKEN ECP PKI. Pojmenoval jsem tento klíč Client Key.

- Zadáme PIN-kód. A čekáme na dokončení hardwarové generace klíčového páru.

- Certifikát pro uživatele vytváříme podobně jako certifikát serveru. Tentokrát vybíráme šablonu [default] HTTPS_client a nezapomeňte kliknout Použít vše.
- Na kartě Předmět zadejte informace o uživateli. Na dotaz o uložení certifikátu na token odpovíme kladně.
Výsledkem na záložce Certifikáty v XCA by měl vypadat přibližně takto.

Tato minimální sada klíčů a certifikátů je dostatečná pro to, abychom mohli začít s nastavením samotných serverů.
Pro nastavení musíme exportovat certifikát CA, certifikát serveru a soukromý klíč serveru.
K tomu je třeba vybrat příslušný záznam na odpovídající záložce v XCA a kliknout Export.
Nginx
Jak nainstalovat a spustit nginx server, nebudu psát — na toto téma existuje dostatek článků na internetu, nemluvě o oficiální dokumentaci. Přejděme rovnou k nastavení HTTPS a dvoufaktorové autentizace pomocí tokenu.
Přidáváme do sekce server v nginx.conf následující řádky:
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é popisy všech parametrů týkajících se nastavení ssl v nginx naleznete zde —
Já jen krátce popíšu ty, které jsem sám nastavil:
- ssl_verify_client — určuje, že je nutné zkontrolovat řetězec důvěry k certifikátu.
- ssl_verify_depth — určuje hloubku vyhledávání důvěryhodného kořenového certifikátu v řetězci. Protože náš certifikát klienta je podepsán kořenovým certifikátem, je hloubka nastavena na 1. Pokud by byl certifikát uživatele podepsán na meziprodukčním CA, je třeba uvést 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 k certifikátu uživatele.
- ssl_certificate/ssl_certificate_key — uvádějí cestu k certifikátu/privátnímu klíči serveru.
Nezapomínejte provést nginx -t, abyste zkontrolovali, že v konfiguraci nejsou překlepy, a že všechny soubory jsou na správném místě a tak dále.
A to je vlastně vše! Jak vidíte, nastavení je velmi jednoduché.
Kontrolujeme funkčnost ve Firefoxu
Protože všechno děláme výhradně v Linuxu, můžeme předpokládat, že naši uživatelé také pracují v Linuxu (pokud mají Windows, pak .
- Spouštíme Firefox.
- Nejdříve se pokusíme přihlásit bez tokenu. Dostaneme takový obrázek:

- Přejdeme na about:preferences#privacy, a jdeme do Security Devices…
- Klikneme na Načtení, abychom přidali nový ovladač zařízení PKCS#11 a uvedli cestu k našemu librtpkcs11ecp.so.
- Pro ověření, že certifikát je viditelný, můžeme přejít na Certificate Manager. Objeví se výzva k zadání PIN kódu. Po správném zadání můžeme zkontrolovat, že na kartě Your Certificates se objevil náš certifikát z tokenu.
- Nyní se přihlásíme s tokenem. Firefox nabídne vybrat certifikát, který bude vybrán na serveru. Vybereme náš certifikát.

- ZISK!

Nastavení se provádí jednou a jak je vidět v okně žádosti o certifikát, můžeme si uchovat náš výběr. Poté při každém přihlášení na portál stačí pouze vložit token a zadat PIN kód uživatele, který byl nastaven při formátování. Po takové autentizaci server již ví, který uživatel se přihlásil, a není třeba provádět žádná další okna pro ověření, uživatel může ihned vstoupit do svého osobního účtu.
Apache
Stejně jako u nginx by neměl nikdo mít problémy s instalací apache. Pokud nevíte, jak tento webový server nainstalovat, jednoduše se podívejte na oficiální dokumentaci.
A nyní začínáme s nastavením našeho HTTPS a dvoufaktorové autentizace:
- Nejdříve je nutné aktivovat mod_ssl:
$ a2enmod ssl - A poté zapnout výchozí nastavení HTTPS pro web:
$ 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 10Jak vidíte, názvy parametrů téměř odpovídají názvům parametrů v nginx, takže je nebudu zvlášť vysvětlovat. Opět, kdo má zájem o podrobnosti — vitajte 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 či Linux, zabere maximálně hodinu. Nastavení prohlížečů trvá kolem 5 minut. Mnozí si myslí, že nastavení a práce s dvoufaktorovou autentizací je složité a nepochopitelné. Doufám, že náš článek alespoň trochu rozptýlí tento mýtus.
Pouze registrovaní uživatelé se mohou účastnit ankety. , prosím.
Je potřeba návod na nastavení práce TLS se certifikáty podle GOST 34.10-2012:
Ano, TLS-GOST je velmi potřebný
Ne, nastavení s GOST algoritmy mě nezajímá
Hlasovalo 44 uživatelů. Zdrželo se 9 uživatelů.
Zdroj: habr.com





