A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

Az egyszerű jelszavak nem biztonságosak, a bonyolultakat pedig lehetetlen megjegyezni. Ezért kerülnek oly gyakran egy cetlire a billentyűzet alatt vagy a monitoron. Annak biztosítására, hogy a jelszavak a „feledékeny” felhasználók tudatában maradjanak, és a védelem megbízhatósága ne vesszen el, kétfaktoros hitelesítés (2FA).

Az eszköz birtoklása és a PIN-kód ismeretének köszönhetően maga a PIN-kód egyszerűbb és könnyebben megjegyezhető. A PIN hosszában vagy véletlenszerűségében jelentkező hátrányokat ellensúlyozza a fizikai birtoklás követelménye és a PIN brutális erő korlátozása.

Ezenkívül a kormányzati szerveknél előfordul, hogy azt akarják, hogy minden a GOST szerint működjön. Ezt a 2FA opciót a Linuxba való bejelentkezéshez tárgyaljuk. Messziről kezdem.

PAM modulok

A Pluggable Authentication Modules (PAM) szabványos API-val rendelkező modulok, és különféle hitelesítési mechanizmusokat implementálnak az alkalmazásokban.
Minden olyan segédprogram és alkalmazás, amely képes együttműködni a PAM-mel, felveszi őket, és használhatja őket a felhasználói hitelesítéshez.
A gyakorlatban ez valahogy így működik: a login parancs meghívja a PAM-ot, amely a konfigurációs fájlban megadott modulok segítségével elvégzi az összes szükséges ellenőrzést, és az eredményt visszaadja a login parancsnak.

librtpam

Az Aktiv cég által kifejlesztett modul kétfaktoros hitelesítést ad az intelligens kártyákat vagy USB-tokeneket használó felhasználóknak aszimmetrikus kulcsokkal a hazai kriptográfia legújabb szabványai szerint.

Nézzük meg a működési elvét:

  • A token tárolja a felhasználó tanúsítványát és privát kulcsát;
  • A tanúsítványt a rendszer megbízhatóként menti a felhasználó saját könyvtárába.

A hitelesítési folyamat a következőképpen zajlik:

  1. A Rutoken megkeresi a felhasználó személyes tanúsítványát.
  2. A rendszer kéri a token PIN kódot.
  3. A véletlenszerű adatokat közvetlenül a Rutoken chipben írják alá a privát kulcson.
  4. A kapott aláírást a felhasználó tanúsítványából származó nyilvános kulcs segítségével ellenőrzik.
  5. A modul visszaküldi az aláírás-ellenőrzés eredményét a hívó alkalmazásnak.

A hitelesítést a GOST R 34.10-2012 kulcsok (hosszúsága 256 vagy 512 bit) vagy az elavult GOST R 34.10-2001 segítségével végezheti el.

Nem kell aggódnia a kulcsok biztonsága miatt – közvetlenül a Rutokenben generálódnak, és soha nem hagyják el a memóriáját a kriptográfiai műveletek során.

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

A Rutoken EDS 2.0 az FSB és az FSTEC által az NDV 4 szerint tanúsított, ezért bizalmas információkat feldolgozó információs rendszerekben használható.

Gyakorlati használat

Szinte minden modern Linux megteszi, például az xUbuntu 18.10-et fogjuk használni.

1) Telepítse a szükséges csomagokat

sudo apt-get install libccid pcscd opensc
Ha asztali zárat szeretne hozzáadni képernyővédővel, telepítse a csomagot is libpam-pkcs11.

2) Adjon hozzá egy PAM modult GOST támogatással

A könyvtár betöltése innen https://download.rutoken.ru/Rutoken/PAM/
Másolja a PAM mappa tartalmát a librtpam.so.1.0.0 a rendszermappába
/usr/lib/ vagy /usr/lib/x86_64-linux-gnu/vagy /usr/lib64

3) Telepítse a csomagot a librtpkcs11ecp.so fájllal

Töltse le és telepítse a DEB vagy RPM csomagot a következő linkről: https://www.rutoken.ru/support/download/pkcs/

4) Ellenőrizze, hogy a Rutoken EDS 2.0 működik-e a rendszerben

