Jednoduchá hesla nejsou bezpečná a složitá si nelze zapamatovat. Proto tak často končí na lepícím papírku pod klávesnicí nebo na monitoru. Aby bylo zajištěno, že hesla zůstanou v myslích „zapomnětlivých“ uživatelů a nedojde ke ztrátě spolehlivosti ochrany, existuje dvoufaktorová autentizace (2FA).
Díky kombinaci vlastnictví zařízení a znalosti jeho PIN může být samotný PIN jednodušší a snadněji zapamatovatelný. Nevýhody v délce nebo náhodnosti PIN jsou kompenzovány požadavkem fyzického držení a omezením hrubé síly PIN.
Ve státních úřadech se navíc stává, že chtějí, aby vše fungovalo podle GOST. Tato možnost 2FA pro přihlášení do Linuxu bude diskutována. Začnu z dálky.
moduly PAM
Pluggable Authentication Modules (PAM) jsou moduly se standardním API a implementacemi různých autentizačních mechanismů v aplikacích.
Všechny utility a aplikace, které mohou pracovat s PAM, je vyzvednou a mohou je použít pro autentizaci uživatele.
V praxi to funguje asi takto: příkaz login zavolá PAM, který provede všechny potřebné kontroly pomocí modulů uvedených v konfiguračním souboru a výsledek vrátí zpět příkazu login.
librtpam
Modul vyvinutý společností Aktiv přidává dvoufaktorovou autentizaci uživatelů pomocí čipových karet nebo USB tokenů pomocí asymetrických klíčů podle nejnovějších standardů tuzemské kryptografie.
Podívejme se na princip jeho fungování:
- Token uchovává certifikát uživatele a jeho soukromý klíč;
- Certifikát je uložen v domovském adresáři uživatele jako důvěryhodný.
Proces ověřování probíhá následovně:
- Rutoken hledá osobní certifikát uživatele.
- Je požadován PIN tokenu.
- Náhodná data se podepisují na soukromý klíč přímo v čipu Rutoken.
- Výsledný podpis je ověřen pomocí veřejného klíče z certifikátu uživatele.
- Modul vrátí výsledek ověření podpisu volající aplikaci.
Můžete se ověřit pomocí klíčů GOST R 34.10-2012 (délka 256 nebo 512 bitů) nebo zastaralého GOST R 34.10-2001.
O bezpečnost klíčů se nemusíte starat – jsou generovány přímo v Rutokenu a nikdy neopouštějí jeho paměť během kryptografických operací.
Rutoken EDS 2.0 je certifikován FSB a FSTEC podle NDV 4, lze jej proto použít v informačních systémech zpracovávajících důvěrné informace.
Praktické použití
Bude stačit téměř každý moderní Linux, například použijeme xUbuntu 18.10.
1) Nainstalujte potřebné balíčky
sudo apt-get install libccid pcscd opensc
Pokud chcete přidat zámek plochy se spořičem obrazovky, nainstalujte si balíček dodatečně libpam-pkcs11
.
2) Přidejte modul PAM s podporou GOST
Načítání knihovny z
Zkopírujte obsah složky PAM librtpam.so.1.0.0 do systémové složky
/usr/lib/
nebo /usr/lib/x86_64-linux-gnu/
nebo /usr/lib64
3) Nainstalujte balíček pomocí librtpkcs11ecp.so
Stáhněte a nainstalujte balíček DEB nebo RPM z odkazu:
4) Zkontrolujte, zda v systému funguje Rutoken EDS 2.0
V terminálu provedeme
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Pokud vidíte čáru Rutoken ECP <no label>
- to znamená, že je vše v pořádku.
5) Přečtěte si certifikát
Kontrola, zda má zařízení certifikát
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Pokud po řádku:
Using slot 0 with a present token (0x0)
- zobrazí se informace o klíčích a certifikátech je potřeba si certifikát přečíst a uložit na disk. Chcete-li to provést, spusťte následující příkaz, kde místo {id} musíte nahradit ID certifikátu, které jste viděli ve výstupu předchozího příkazu:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Pokud byl soubor cert.crt vytvořen, pokračujte krokem 6). - nic tu není, pak je zařízení prázdné. Kontaktujte svého správce nebo si klíče a certifikát vytvořte sami podle následujícího kroku.
5.1) Vytvořte testovací certifikát
Pozornost! Popsané způsoby vytváření klíčů a certifikátů jsou vhodné pro testování a nejsou určeny pro použití v bojovém režimu. K tomu je třeba použít klíče a certifikáty vydané důvěryhodnou certifikační autoritou vaší organizace nebo akreditovanou certifikační autoritou.
Modul PAM je určen k ochraně místních počítačů a je navržen pro práci v malých organizacích. Vzhledem k malému počtu uživatelů může Administrátor sledovat zneplatnění certifikátů a ručně blokovat účty a také dobu platnosti certifikátů. Modul PAM zatím neví, jak ověřovat certifikáty pomocí CRL a budovat řetězce důvěry.
Snadný způsob (přes prohlížeč)
Chcete-li získat zkušební certifikát, použijte
Cesta geeka (přes konzoli a případně kompilátor)
Zkontrolujte verzi OpenSC
$ opensc-tool --version
Pokud je verze nižší než 0.20, aktualizujte nebo sestavte
Vygenerujte pár klíčů s následujícími parametry:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)
--id:
identifikátor objektu (CKA_ID) jako dvoumístná čísla hexadecimálních znaků z tabulky ASCII. Pro tisknutelné znaky používejte pouze kódy ASCII, protože... id bude nutné předat OpenSSL jako řetězec. Například ASCII kód „3132“ odpovídá řetězci „12“. Pro pohodlí můžete použít
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Dále vytvoříme certifikát. Níže budou popsány dva způsoby: první je prostřednictvím CA (použijeme testovací CA), druhý je self-signed. Chcete-li to provést, musíte nejprve nainstalovat a nakonfigurovat OpenSSL verze 1.1 nebo novější pro práci s Rutokenem prostřednictvím speciálního modulu rtengine pomocí návodu
Například: pro '--id 3132
' v OpenSSL musíte zadat "pkcs11:id=12
".
Můžete využít služeb testovací CA, kterých je celá řada, např.
Další možností je podlehnout lenosti a vytvořit si self-signed
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Nahrání certifikátu do zařízení
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Zaregistrujte certifikát do systému
Ujistěte se, že váš certifikát vypadá jako soubor base64:
Pokud váš certifikát vypadá takto:
poté musíte převést certifikát z formátu DER do formátu PEM (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Znovu zkontrolujeme, že je nyní vše v pořádku.
Přidejte certifikát do seznamu důvěryhodných certifikátů
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Poslední řádek chrání seznam důvěryhodných certifikátů před náhodnou nebo záměrnou změnou jinými uživateli. To zabrání tomu, aby sem někdo přidal svůj certifikát a mohl se přihlásit vaším jménem.
7) Nastavte ověřování
Nastavení našeho modulu PAM je zcela standardní a provádí se úplně stejným způsobem jako nastavení jiných modulů. Vytvořit do souboru /usr/share/pam-configs/rutoken-gost-pam
obsahující úplný název modulu, zda je ve výchozím nastavení povolen, prioritu modulu a parametry ověřování.
Parametry ověřování obsahují požadavky na úspěch operace:
- požadováno: Takové moduly musí vrátit kladnou odpověď. Pokud výsledek volání modulu obsahuje zápornou odpověď, bude to mít za následek chybu ověřování. Požadavek bude zrušen, ale budou volány zbývající moduly.
- Požadováno: Podobné jako povinné, ale okamžitě selže autentizace a ignoruje ostatní moduly.
- dostatečný: Pokud žádný z požadovaných nebo dostatečných modulů před takovým modulem nevrátil negativní výsledek, modul vrátí kladnou odpověď. Zbývající moduly budou ignorovány.
- volitelné: Pokud v zásobníku nejsou žádné požadované moduly a žádný z dostatečného počtu modulů nevrací kladný výsledek, pak alespoň jeden z volitelných modulů musí vracet kladný výsledek.
Celý obsah souboru /usr/share/pam-configs/rutoken-gost-pam
:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so
uložte soubor a poté spusťte
$ sudo pam-auth-update
v okně, které se objeví, umístěte vedle něj hvězdičku Rutoken PAM GOST a tlačit OK
8) Zkontrolujte nastavení
Chcete-li pochopit, že vše je nakonfigurováno, ale zároveň neztratit možnost přihlásit se do systému, zadejte příkaz
$ sudo login
Vložte svoji přezdívku. Vše je správně nakonfigurováno, pokud systém vyžaduje PIN kód zařízení.
9) Nakonfigurujte počítač tak, aby byl při extrahování tokenu zablokován
Součástí balení libpam-pkcs11
utility v ceně pkcs11_eventmgr,
který vám umožňuje provádět různé akce, když nastanou události PKCS#11.
Pro nastavení pkcs11_eventmgr
slouží jako konfigurační soubor: /etc/pam_pkcs11/pkcs11_eventmgr.conf
U různých distribucí Linuxu se příkaz, který způsobí uzamčení účtu při odebrání čipové karty nebo tokenu, bude lišit. Cm. event card_remove
.
Příklad konfiguračního souboru je uveden níže:
pkcs11_eventmgr
{
# Запуск в бэкграунде
daemon = true;
# Настройка сообщений отладки
debug = false;
# Время опроса в секундах
polling_time = 1;
# Установка тайм-аута на удаление карты
# По-умолчанию 0
expire_time = 0;
# Выбор pkcs11 библиотеки для работы с Рутокен
pkcs11_module = usr/lib/librtpkcs11ecp.so;
# Действия с картой
# Карта вставлена:
event card_insert {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore ;
action = "/bin/false";
}
# Карта извлечена
event card_remove {
on_error = ignore;
# Вызываем функцию блокировки экрана
# Для GNOME
action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
# Для XFCE
# action = "xflock4";
# Для Astra Linux (FLY)
# action = "fly-wmfunc FLYWM_LOCK";
}
# Карта долгое время извлечена
event expire_time {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore;
action = "/bin/false";
}
}
Poté přidejte aplikaci pkcs11_eventmgr
ke spuštění. Chcete-li to provést, upravte soubor .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Přidejte řádek pkcs11_eventmgr na konec souboru a restartujte počítač.
Popsané kroky pro nastavení operačního systému lze použít jako návod v jakékoli moderní distribuci Linuxu, včetně domácích.
Závěr
Počítače se systémem Linux jsou v ruských vládních agenturách stále oblíbenější a nastavení spolehlivé dvoufaktorové autentizace v tomto OS není vždy snadné. S tímto průvodcem vám rádi pomůžeme vyřešit „problém s hesly“ a spolehlivě ochráníme přístup k vašemu PC, aniž byste nad ním trávili spoustu času.
Zdroj: www.habr.com