A terminálban végrehajtjuk
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ha látja a vonalat Rutoken ECP <no label> - azt jelenti, hogy minden rendben van.

5) Olvassa el a tanúsítványt

Annak ellenőrzése, hogy az eszköz rendelkezik-e tanúsítvánnyal
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ha a sor után:
Using slot 0 with a present token (0x0)

  • információ jelenik meg a kulcsokkal és tanúsítványokkal kapcsolatban el kell olvasnia a tanúsítványt, és el kell mentenie a lemezre. Ehhez futtassa a következő parancsot, ahol az {id} helyett az előző parancs kimenetében látott tanúsítványazonosítót kell helyettesítenie:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ha a cert.crt fájl létrejött, folytassa a 6. lépéssel).
  • nincs semmi, akkor a készülék üres. Lépjen kapcsolatba a rendszergazdával, vagy saját maga hozza létre a kulcsokat és a tanúsítványt a következő lépés végrehajtásával.

5.1) Hozzon létre egy tesztbizonyítványt

Figyelem! A kulcsok és tanúsítványok létrehozásának leírt módszerei tesztelésre alkalmasak, és nem harci módban való használatra készültek. Ehhez olyan kulcsokat és tanúsítványokat kell használnia, amelyeket szervezete megbízható hitelesítési hatósága vagy egy akkreditált hitelesítésszolgáltató állított ki.
A PAM modult a helyi számítógépek védelmére tervezték, és kis szervezetekben való használatra tervezték. Mivel kevés a felhasználó, az adminisztrátor figyelemmel kísérheti a tanúsítványok visszavonását és manuálisan blokkolhatja a fiókokat, valamint a tanúsítványok érvényességi idejét. A PAM-modul még nem tudja, hogyan kell a tanúsítványokat CRL-ek segítségével ellenőrizni és bizalmi láncokat építeni.

Az egyszerű módszer (böngészőn keresztül)

Vizsgálati tanúsítvány megszerzéséhez használja a webszolgáltatás "Rutoken Regisztrációs Központ". A folyamat legfeljebb 5 percet vesz igénybe.

A geek módja (a konzolon és esetleg a fordítón keresztül)

Ellenőrizze az OpenSC verziót
$ opensc-tool --version
Ha a verzió kisebb, mint 0.20, akkor frissítse vagy építse fel pkcs11-tool ág GOST-2012 támogatással a GitHubunkról (a cikk közzétételekor a 0.20-as kiadás még nem jelent meg) vagy a fő OpenSC projekt fő ágából legkésőbb commit 8cf1e6f

Hozzon létre egy kulcspárt a következő paraméterekkel:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objektumazonosító (CKA_ID) kétjegyű hexadecimális karakterszámként az ASCII-táblából. Csak ASCII kódokat használjon nyomtatható karakterekhez, mert... Az id-t karakterláncként kell átadni az OpenSSL-nek. Például a „3132” ASCII-kód a „12” karakterláncnak felel meg. A kényelem kedvéért használhatja online szolgáltatás karakterláncok ASCII-kódokká konvertálásához.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

Ezután készítünk egy tanúsítványt. Az alábbiakban két módot írunk le: az első egy CA-n keresztül történik (teszt CA-kat fogunk használni), a második önaláírt. Ehhez először telepítenie és konfigurálnia kell az OpenSSL 1.1-es vagy újabb verzióját a Rutoken használatához egy speciális rtengine modulon keresztül a kézikönyv segítségével. Az OpenSSL telepítése és konfigurálása.
Például: '--id 3132"Az OpenSSL-ben meg kell adni"pkcs11:id=12”.

Használhatja egy teszt CA szolgáltatásait, amelyekből sok van, pl. itt, itt и itt, ehhez készítünk egy tanúsítványkérést

Egy másik lehetőség, hogy engedünk a lustaságnak, és létrehozunk egy saját aláírást
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

A tanúsítvány feltöltése a készülékre
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Regisztrálja a tanúsítványt a rendszerben

Győződjön meg arról, hogy a tanúsítvány úgy néz ki, mint egy base64 fájl:

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

Ha a tanúsítványa így néz ki:

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

akkor konvertálnia kell a tanúsítványt DER formátumról PEM formátumra (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ismét ellenőrizzük, hogy most minden rendben van-e.

Adja hozzá a tanúsítványt a megbízható tanúsítványok listájához
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Az utolsó sor megvédi a megbízható tanúsítványok listáját attól, hogy más felhasználók véletlenül vagy szándékosan módosítsák. Ez megakadályozza, hogy valaki hozzáadja a tanúsítványát ide, és be tudjon jelentkezni az Ön nevében.

7) Állítsa be a hitelesítést

A PAM modulunk beállítása teljesen szabványos, és pontosan ugyanúgy történik, mint más modulok beállítása. Létrehozása fájlba /usr/share/pam-configs/rutoken-gost-pam tartalmazza a modul teljes nevét, hogy alapértelmezés szerint engedélyezve van-e, a modul prioritását és a hitelesítési paramétereket.
A hitelesítési paraméterek a művelet sikerességéhez szükséges követelményeket tartalmazzák:

  • kötelező: Az ilyen moduloknak pozitív választ kell adniuk. Ha egy modulhívás eredménye negatív választ tartalmaz, az hitelesítési hibát eredményez. A kérés el lesz vetve, de a fennmaradó modulok meghívásra kerülnek.
  • szükséges: Hasonló a kötelezőhez, de azonnal sikertelen a hitelesítés, és figyelmen kívül hagyja a többi modult.
  • elegendő: Ha az ilyen modul előtt a szükséges vagy elegendő modulok egyike sem adott negatív eredményt, akkor a modul pozitív választ ad. A többi modul figyelmen kívül lesz hagyva.
  • opcionális: Ha nincs kötelező modul a veremben, és egyik elegendő modul sem ad vissza pozitív eredményt, akkor legalább az egyik választható modulnak pozitív eredményt kell adnia.

Teljes fájltartalom /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

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

mentse el a fájlt, majd futtassa
$ sudo pam-auth-update
a megjelenő ablakban tegyen mellé egy csillagot Rutoken PAM GOST és nyomja OK

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

8) Ellenőrizze a beállításokat

Annak megértéséhez, hogy minden be van állítva, de ugyanakkor ne veszítse el a rendszerbe való bejelentkezés lehetőségét, írja be a parancsot
$ sudo login
Írd be a felhasználóneved. Minden helyesen van beállítva, ha a rendszernek szüksége van az eszköz PIN kódjára.

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

9) Állítsa be, hogy a számítógép blokkolva legyen a token kibontásakor

A csomag tartalmazza libpam-pkcs11 segédprogram tartalmazza pkcs11_eventmgr, amely lehetővé teszi különféle műveletek végrehajtását a PKCS#11 események bekövetkeztekor.
A beállításokhoz pkcs11_eventmgr konfigurációs fájlként szolgál: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Különböző Linux-disztribúciók esetén az intelligens kártya vagy token eltávolításakor a fiók zárolását okozó parancs eltérő lesz. Cm. event card_remove.
Az alábbiakban egy példa konfigurációs fájl látható:

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";
    }
}

Ezután adja hozzá az alkalmazást pkcs11_eventmgr az indításhoz. Ehhez szerkessze a .bash_profile fájlt:
$ nano /home/<имя_пользователя>/.bash_profile
Adja hozzá a pkcs11_eventmgr sort a fájl végéhez, és indítsa újra.

Az operációs rendszer beállításának ismertetett lépései utasításként használhatók bármely modern Linux disztribúcióban, beleértve a hazaiakat is.

A PAM-modulok használata helyi hitelesítéshez Linuxban a Rutoken GOST-2012 kulcsaival

Következtetés

A Linux PC-k egyre népszerűbbek az orosz kormányhivatalokban, és a megbízható kétfaktoros hitelesítés beállítása ebben az operációs rendszerben nem mindig egyszerű. Örömmel segítünk Önnek megoldani a „jelszóproblémát” ezzel az útmutatóval, és megbízhatóan védi a számítógépéhez való hozzáférést anélkül, hogy sok időt töltene vele.

Forrás: will.com

Hozzászólás